如何用svn2git排除某些分支?

时间:2015-05-28 05:59:27

标签: svn2git

我在Windows上运行svn2git,并希望从迁移过程中排除许多分支。这是如何实现的?

2 个答案:

答案 0 :(得分:0)

svn2git从排除标记中生成一个正则表达式,并将其提供给它的--ignore-paths参数。

不幸的是,这个正则表达式包含DOS保留字符 - 比如[] |等 - 没有逃脱。

我首先尝试使用生成的正则表达式来制作一个正确转义的正则表达式来制作我自己的--ignore-paths参数,但DOS的保留字符/转义系统是一个真正的噩梦。

解决方案 - >在Windows系统上使用Linux发行版或设置cygwin:

  • 使用ruby软件包安装cygwin

  • gem install svn2git

  • cd / usr / local / bin

  • ln -s / home /< user> /.gem / ruby​​ / gems / svn2git-2.3.2 / bin / svn2git

  • cd / cygdrive / c /< your target repo>

现在你可以根据需要使用尽可能多的--exclude参数来运行svn2git!

答案 1 :(得分:0)

要在cdup's answer上进行扩展,可以直接在计算机上修改svn2git源代码以解决此问题。发生问题是因为s​​vn2git在传递给'的参数周围使用单号"而不是双引号git svn。在Windows命令提示符下运行时,下面描述的修复程序也适用于other areas of svn2git

无论如何,打开migration.rb下的<ruby install path>\lib\ruby\gems\<version>\gems\svn2git-<version>\lib\svn2git并查找以下行:

cmd += "--ignore-paths='#{regex}' "

以此替换它(请注意,'已由转义的双引号\"代替):

cmd += "--ignore-paths=\"#{regex}\" "

保存更改并重新运行svn2git。您的排除模式现在应该可以使用。

但是,正如cdup所建议的那样,如果您可以使其运行在例如Windows版Git随附的Git bash窗口,您可能会避免很多问题。