我使用cvs2svn-2.4.0进行CVS到Git的迁移。这不包括从.cvsignore到.gitignore的转换。如何将.cvsignore文件转换为.gitignore文件?
发布于 2014-06-03 21:31:49
下面是一个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忽略模式。
发布于 2014-06-03 19:07:10
您不能简单地将.cvsignore复制到.gitignore -这两种格式是不相同的(除非它是顶级目录中的一个简单的文件列表。
例如,看看Eclipse's guide for migrating to Git
.cvsignore和.gitignore在语义上有细微的差别,所以你不应该在迁移到
时只重命名这些文件。至少在.gitignore中的每一行前面加上一个"/“,以确保一个模式不会在所有子文件夹中都匹配。
好的做法是直接在Git仓库的顶级文件夹中创建一个.gitignore,然后添加//bin/或//*/bin/ (取决于repo布局)。然后,您可以从项目级忽略文件中删除bin条目(如果忽略文件是唯一的条目,还可以删除该文件)。
发布于 2017-09-09 15:43:24
find命令应该直接重命名,尽管格式有些相同,但有一些细微的差异,您稍后会想要更改这些差异
总体而言,这是从CVS迁移到GIT的一个良好开端,至少在开始时是这样。我有成百上千个这样的.cvsignore文件,我在cvs2git转换之后执行了这个操作
find . -name '*.cvsignore' -print -exec rename ".cvsignore" ".gitignore" {} \;不要忘记,CVS在CVSROOT模块中有一个全局忽略文件,所以通过转换本地.cvsignore,您可能会错过一些在CVS中拥有的文件
您可以通过执行以下操作来获得这些全局类型
cvs签出CVSROOT,您将在"cvsignore“文件中找到它们
checkoutlist config cvsignore editinfo modules rcsinfo verifymsg
commitinfo CVS cvswrappers loginfo notify taginfo然后我建议将这些全局文件放到根文件夹.gitignore中
注意:重命名有不同的版本(内核、perl)如果rename是基于perl的正则表达式版本,命令将失败,请确保使用正确的重命名
https://stackoverflow.com/questions/24009919
复制相似问题