Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 如何在合并Visual C++;2012项目过滤器? 当新文件添加到VisualC++项目时,IDE将它们添加到两个位置: 主项目文件(例如myproject.vcxproj) 项目“filters”,解决方案资源管理器的虚拟路径的存储库(例如myproject.vcxproj.filters)_Visual Studio 2012_Merge_Merge Conflict Resolution_Visual C++ 2012 - Fatal编程技术网

Visual studio 2012 如何在合并Visual C++;2012项目过滤器? 当新文件添加到VisualC++项目时,IDE将它们添加到两个位置: 主项目文件(例如myproject.vcxproj) 项目“filters”,解决方案资源管理器的虚拟路径的存储库(例如myproject.vcxproj.filters)

Visual studio 2012 如何在合并Visual C++;2012项目过滤器? 当新文件添加到VisualC++项目时,IDE将它们添加到两个位置: 主项目文件(例如myproject.vcxproj) 项目“filters”,解决方案资源管理器的虚拟路径的存储库(例如myproject.vcxproj.filters),visual-studio-2012,merge,merge-conflict-resolution,visual-c++-2012,Visual Studio 2012,Merge,Merge Conflict Resolution,Visual C++ 2012,合并添加的文件对于主项目文件来说不是问题,但它常常是过滤器冲突的根源。问题来自这样一个事实:IDE总是在过滤器列表的最末端添加新元素 为了说明这个问题,假设过滤器最初看起来是这样的: 1 2虚拟路径 3. 4. 5虚拟路径 6. 然后程序员添加一个addnewFileA.h并提交,过滤器更新如下: 1 2虚拟路径 3. 4. 5虚拟路径 6. 7. 8虚拟路径 9 如果程序员B还添加了一个newFileB.h,并在标题修订版上进行了注释同步,则其过滤器的本地副本将如下所示: 1 2虚拟路径

合并添加的文件对于主项目文件来说不是问题,但它常常是过滤器冲突的根源。问题来自这样一个事实:IDE总是在过滤器列表的最末端添加新元素

为了说明这个问题,假设过滤器最初看起来是这样的:

1
2虚拟路径
3.
4.
5虚拟路径
6.
然后程序员添加一个add
newFileA.h
并提交,过滤器更新如下:

1
2虚拟路径
3.
4.
5虚拟路径
6.
7.
8虚拟路径
9
如果程序员B还添加了一个
newFileB.h
,并在标题修订版上进行了注释同步,则其过滤器的本地副本将如下所示:

1
2虚拟路径
3.
4.
5虚拟路径
6.
7.
8虚拟路径
9
尝试与程序员A的更改同步将系统地引发程序员B在第7-8-9行的合并冲突。这是因为更改恰好发生在同一个位置


有没有办法防止此问题发生,可以通过Visual Studio中的配置更改、某些合并工具的特殊选项(最好是Araxis Merge或Beyond Compare)或其他任何方式?

基于此,Visual Studio似乎不必使用过滤器才能正常工作。您是否尝试过不在筛选文件中提交,而是让每个人都有自己的文件?我不使用VS,所以我不知道这些文件做什么,或者哪些功能不能同步。但是,我通常不建议在IDE特定的文件中提交,因为它们通常会因不同的用户而更改,并且只是冲突的一个来源。

合并的最终目的是什么?如果它类似于git,那么您可以应用合并策略来处理这种情况。简言之,这实际上取决于进行合并的工具及其应用方式。另外,正如MJD所说,如果这是为了版本控制,你可以选择不提交过滤器,让每个用户都有自己的过滤器。@micah caldwell我们使用Perforce进行版本控制,但我们不一定坚持使用P4Merge进行合并。我们主要使用Araxis Merge和Beyond Compare来完成这项工作。对于不提交过滤器,这可能是一个好主意,请参阅我的评论。您的答案最终将取决于进行合并的工具。在git的情况下,有一种合并策略,在这样的情况下非常有用,当两个添加发生在同一个地方时,它将同时添加这两个元素。P4Merge、Beyond Compare和/或Araxis Merge可能有类似的选项。我建议针对一个工具(或多个问题,每个工具一个问题)重新询问您的问题,因为答案将是特定于工具的。我更喜欢涉及Araxis Merge或Beyond Compare的解决方案,但我愿意接受任何建议。如果将git merge与Perforce结合使用是可行的,并且有助于解决这个问题,那么,为什么不呢。我已经相应地编辑了我的问题。不提交过滤器对我们来说并不是一个真正的解决方案。这样做会使整个项目层次结构扁平化,因为这是一个相当大的项目,所以结果对每个人来说都不太实际。布乌特。。。也许我们根本不应该使用过滤器,我在某个地方看到VS能够直接使用文件夹结构……直接使用文件夹结构是可能的。但由于这不是Visual的默认设置,所以我担心这可能不会适用于所有情况。尽管如此,这可能是这个问题的唯一真正解决方案(除了忍受它),所以对你来说+1。哦,要清楚的是:那些“过滤器”所做的是,它们持有一个与实际文件系统完全断开的虚拟文件夹结构。这就是为什么不使用它们会使项目层次结构扁平化,至少在使用解决方案资源管理器的默认模式时是这样。啊,我理解。我不使用VS,所以我没有任何其他解决方案。对不起,我不能再帮你了。