【问题标题】:TFVC doesn't detect removed files while merging合并时 TFVC 未检测到已删除的文件
【发布时间】:2020-08-18 02:47:18
【问题描述】:

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

那么我们如何确保稍后当我们有两个以上的文件时,我们可以信任 tfs,它会检测到删除并正确合并更改? 是否需要进行任何设置才能使其成为可能?

例子:

在分支 M 中,我们有两个文件夹:SolutionA 和 SolutionB。解决方案A 是我们签入修改的包。解决方案 B 是由独立软件供应商 (ISV) 提供的解决方案,ISV 不时向我们发送他们的解决方案的新版本,我们必须签入相应的文件夹。问题是,他们经常会删除包中的一些对象并创建新对象。对于新对象,一切正常,但对于已删除的对象,则不行。

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

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

为了更好地理解,请查看图片:

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

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

【问题讨论】:

  • 您使用哪个版本的 TFS 和 VS?删除文件后是否检查更改?我无法重现您的问题,delete 挂起的更改合并成功。您可以提供如何重现您的问题的详细步骤,截图会更好。

标签: tfs version-control tfvc


【解决方案1】:

由于你使用的是VS 2015,你可以安装Microsoft Visual Studio Team Foundation Server 2015 Power Tools,然后右击SolutionB的V2,选择Team Foundation Server -- Detected Change,促进待定更改,你会看到删除的文件。

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

顺便说一句,您可以邀请您的供应商加入您的 DevOps 并使用同一个 repo 一起工作。

【讨论】:

  • 最终找到了一种解决方法,从源代码管理中删除解决方案,然后签入新版本,因为没有找到其他替代方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2014-07-30
相关资源
最近更新 更多