Файлы VS2010 .filter и SVN

Так как мы переключились на VS2010, мы заметили новый .filters файл, который, по-видимому, содержит структуру фильтра проекта. Мы также используем подверсию в качестве нашего управления исходным кодом.

К сожалению, каждый раз, когда мы регистрируемся теперь, мы заканчиваем с конфликтами слияния, если кто-либо добавил файл или фильтр к проекту. SVN кажется абсолютно неспособным к слиянию этого типа файла правильно даже при том, что это - базирующийся текст. Это становится довольно печальным.

Кто-либо еще имеет дело с этой проблемой? Кто-либо нашел решение?

Конфликт в качестве примера, кодер добавляет whatever.txt и регистрируется, кодер 'b' добавляет фильтр и новый .cpp файл и обновления. Получает это:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="filter_1">
      <UniqueIdentifier>{065f6d5d-81b2-4c98-b313-dceb16c24bf2}</UniqueIdentifier>
    </Filter>
    <Filter Include="filter_2">
      <UniqueIdentifier>{85ef5151-d045-4b20-b1bf-e65d380a3cf3}</UniqueIdentifier>
    </Filter>
    <Filter Include="filter_2\sub_filter_1">
      <UniqueIdentifier>{90efdbe3-b53a-41fc-9dfb-147df5e7d7f3}</UniqueIdentifier>
    </Filter>
    <Filter Include="NewFilter1">
      <UniqueIdentifier>{8162b584-12a0-4a05-8cc5-ede4ced07ba3}</UniqueIdentifier>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="filter_2\file_3.hpp">
      <Filter>filter_2</Filter>
    </ClInclude>
    <ClInclude Include="filter_2\sub_filter_1\file_4.hpp">
      <Filter>filter_2\sub_filter_1</Filter>
    </ClInclude>
    <ClInclude Include="filter_1\file_1.hpp">
      <Filter>filter_1</Filter>
    </ClInclude>
    <ClInclude Include="filter_1\file_2.hpp">
      <Filter>filter_1</Filter>
    </ClInclude>
  </ItemGroup>
<<<<<<< .mine
  <ItemGroup>
    <ClCompile Include="whatnot.cpp">
      <Filter>NewFilter1</Filter>
    </ClCompile>
  </ItemGroup>
=======
  <ItemGroup>
    <None Include="whatever.txt" />
  </ItemGroup>
>>>>>>> .r12513
</Project>
6
задан Edward Strange 18 November 2010 в 16:34
поделиться

2 ответа

Это обычные XML-файлы, такие как файлы других проектов Visual Studio - я не понимаю, почему они должны быть более восприимчивыми к конфликтам, чем другие файлы проекта.

Может быть, эти файлы обрабатываются как двоичные, а не как текстовые? Слияние двоичных файлов не сработает - проверьте свойства svn, чтобы узнать, какой у них mime-тип (если mime-тип не установлен, все будет в порядке). Если установлен mime-тип, возможно, вы имеете дело с неправильно настроенным автоматическим свойством .

Наконец, возможно, люди постоянно добавляют + удаляют файлы - в таком случае вам просто нужно чаще фиксировать и обновлять, пока проект немного не успокоится.

Вам определенно не следует svn: игнорировать эти файлы.

1
ответ дан 17 December 2019 в 18:11
поделиться

Если файл «.filters» является чем-то особенным для конфигурации пользователя, то он, вероятно, вообще не принадлежит Subversion. Вы можете заставить Subversion игнорировать изменения в файле, используя свойство svn: ignore:

svn propset svn:ignore '.filters' .

Приведенная выше команда заставит Subversion начать игнорировать изменения в файле с именем ".filters".

Другой вариант - заставить Subversion обрабатывать файл «.filters» как двоичный файл:

svn propset svn:mime-type 'application/octet-stream' .filters

Приведенная выше команда заставит файл «.filters» рассматриваться как двоичный файл и не будет объединен.

Редактировать
Теперь, когда вы объяснили, что файл ".filters" важен для проекта, а также что проблема может заключаться в том, что он обрабатывается как двоичный, а не как обычный текст, решение состоит в том, чтобы установить тип в открытый текст:

svn propset svn:mime-type 'text/plain' .filters
0
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: