你有两个问题:
'是否可以从 dirB 中删除“开发”分支,然后在 dirA 上创建一个新的“开发”分支?
对此的回答是“是”,但根据提交到 CVS 中的目录结构 dirA/dirB/dirC 的含义,它的含义会有所不同。
如果您有一个存储库,并且目录结构都包含在一个以 dirA 为根的 cvsroot 下,那么从 dirB 中删除“开发”分支将意味着从 cvsroot 下的所有内容中删除“开发”分支。那时,在 dirA 上创建一个新的“开发”分支将导致整个层次结构中的所有文件按照您的需要进行分支。
相反,如果您的意思是您有一个本地目录结构 dirA/dirB/dirC,并且您已将 dirA 提交给托管在一个 CVSROOT 的 CVS,并将 dirB 提交给托管在另一个 cvsroot 的 CVS,那么您对 dirA 和 dirB 所做的操作将是独立的在某种程度上,您阻止 dirB 被提交给 dirA 的 cvsroot。如果您以这种方式进行设置,则最好维护您所说的存档,从 dirB 的所有深度的所有文件夹中删除所有 CVS 子文件夹,然后将其提交给 dirA,使其成为同一个 cvsroot 的一部分,然后根据需要添加“开发”作为分支。
你的第二个问题:'如果我们做一个“cvs -dB development dirB”,然后在 dirA 上重新创建分支,会有什么问题吗?
对此的回答基本上是“不”,除了您将无法再通过检查分支“开发”来访问事物;你仍然可以通过个人提交来获得它们,正如你所说,历史和状态是微不足道的。如果您以第一种方式进行设置,它将按照您的建议进行,快速删除然后在适当的级别重新创建。如果你有第二种方式设置,删除是不必要的,但是清理 CVS 子目录,然后在 dirA 下提交 dirB 将所有内容放在一个 cvsroot 下是必不可少的,此时,添加“开发”不会破坏任何内容“ 分支。