2

我在工作中有一个有点复杂的分支结构(至少对我来说)。它是这样的:

主要的
 |
 1
 |
 2
 | \
 3\
     版本 2
      |
      1
      | \
      2\
      | 项目A
      3 |
             1

主要有2个分支。“Ver2”包含每个人为下一个版本所做的更改,“ProjectA”是我的作品。

我的问题是:有没有办法创建一个知道已合并内容的配置规范,所以我得到:

  1. ProjectA 中尚未合并的任何内容
  2. 如果 ProjectA 的 LATEST 已合并到 Ver2,则从 Ver2 分支获取 LATEST
  3. 如果没有 ProjectA 分支,则从 Ver2 获取
  4. 如果没有 Ver2,则从 MAIN 获取

例如,在上述情况下,如果我将 ProjectA 中的版本 1 合并到 Ver2 分支中的版本 2,那么我希望在 Ver2 上看到版本 3。但是,如果我还没有合并这些文件,我希望 ProjectA 的版本 1 在我看来。

4

3 回答 3

0

我认为你不能那样做。但是,您可以获得的内容是 ProjectA 的最新内容。在 ProjectA 中未更改的 Ver2 上的任何内容;以及未在 Ver2 或 ProjectA 中更改的 MAIN 上的任何内容。剩下的技巧是确保所有必要的东西都从 Ver2 或 MAIN 中合并。为此,您可以使用带有 Ver2 配置规范的参考视图(除非 Ver2 未保持最新,否则您不需要 MAIN 配置规范),然后在 ProjectA 视图中执行以下操作:

cleartool findmerge . -fta view-tag-for-ver2 -merge

意思是“-fta来自标签”。当然,还有无数额外的选择。

这可确保 ProjectA 在 Ver2 方面完全是最新的。

于 2008-10-28T18:44:46.403 回答
0

您必须记住为什么定义分支
隔离开发工作。

因此,为了更好地管理您的复杂配置规范,您应该准确了解“主”分支、v2 分支和项目 A 分支扮演什么角色。

例如,V2 和项目 A 应该有两个不同的原因。

如果项目 A 用于开发项目的当前版本,则应合并到 V2 分支以允许将当前开发的一些改进到 V2 分支。

通过这种推理,您不应该希望在同一个视图中看到“两者”:它们代表两组不同的文件,V2 可能包含具有非常不同 API 的大型重构。

但是,如果您坚持这样的配置,您可以使用移动“MERGE_FROM_PA”标签的能力:每次将一些文件从项目 A 合并到 V2 分支时,您再次为每个合并的文件/目录设置“MERGE_FROM_PA”标签,将该标签从以前的 V2 版本移至最新版本。

配置规范可以是:

element * MERGE_FROM_PA
element * .../ProjectA/LATEST
element * .../V2/LATEST
element * /main/LATEST

但话又说回来,这没有多大意义。

您需要定义要建模的不同开发工作,然后定义一个连贯的工作流程,让您的配置规范只关注其中一个环境。

于 2008-10-28T20:32:25.703 回答
0

为什么不?如果分支已在某处合并,则不使用分支对我来说是有意义的。

这是配置规范:

element * {version(.../ProjectA/LATEST)&&!hltype(Merge,->)}
element * {version(.../Ver2/LATEST)&&!hltype(Merge,->)}
element * /main/LATEST

是什么让这个工作流程不连贯,只要你在构建之前标记它?

于 2009-05-28T17:28:40.093 回答