我已经尝试遵循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远程引用的屏幕快照:
任何有关如何将这些导入的Subversion远程分支和标签转换为本地Git分支和标签的建议,将不胜感激!
答案 0 :(得分:1)
GIT中的用途 2 用于存储参位置(即分支,标签,...):首先,它存储每个裁判如下一个单独的文件.git/refs
。过一段时间和/或如果积累了很多引用,git pack-refs
会将当前状态打包到一个文件.git/packed-refs
中。 git pack-refs
由git gc
调用,而.git/refs
由某些git命令自动执行。
所以它不是git for-each-ref
不包含您的分支的错误。明确的命令来获取所有参考文献为git svn
。
git/svn
确实将其他数据存储在git for-each-ref
中,而不是引用本身。
如果后处理不起作用,我认为裁判的模式不匹配。因此,将refs/remotes/tags
的输出与命令refs/remotes
和compilerPath
中的字符串进行比较。