我们已经使用 MKS 几年了,现在一个新项目已经启动并且必须使用 TFS。
在 MKS 中,我们可以获取项目的检查点(基线/快照),然后根据需要从该基线创建分支,即使在该开发线的进一步检查点已经发生之后。
如何在 TFS 中复制它?标签似乎不合适,因为它们可以更改,我希望基线成为某个时间点开发的真实快照。据我了解,变更集仅用于记录对工件的更改。
我们已经使用 MKS 几年了,现在一个新项目已经启动并且必须使用 TFS。
在 MKS 中,我们可以获取项目的检查点(基线/快照),然后根据需要从该基线创建分支,即使在该开发线的进一步检查点已经发生之后。
如何在 TFS 中复制它?标签似乎不合适,因为它们可以更改,我希望基线成为某个时间点开发的真实快照。据我了解,变更集仅用于记录对工件的更改。
我认为变更集是您想要使用的。尽管变更集确实标识了一组特定的代码变更,但当您在 TFS 中基于变更集执行操作时,TFS 通常将其解释为“直到并包括变更集 XXX 的所有变更”。
因此,假设您要求在 changeset 分支12345
。TFS 将获取与小于或等于的变更集关联的所有文件12345
——即使它们不属于12345
.
您可以做的另一个选择是基于特定日期/时间的分支。例如,如果您在 6 月 1 日上午 11:00 发布了一个主要版本,您可以简单地从该特定日期和时间分支所有代码。
话虽如此,在我们的组织中,我们使用标签。是的,标签可以移动,但这不一定是坏事,因为它可以让你解释错误。例如,假设我们有一个标签:ProdMove_June
。
在 6 月发布后的一段时间,我们意识到,由于进程失败,TFS 中没有包含配置文件(或者该文件是从 TFS 部署的,但需要在 SCM 进程之外进行更改以响应紧急情况)。然后,我们将此文件移动到 TFS 中,并需要标记它以供将来所有分支使用。如果是这种情况,那么我们需要做的就是移动该单个文件上的标签。
在我看来,所有这三种方法都是有效的,我们实际上在我们的组织中使用这三种方法来构建、分支和获取代码。我建议你把这三个都装在你的实用腰带上,并在适当的时候使用它们。
一种选择是创建一个分支,然后锁定该分支。锁定一个分支使该分支只读。