1

我正在将一个项目从 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,但如果有它们就好了。

4

2 回答 2

1

你应该能够做到:

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

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

于 2009-08-18T08:43:08.363 回答
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|bgit-svn.]

于 2009-08-26T00:07:39.383 回答