git svn clone-如何将Subversion远程转换为Git本地(Windows)

时间:2019-02-01 14:56:20

标签: git svn git-svn

我已经尝试遵循official Git instructions的方法,将项目从Subversion一次单向迁移到Git。我尝试了几次,但选项稍有不同,但没有得到我期望的结果。

说明建议,导入过程完成后,导入的Subversion标签和分支应出现在新创建的本地Git存储库中:

my-new-local-git-repo\.git\refs\remotes

但是Subversion标记/分支实际上在这里存在:

my-new-local-git-repo\.git\svn\refs\remotes\origin

我怀疑这就是为什么导入后清理说明对我不起作用的原因。我不知道我在执行导入时所用的命令/选项中是否犯了错误,指令是否过时或在其他地方犯了错误。

这是我用来创建此Subversion-to-Git迁移存储库的命令:

git svn clone --stdlayout --authors-file=users.txt http://svn/repo/root/MyProjectInSVN/ new-local-git-repo

以下是生成的本地Git repo远程引用的屏幕快照:

screenshot 1

screenshot 2

任何有关如何将这些导入的Subversion远程分支和标签转换为本地Git分支和标签的建议,将不胜感激!

1 个答案:

答案 0 :(得分:1)

GIT中的用途 2 用于存储参位置(即分支,标签,...):首先,它存储每个裁判如下一个单独的文件.git/refs。过一段时间和/或如果积累了很多引用,git pack-refs会将当前状态打包到一个文件.git/packed-refs中。 git pack-refsgit gc调用,而.git/refs由某些git命令自动执行。

所以它不是git for-each-ref不包含您的分支的错误。明确的命令来获取所有参考文献为git svn

git/svn确实将其他数据存储在git for-each-ref中,而不是引用本身。

如果后处理不起作用,我认为裁判的模式不匹配。因此,将refs/remotes/tags的输出与命令refs/remotescompilerPath中的字符串进行比较。