CVS标签它们如何正常工作?

时间:2014-09-24 20:25:24

标签: cvs

我有一个关于CVS标记的问题(我知道有比cvs更好的工具,但这就是我公司使用的工具)。

我在CVS中有一个项目,在过去的几个月里,人们已经应用了很多标签。 我必须从不是最新标签的基线进行更改。 所以假设你在cvs中有以下标签:

Project_V1 Project_V2 Project_V3

客户根据Project_V2要求进行一些更改。

我的问题是:

1)如果我提交更改然后应用新标记,这些更改是应用于Project_V3之上还是仅应用于Project_V2之上? 2)如果这是我认为的方式(即,它们应用于Project_V3之上)是否有办法避免这种情况并具有类似的内容:

Project_V1 Project_V2 Project_V2_B Project_V3

以便标记为Project_V3的最新版软件没有收到这些更改?

分支当前对我们不起作用,所以它不是一个选项,这也是人们到目前为止标记的原因。

由于 中号

1 个答案:

答案 0 :(得分:0)

您的情景询问是分支的完美案例。

另外,你可能不得不做一些丑陋的代码退出和重新签入

Lets take one file and see how the history grows.
File A
  rev 1.1 
  rev 1.2 -> Label Project_V1
  rev 1.3
  rev 1.4
  rev 1.5 -> Label Project_V2
  rev 1.6
  rev 1.7 -> Label Project_V3

现在,由于您要对File rev 1.5进行更改,您可以从Label Project_V2进行分支并创建文件更改。现在文件修订版将是1.5.1.2。

File A
  rev 1.1 
  rev 1.2 -> Label Project_V1 
  rev 1.3
  rev 1.4
  rev 1.5 -> Label Project_V2 -> 1.5.1.2 -> Label Project_V2_B
  rev 1.6
  rev 1.7 -> Label Project_V3

其他解决方案(我个人不喜欢)是:

overwrite the latest files with files checked out using Label Project_V2 
make the necessary changes, apply label Project_V2_B.
Recheck-in the files from Label Project_V3.
File A
  rev 1.1 
  rev 1.2 -> Label Project_V1 
  rev 1.3
  rev 1.4
  rev 1.5 -> Label Project_V2 
  rev 1.6
  rev 1.7 -> Label Project_V3
  rev 1.8  (checkout from label Project_V2)
  rev 1.9 -> Label Project_V2_B
  rev 1.10 -> (check out from label Project_V3 and recheck-in) -> apply label again Project_V3

这会造成一个混乱的存档。