Lau*_*dou 6 merge merge-conflict-resolution visual-studio-2012 visual-c++-2012
将新文件添加到Visual C++项目时,IDE会将它们添加到两个位置:
合并文件添加对主项目文件来说不是问题,但它通常是过滤器冲突的根源.问题来自于IDE总是在过滤器列表的最末端添加新元素.
为了说明这个问题,我们假设过滤器最初看起来像这样:
1 <ClInclude Include="fs\path\oldFile1.h">
2 <Filter>virtual\path</Filter>
3 </ClInclude>
4 <ClInclude Include="fs\path\oldFile2.h">
5 <Filter>virtual\path</Filter>
6 </ClInclude>
Run Code Online (Sandbox Code Playgroud)
然后程序员A添加newFileA.h
并提交,过滤器更新如下:
1 <ClInclude Include="fs\path\oldFile1.h">
2 <Filter>virtual\path</Filter>
3 </ClInclude>
4 <ClInclude Include="fs\path\oldFile2.h">
5 <Filter>virtual\path</Filter>
6 </ClInclude>
7 <ClInclude Include="fs\path\newFileA.h">
8 <Filter>virtual\path</Filter>
9 </ClInclude>
Run Code Online (Sandbox Code Playgroud)
如果程序员B还添加了一个newFileB.h
并且在头版本上同步的注释,那么他的本地过滤器副本将如下所示:
1 <ClInclude Include="fs\path\oldFile1.h">
2 <Filter>virtual\path</Filter>
3 </ClInclude>
4 <ClInclude Include="fs\path\oldFile2.h">
5 <Filter>virtual\path</Filter>
6 </ClInclude>
7 <ClInclude Include="fs\path\newFileB.h">
8 <Filter>virtual\path</Filter>
9 </ClInclude>
Run Code Online (Sandbox Code Playgroud)
试图与程序员A的变化同步将系统地引起程序员B的第7-8-9行的合并冲突.这是因为变化恰好发生在完全相同的位置.
有没有办法防止这个问题发生,无论是通过Visual Studio中的配置更改,某些合并工具(最好是 Araxis Merge或Beyond Compare)的特殊选项,还是其他任何东西?
归档时间: |
|
查看次数: |
1462 次 |
最近记录: |