我们刚刚从一个每个开发者一个分支的系统转换到了一个每个任务一个分支的系统,以改善我们在确定哪些文件被更改时遇到的一些问题。总体而言,我对这个解决方案感到满意,但有一个主要问题。我们使用简单的脚本来启动和结束任务,这些脚本会创建一个以用户名和任务编号命名的新分支,然后更新本地快照视图以具有类似以下内容的配置规范:
element * CHECKEDOUT element * .../martin_2322/LATEST element * /main/LATEST -mkbranch martin_2322 load /Project/Application假设我的项目有两个相互关联的文件A.cs和B.cs。对于我的第一个任务,我在分支上对A进行了更改。然后,由于某种原因,我需要停止2322任务的工作并开始2345任务的工作(2322任务未完成,因此我不会将其合并回主干)。 我创建了一个新的任务分支2345,编辑了A.cs和B.cs,并将结果合并回主干。现在我回到2322任务,所以我将配置规范更改回上面定义的规范。此时,我看到来自任务分支的A.cs文件(因为我之前编辑过它,所以我得到该分支本地版本),以及来自主干的最新版本的B.cs。由于我没有在2345分支上对A.cs进行更改,因此构建失败。相反,我需要能够从离开时继续执行2322任务,并查看旧版本的A.cs-即在创建分支时在主干中最新的版本。
我认为我有几个修复选项:
更改配置规范以便在正确的日期从主分支获取文件。如果我知道日期并且不介意手动设置,那么这很容易做到,但是我不知道如何将其自动化到我们的任务切换脚本中。有没有办法获取分支的创建日期?
为主分支上的每个分支创建一个标签。理论上很简单,但是我们安装的CC中的标记系统已经在几百个标记的重量下崩溃,因此我不知道它是否能够应对每个开发人员每个分支的情况(请注意,我的示例中的任务编号是2322,而我们仅完成了项目的四分之一)。
从主分支合并到任务分支。再次应该可以工作,但是长时间运行的分支将不仅包含针对该任务更改的文件,还包括需要合并的所有文件,以使不相关的内容正常工作。这使得它们与按开发人员分支的方法一样复杂。我想知道哪些文件被更改以完成特定任务。
我希望我只是漏掉了某些东西,有一种设置我的配置规范,以便从主分支检索预期文件而不使用笨拙的解决方法。那么,你们在Clearcase中是如何分支的呢?