【发布时间】:2010-04-23 17:25:17
【问题描述】:
自从我们切换到 VS2010 后,我们注意到一个新的 .filters 文件,它显然包含项目的过滤器结构。我们还使用 subversion 作为我们的源代码控制。
不幸的是,现在每次我们签入时,如果有人将文件或过滤器添加到项目中,我们最终都会发生合并冲突。 SVN 似乎完全无法正确合并此文件类型,即使它是基于文本的。它变得相当令人沮丧。
还有其他人在处理这个问题吗?有人找到解决方案了吗?
示例冲突,编码器“a”添加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>
【问题讨论】:
-
在没有该文件的情况下如何共享项目结构的问题得到解答之前,我不会建议这样做。由于 .filters 文件的丢失会将整个东西变成一个平面结构,这实际上看起来是一个非常糟糕的主意。
-
好的,我一直在关注这个话题,看看答案是什么。谢谢。
-
我没见过这样的过滤文件,你把它们放在什么样的项目中?
-
你能举一个你经常看到的冲突的例子吗?