TFVC在合并时未检测到已删除的文件

问题描述 投票:0回答:1

[我们有一个项目,我们主要使用两个分支:一个用于开发,我们称之为“ Main”,另一个在我们合并要发布的代码,我们称为“ Release”。 Release分支是使用Visual Studio从Main分支创建的(右键单击Main branch => Branch-这就是我们创建Release分支的方式)。在Main分支中,我们有两个文件,在将所有内容合并到Release分支后,它也包含了这两个文件。稍后,如果我们删除Main分支中的一个文件,然后尝试将更改合并到Release分支中,则不会检测到该差异。我们期望合并工具应检测到必须删除一个文件。

然后如何确保以后有两个以上的文件时,我们可以信任tfs,它将检测到删除并正确合并更改?是否有任何设置可以完成?

示例:

在分支M中,我们有两个文件夹:SolutionA和SolutionB。 SolutionA是我们的包,我们在其中检入修改。 SolutionB是由独立软件供应商(ISV)提供的解决方案,ISV会不时向我们发送其解决方案的新版本,我们必须将其签到相应的文件夹中。事实是,他们经常会删除其程序包中的某些对象并创建新的对象。使用新对象,一切正常,但是使用已删除的对象-不能。

我们如何部署新版本? -以开发环境为例,从本地映射目录中删除SolutionB文件夹,在该环境上部署新版本的SolutionB,然后签入。结果,只有新项目才到达源代码管理,那些被ISV删除的项目仍保留在存储库中。因此,任何在他的devbox上获得最新版本的开发人员都只会得到新文件,这很明显,因为没有为它们签入任何删除操作。第二点-当我们要将新版本的SolutionB合并到Release分支时,我们仅在其中添加新项目。

手动跟踪删除哪些文件不是一种选择,因为SolutionB里面有成千上万个项目。因此,我想知道我的设置有什么问题,当我从devbox VCS签入新版本的SolutionB时,无法检测到旧项已删除(因为它们不在本地映射文件夹中)。

为了更好的理解,请看图像:

enter image description here

假设SolutionB的版本1包含FileFour和FileThree。版本2包含FileThree和FileFive。这意味着在我将版本2签入VCS之后,它只会将FileFive添加到SolutionB文件夹中,而不会删除FileFour。结果,从分支M合并到分支R时,i将在SolutionB文件夹的R分支中获得所有3个文件。

我们正在使用Vistual Studio 2015和Azure DevOps Services

tfs version-control tfvc
1个回答
0
投票

由于使用的是VS 2015,因此可以安装Microsoft Visual Studio Team Foundation Server 2015 Power Tools,然后右键单击SolutionB的V2,选择Team Foundation Server-检测到的更改,以促进挂起的更改,您将看到已删除的文件。

enter image description here

或者您需要从源代码管理资源管理器中删除SolutionB并签入更改,然后在工作区中添加新版本的SolutionB,以签入新版本。

顺便说一下,您可以邀请供应商参加DevOps并使用相同的仓库来共同工作。

© www.soinside.com 2019 - 2024. All rights reserved.