我的工作分支结构有点复杂(至少对我而言)。它是这样的:
Main | 1 | 2 | \ 3 \ Ver2 | 1 | \ 2 \ | ProjectA 3 | 1
主要有两个分支。 “Ver2”包含了下一个版本的每个人的变化,以及“ProjectA”,这是我的工作。
我的问题是:有没有办法创建一个配置规范,知道已合并的内容,所以我得到:
例如,在上面的例子中,如果我将版本1从ProjectA合并到Ver2分支中的版本2,那么我希望在Ver2上看到版本3。但是,如果我还没有合并这些文件,我希望在我的视图中使用ProjectA的版本1.
答案 0 :(得分:0)
我认为你不能那样做。但是,你能得到的是ProjectA的最新成果; Ver2上任何未在ProjectA中更改的内容;以及在Ver2或ProjectA中未更改的MAIN上的任何内容。其余的技巧是确保从Ver2或MAIN合并所有必要的东西。为此,您可以使用带有Ver2配置规范的参考视图(除非Ver2没有保持最新,否则不需要MAIN),然后在ProjectA视图中执行:
cleartool findmerge . -fta view-tag-for-ver2 -merge
-fta
表示“来自标签”。当然,还有无数的额外选择。
这可确保ProjectA完全与Ver2相关。
答案 1 :(得分:0)
您必须记住为什么要定义 branch :
隔离开发工作。
因此,为了更好地管理复杂的配置规范,您应该确切地知道扮演'main'分支,v2分支和项目A分支的角色。
例如,V2和项目A应该有两个不同的原因。如果项目A在那里开发项目的当前版本,则应该合并到V2分支以允许将一些当前开发改进到V2分支。
根据这个推理,你不应该在同一个视图中看到“both”:它们代表两组不同的文件,V2可能包含具有非常不同API的大型重构。
但是,如果您坚持这样的配置,您可以使用移动“MERGE_FROM_PA”标签的功能:每次将某些文件从项目A合并到V2分支时,再次为每个合并设置“MERGE_FROM_PA”标签文件/目录,将该标签从之前的V2版本移动到最新版本。
配置规范可以是:
element * MERGE_FROM_PA
element * .../ProjectA/LATEST
element * .../V2/LATEST
element * /main/LATEST
但话又说回来,这没什么意义。
您需要定义要进行模型化的不同开发工作,然后定义coherent workflow,允许您的配置规范仅关注那些环境中的一个。
答案 2 :(得分:0)
为什么不呢?如果某个分支在某处合并,则不使用分支对我有意义。
这是配置规范:
element * {version(.../ProjectA/LATEST)&&!hltype(Merge,->)}
element * {version(.../Ver2/LATEST)&&!hltype(Merge,->)}
element * /main/LATEST
是什么让这个工作流程不连贯,只要你在构建之前标记它?