我试图按照有关如何从Subversion做一个项目的一次性,单向迁移到Git的的official Git instructions。我已经尝试了几次,略有不同的选择,但我没有得到我预期的结果。
该指令建议,在导入过程完成后进口颠覆标签和分支应该在这里出现的新创建的本地的Git回购:
my-new-local-git-repo\.git\refs\remotes
但是Subversion的标签/分支机构实际存在的位置:
my-new-local-git-repo\.git\svn\refs\remotes\origin
我怀疑这就是为什么进口后清理指令不适合我的工作。我不知道如果我在我用来执行导入命令/选项犯了一个错误,如果该指令是外的日期,或者如果我犯了一个错误的其他地方。
这是我用来创建一个Subversion到Git的迁移回购的命令:
git svn clone --stdlayout --authors-file=users.txt http://svn/repo/root/MyProjectInSVN/ new-local-git-repo
这里是什么导致本地的Git回购远程引用看起来像一些截图:
如何我可以将这些导入的颠覆远程分支和标签到本地的Git分支,标签任何建议,将不胜感激!
Git使用用于存储参考文献的两个位置(即分支,标签,...):首先,它存储每个裁判如下.git/refs
单个文件。过了一会儿,和/或如果许多裁判已经积累git pack-refs
包的当前状态到一个文件.git/packed-refs
。 git pack-refs
通过其依次由一些GIT中的命令自动执行git gc
调用。
所以它不是.git/refs
不包含你的分支的错误。明确的命令得到所有裁判是git for-each-ref
。
git svn
并存储额外的数据git/svn
而不是裁判本身。
如果处理后没有工作,我认为对裁判的模式不匹配。所以git for-each-ref
的输出,并在命令字符串比较:refs/remotes/tags
和refs/remotes
。