我正在使用cvs2svn-2.4.0进行CVS到Git的迁移。这不包括.cvsignore到.gitignore转换。如何将.cvsignore文件转换为.gitignore文件?
答案 0 :(得分:6)
这是一个Bash脚本,它将查看目录树中的.cvsignore文件,并将它们的模式添加到顶级.gitignore文件中。它期望.cvsignore文件每行只包含一个模式(显然.cvsignore文件允许在一行中有多个模式):
for f in `find . -name .cvsignore | sort `; do
dir=`dirname $f | sed -r 's:^\.::'`
cat $f | awk '{print "'$dir'/"$1}' >> .gitignore
done
此外,您必须从http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_18.html#SEC191添加默认的CVS忽略模式。
答案 1 :(得分:3)
您不能只将.cvsignore
复制到.gitignore
- 格式不相同(除非它是顶级目录中的简单文件列表。
例如,看看Eclipse's guide for migrating to Git:
.cvsignore和.gitignore之间在语义上有细微差别,所以你不应该只是在转移到Git时重命名这些文件。至少在.gitignore中为每一行添加一个“/”,以确保模式在所有子文件夹中都不匹配。
好的做法是直接在Git存储库的顶级文件夹中创建.gitignore并添加/ / bin /或/ / * / bin /(取决于repo布局)。然后,您可以从项目级忽略文件中删除bin条目(如果这是唯一的条目,也删除忽略文件)。
答案 2 :(得分:1)
find命令应该直接重命名,虽然格式有些相同但有一些细微的差别,你以后想要改变
总的来说,这是一个很好的开始,从CVS到GIT至少开始。我有数百个这样的.cvsignore文件,我在cvs2git转换后执行了这个动作
find . -name '*.cvsignore' -print -exec rename ".cvsignore" ".gitignore" {} \;
不要忘记CVS在CVSROOT模块中有一个全局忽略文件,所以你可能只想转换本地.cvsignore
就会错过CVS中的一些文件。你可以通过
进入那些全球性的cvs checkout CVSROOT你会在哪里找到“cvsignore”文件中的那些
checkoutlist config cvsignore editinfo modules rcsinfo verifymsg
commitinfo CVS cvswrappers loginfo notify taginfo
然后我建议将这些全局的文件放入根文件夹.gitignore
注意:如果重命名是基于perl的正则表达式版本,则有不同版本的重命名(kernel,perl)命令将失败,请确保使用正确的重命名
答案 3 :(得分:0)
你可能会看一下我编写的用于转换cvsignore和v RCSFiles的小python脚本。因此,不会修改提交历史记录,也不会创建其他提交。它有它的局限性,但在我们公司完成了工作。我把它放在github:
答案 4 :(得分:-3)
只需在终端控制台中使用以下命令:
find . -name .cvsignore -prune -exec mv {} .gitignore \;