Version control 使用commit-r提交到其他分支

Version control 使用commit-r提交到其他分支,version-control,cvs,Version Control,Cvs,CVS是否允许将文件提交到与其签出的分支不同的分支?该手册页并建议我们可以执行cvs ci-r branch-1 file.c,但它给出了以下错误: cvs提交:“file.c”的最新检查失败 cvs[commit aborted]:首先更正上述错误 我做了一个cvs diff-r branch-1文件.c,以确保我的BASE和branch-1中的文件.c的内容确实相同 我知道我们可以使用cvs co-r branch-1手动签出,将主分支合并到它(并修复任何合并问题),然后进行签入。问题是有许

CVS是否允许将文件提交到与其签出的分支不同的分支?该手册页并建议我们可以执行
cvs ci-r branch-1 file.c
,但它给出了以下错误:

cvs提交:“file.c”的最新检查失败
cvs[commit aborted]:首先更正上述错误

我做了一个
cvs diff-r branch-1文件.c
,以确保我的
BASE
branch-1
中的文件.c的内容确实相同

我知道我们可以使用cvs co-r branch-1手动签出,将主分支合并到它(并修复任何合并问题),然后进行签入。问题是有许多分支,我希望使用脚本自动化这些事情。似乎表明
-r
已被删除。有人能证实吗

如果不支持
ci-r
,我会考虑执行以下操作:

  • 确保分支版本和基本版本与a
    cvs diff
  • 签入到当前分支
  • 在临时文件中保留该文件的副本
  • 对于每个分支机构:
    • 使用
      -r
    • 用临时文件替换文件
    • 签入(它将转到分支,因为
      -r
      是粘性的)
  • 删除临时文件

对我来说,更换零件听起来像是作弊——你能想到可能出现的任何潜在问题吗?有什么我应该小心的吗?是否有其他方法可以自动化此过程?

请注意,即使
diff
显示零输出,文件也可能不是最新的。例如,如果您在一次提交中将一行文本添加到文件中,并在下一次提交中将其删除,则沿两次修订路径的差异为零

至于commit-r问题。在我看来,这似乎是一个实验性的功能,实际上,您最好只使用以下功能:

cvs update -r <branch> <file>
cvs update -j <ver> -j <ver> <file>
cvs commit <file>
cvs更新-r
cvs更新-j-j
cvs提交

此外,像您建议的那样以编程方式将单个提交传播到所有其他分支是一件有点可疑的事情,因为您通常需要相当多的人脑来解决冲突。

如果存在编辑撤消,即使在我强制提交之后,修订历史也会反映出这一点。我只是想确保我不会提交内容与我正在编辑的基础版本内容不同的版本(从而丢失对该分支所做的任何更改)。是的,人工干预似乎是解决合并冲突的唯一可行方法。