当使用git-svn或svn2git从svn转换为git时,如何更改存储库的基本路径并可能仍保留分支/标记?

时间:2009-08-18 08:21:51

标签: svn git git-svn

我正在将一个项目从SVN移动到git(完全,所以不需要git svn的SVN互操作功能),我尝试使用git svnsvn2gitnirvdrum's fork on github )我遇到的一个问题是我们在SVN中的存储库布局是这样的:

example.com/website/trunk|branches|tags/base/code

所以当我将它导入git时,存储库的根目录包含一个目录,base(不是真实姓名),然后是所有东西。这对我们来说是一个问题,因为它增加了一些复杂性。

是否有一种简单易用的方法可以将存储库的根目录更改为基础,无论是在导入过程中还是追溯到git的疯狂历史变化权力?否则,一个不应该是存储库的根目录并包含其他无关代码的目录必须是git中存储库的根目录,这很奇怪,并且出于某种原因,对于SVN,情况并非如此(即存储库的根目录是基础,父目录没有任何svn东西。

希望这是一个容易回答的快速问题。

哦,顺便说一句,我确实有一些我想要导入的分支和标签,但是这些应该根据base而不是base的父目录。如果这些都不可能像那样进口,那就不是一件大事了,因为它们几乎没用,团队之前有点半心半意地使用SVN,但是拥有它们会很好。

2 个答案:

答案 0 :(得分:1)

你应该可以这样做:

git svn init -Texample.com/website/trunk/base/code -texample.com/website/tags/base/code -bexample.com/website/branches/base/code

而不是接受默认值或使用-s|--stdlayout

答案 1 :(得分:1)

svn2git也可以选择;使用查尔斯回答的例子:

svn2git --trunk example.com/website/trunk/base/code \
        --tags example.com/website/tags/base/code \
        --branches example.com/website/branches/base/code

[警告:我没有尝试过这个,但据我所知,svn2git只是将这些转换为-T|t|b的{​​{1}}选项。]