是否有将.cvsignore文件转换为.gitignore文件的规定?

时间:2014-06-03 07:58:24

标签: git cvs ignore cvs2git

我正在使用cvs2svn-2.4.0进行CVS到Git的迁移。这不包括.cvsignore到.gitignore转换。如何将.cvsignore文件转换为.gitignore文件?

5 个答案:

答案 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:

https://github.com/stroeter/cvsignore2gitignore

答案 4 :(得分:-3)

只需在终端控制台中使用以下命令:

find . -name .cvsignore -prune -exec mv {} .gitignore \;