我正在尝试将我的CVS回购转移到git。我已将所有CVS历史记录导入git,但我只需要移动所有已更改/新文件。是否有捷径可寻?我正在使用debian linux,所以更喜欢命令行工具。
答案 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循环遍历新文件中的行以保留目录结构