【问题标题】:Adding a new file to a branch in TFS将新文件添加到 TFS 中的分支
【发布时间】:2013-09-23 22:30:19
【问题描述】:

我有一个 DEV 主线、一个生产分支和一个 UAT 分支,所有这些都在同一个工作区中。我向 DEV 添加了一个新文件,并希望将其添加到 UAT 但不是生产环境。

This MSDN article

说通过在文件上方的目录级别合并来做到这一点,但是如果我在该目录中有多个更改但只想将一个文件带入会发生什么?

我可以通过变更集、日期等来做到这一点,但我希望能够逐个文件地做到这一点。

有没有办法做到这一点?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    关于 TFS 的一大点(对我来说)是变更集是原子的,即当签入对多个文件的更改都涉及相同功能时,签入期间的错误会导致整个操作失败(与 ClearCase 不同,后者将导致某些文件签入而其他文件不签入,从而使服务器上的版本不完整)。因此,如果您注意创建仅包含一个特性的变更集,那么即使它们涉及数百个文件,也很容易将单个特性从一个分支合并到另一个分支,而不必弄清楚哪些文件包含您的更改并只合并那些。在现实世界中,当然,一个特性将包含多个具有较小更改的变更集,因此您应该为每个特性创建一个工作项,以将与该特性相关的所有变更集分配给。这样,您可以轻松列出需要合并的所有变更集。但是我开始闲逛了……

    无论如何,正如您猜对的那样,要走的路是合并父目录(甚至整个分支),但只合并包含添加的变更集。所有其他变更集都将被忽略,以后可以以相同的方式合并。

    也就是说,我只是查看了我的 Visual Studio 2010,它确实允许合并单个文件,就像合并整个目录一样。你试过吗?我想我只是假设你已经这样做了;)

    【讨论】:

    • 我试过了,但是当我真正在文件上点击合并时,我收到一个错误,声称文件不存在 - 或者没有映射或其他东西
    • 嗯。您是否在使用多个工作区?然后,您需要确保在 Source Control Explorer 和 afaik Pending Changes 窗口中选择正确的选项。但我想合并目录可以正常工作,所以这不应该是问题......
    • 两个分支都在同一个工作区中(好点,我将把它添加到问题中)。
    • 如果您收到文件不存在的错误消息,请确保在尝试合并之前在源分支和目标分支上都执行了“获取最新”操作。
    • 就源代码控制状态而言,变更集确实是原子的 - 不存在只有部分变更集处于的状态。但是,您可以通过文件修订进行合并,这可能 由变更集确定(VS “合并” UI 会这样做),但也可能不会。我知道在 Mercurial 和 GIT 等某些系统中,变更集确实是真正的一流对象。
    【解决方案2】:

    在 TFS 中,只能根据分支关系进行合并。你的是Dev => Production => UAT,所以你不能在不经过生产的情况下合并 Dev=>UAT。

    选项:

    1. 不推荐:合并 Dev=>Production,合并 Production=>UAT,然后回滚 Production。
      为什么不:你会遇到问题当你再次合并整个 Dev=>Production 时。

    2. 对文件 Dev=>UAT 进行毫无根据的合并。我认为 Visual Studio 在源代码管理资源管理器中没有此功能,但您可以在“VS2012 的开发人员命令提示符”中使用tf merge /baseless

    3. 只需在 UAT 中编辑文件并从 Dev 中引入其内容。

    在 2 或 3 中,请注意,一旦您将一个分支合并到生产环境,在合并另一个分支时就会出现(可能是自动解决的)合并冲突。

    【讨论】:

    • 我们使用 2012 进行此合并,因此我们通过 MSDEV GUI 执行了无根据的合并。这是我们多年来处理软件的方式,早在我们开始使用 TFS 之前。我们只会在创建分支后合并修复和特定增强功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2019-06-13
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多