在我的公司,我们即将从 svn 切换到 git。我们使用的 SVN 非常大,没有 svn 布局,并且在每个版本拆分时我们都制作了一个 svn 副本。
SVN 存储库结构:
- svnserver.company.de
- 产品xy
- 主要版本号 1
- 主要版本号 2
- 主要版本号 3
- 次要版本号 3.0.0
- 次要版本号 3.0.1
- 次版本号 ...
- 主要版本号 4
- ....
- 产品zw
- 产品xy
我们想要什么或者我期望 git 做什么:
git svn clone 确实从一个子文件夹/副本中克隆所有文件,并包含这些文件的完整历史记录(就像乌龟通过取消选中“停止复制/重命名”所做的那样)。
git 在做什么:
git svn clone --prefix=origin/--username=spe --authors-file=authors.txt https://svnserver.company.de/repos/product/majorversionnumber/Master/Source产品
-> 确实从一个子文件夹/副本中克隆所有文件,但仅包含复制发生之前的历史记录。
问题:
git 是否等同于 svns“复制/重命名时停止”或如何在 svn 复制的情况下克隆完整历史记录?
到目前为止我发现了什么: Git-svn - import full history Work-around for failing "git svn clone" (requiring full history) https://github.com/githubtraining/zzz_deprecated-feedback/issues/43
老实说,如果他们和我们有同样的问题,我更不明白这些链接的解决方法。
最佳答案
好的,如果我理解正确的话,你的完整布局是这样的:
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
。您可以使用类似的命令 + 配置为 product zw
创建克隆。
有关详细信息,请参阅 git help svn
的 CONFIGURATION
部分。
关于git - 尽管有 svn copy,如何 git svn clone 完整的历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358628/