3

在我公司,我们即将从 svn 切换到 git。我们使用的 SVN 非常大,没有 svn 布局,并且在每个版本拆分时我们都制作了 svn 副本。

SVN 存储库结构:

  • svnserver.company.de
    • 产品 xy
      • 主要版本号 1
      • 主要版本号 2
      • 主要版本号 3
        • 次要版本号 3.0.0
        • 次要版本号 3.0.1
        • 次要版本号 ...
      • 主要版本号 4
      • ……
    • 产品zw

我们想要什么或者我期望 git 做什么:

git svn clone 确实从一个子文件夹中克隆所有文件/复制这些文件的完整历史记录(就像 tortoise 通过取消选中“停止复制/重命名”所做的那样)。

git 在做什么:

git svn clone --prefix=origin/ --username=spe --authors-file=authors.txt https://svnserver.company.de/repos/product/majorversionnumber/Master/Source product

-> 确实从一个子文件夹/副本中克隆所有文件,但仅在复制发生之前使用历史记录。

问题:

git 是否等同于 svns“复制/重命名停止”或如何克隆完整历史记录,尽管 svn 复制?

到目前为止我发现了什么: Git-svn - 导入完整历史记录 失败“git svn clone”的解决方法(需要完整历史记录) https://github.com/githubtraining/zzz_deprecated-feedback/issues/43

老实说,如果他们和我们有同样的问题,我不明白这些链接的解决方法。

4

1 回答 1

2

好的,所以如果我理解正确,您的完整布局是这样的:

svnserver.company.de
  product xy
    majorversionnumber 1
      master
        <actual source starts here>
    majorversionnumber 2
    majorversionnumber 3
      master
        <actual source starts here>
      minorversionnumber 3.0.0
        master
          <actual source starts here>
      minorversionnumber 3.0.1
      minorversionnumber ...
    majorversionnumber 4
    ....
  product zw

这只是一个未经检验的有根据的猜测,但我会尝试这样的事情。首先,git svn init svn://svnserver.company.de。然后编辑.git/config[svn-remote]部分看起来像这样:

fetch = product xy/majorversionnumber 1/master:refs/remotes/origin/trunk
branches = product xy/{majorversionnumber 2,majorversionnumber 3}/master:refs/remotes/origin/branches/*
branches = product xy/majorversionnumber 3/{minorversionnumber 3.0.0,minorverionnumber 3.0.1}/master:refs/remotes/origin/branches/*

然后git svn fetch。您可以使用类似的命令 + config 为product zw.

有关详细信息,请参阅CONFIGURATION部分。git help svn

于 2014-08-20T01:11:44.283 回答