从CVS存储库复制更改的文件

时间:2011-12-27 22:57:36

标签: git debian cvs

我正在尝试将我的CVS回购转移到git。我已将所有CVS历史记录导入git,但我只需要移动所有已更改/新文件。是否有捷径可寻?我正在使用debian linux,所以更喜欢命令行工具。

2 个答案:

答案 0 :(得分:0)

HOW-TO import and export to and from Git and CVS”中描述的一种方法是使用CVS中的补丁集,以便定期更新您的git repo以获取CVS回购中的任何新更改:

初次导入:

  

确保在会话中初始化了$CVSROOT参数,并运行以下命令:

$ git cvsimport -d $CVSROOT -C dir_to_create -r cvs -k cvs_module_to_checkout

长版:

cvsps -x --norc -u -A ojs2 > ~/cvsps.out
mkdir ojs
cd ojs
# the ojs2 at the end is the CVS module name
git-cvsimport -o HEAD -v -k -P ~/cvsps.out ojs2

然后:

$ git config cvsimport.module cvs_module_to_checkout
$ git config cvsimport.r cvs
$ git config cvsimport.d $CVSROOT
  

运行这些配置命令后,保持master分支最新可以通过以下方式完成:

$ git cvsimport -k

答案 1 :(得分:0)

我终于找到了一种方法来获取已更改的文件并将它们复制到另一个目录中:

cvs -qn update -d 2>/dev/null | grep '^[M|\?|P] ' | awk '{print $2}' > files.list
while read file; do cp -r -f --parents "$file" /tmp/dest/; done < files.list

基本上,cvs -qn update -d执行模拟更新(不更改文件),通过管道传输grep以仅列出已更改的文件,使用awk排除M,P ,?等,输出到文件。

使用cp --parents循环遍历新文件中的行以保留目录结构