0

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

这篇 MSDN 文章

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

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

有没有办法做到这一点?

4

2 回答 2

1

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

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

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

于 2013-09-23T13:27:37.203 回答
0

在 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 中,请注意,一旦您将一个分支合并到生产,在合并另一个分支时,您将遇到(可能是自动解决的)合并冲突。

于 2013-09-23T14:30:19.940 回答