我们需要将生产 CVS 存储库转换为 SVN。我们将 CVS2SVN 用于原始转换过程以及其他一些工具。
因为这是一个实时开发存储库,所以存储库切换点的停机时间非常重要。目前,我们对基本 CVS2SVN 转换的测试运行大约需要 5 天,这太长了。
我正在寻找一些替代方法来使该过程有些增量。其中一种方法要求在 CVS 存储库上限制标记和分支。
是否可以限制标记和分支,但允许在 CVS 存储库中正常提交?
所以事实证明,使用 taginfo pre-commit 脚本是可能的,详见此处手册的管理部分。
标记信息文件
loginfo 用于记录消息,taginfo 用于标记。taginfo的左边是正则表达式,和往常一样,右边是程序。调用 CVS 标记时,每个程序都会自动传递参数,顺序如下:
arg 1: tag name
arg 2: operation ("add" => tag, "mov" => tag -F, "del" => tag -d)
arg 3: repository
arg 4, 5, etc: file revision [file revision ...]
如果程序返回非零,则标记被中止。