1

我们有一个要迁移到 git 的 subversion 存储库。

svn 存储库的布局几乎是标准的,但在历史上的某个时刻,一些白痴开发人员(好吧,是我)不小心在存储库根目录而不是树干中创建了一个目录,称为“/foo”。

“foo”在那里住了几个星期,然后被转移到应该一直在的“/trunk/foo”。

现在,当我执行“git svn clone --stdlayout [...]”时,我想念发生在主干之外的部分历史记录。

有没有办法将“/foo”的早期更改“合并”到 git 上的 master 历史中?

*编辑 *或者,有没有办法将那些缺失的修订放到一个分支上?

4

1 回答 1

1

我不确定这会让你得到你想要的,但欢迎你尝试:

  1. 将 foo 文件夹克隆到单独的文件夹。为此,您必须找出它在其原始位置 (/foo) 中的修订范围。假设它是在 rev 100 上创建的,并在 rev 200 上移至 /trunk/foo。在这种情况下,您的命令应如下所示:

    git svn clone -r100:200 http://server/foo

你会得到另一个 git repo foo。

  1. 转到主 git 存储库并将 foo 添加为远程:

    git remote add foo /path/to/foo

  2. 拿来:

    git fetch foo

现在您可以在 remotes/foo/master 上设置本地分支或将其合并到您的 master。由于新提交和原始提交没有共同的历史记录,因此您将没有正确的历史记录图,但是您将在一个 git repo 中拥有所有开发历史记录。

于 2012-12-02T21:58:35.137 回答