git svn clone - 如何将 Subversion 远程转换为 Git 本地 (Windows)
git svn clone - How to convert Subversion remotes to Git locals (Windows)
我已尝试按照 official Git instructions 如何将项目从 Subversion 一次性、单向迁移到 Git。我尝试了几次,选项略有不同,但没有得到预期的结果。
说明建议在导入过程完成后,导入的 Subversion 标签和分支应该出现在新创建的本地 Git 仓库中:
my-new-local-git-repo\.git\refs\remotes
但 Subversion tags/branches 实际上存在于此:
my-new-local-git-repo\.git\svn\refs\remotes\origin
我怀疑这就是 post-导入清理说明对我不起作用的原因。我不知道是我在执行导入时使用的 command/options 中的错误,说明是否已过时,或者我是否在其他地方犯了错误。
这是我用来创建此 Subversion-to-Git 迁移的 repo 的命令:
git svn clone --stdlayout --authors-file=users.txt http://svn/repo/root/MyProjectInSVN/ new-local-git-repo
以下是生成的本地 Git 回购远程引用的一些屏幕截图:
任何关于如何将这些导入的 Subversion 远程分支和标签转换为本地 Git 分支和标签的建议都将不胜感激!
Git 使用 two 位置来存储 refs(即分支,标签,......):首先它将每个 ref 作为单独的文件存储在 .git/refs
.一段时间后 and/or 如果积累了很多 refs git pack-refs
将当前状态打包到 一个 文件 .git/packed-refs
中。 git pack-refs
由 git gc
调用,后者又由某些 git 命令自动执行。
所以 .git/refs
不包含您的分支不是错误。获取所有 refs 的最终命令是 git for-each-ref
.
git svn
确实在 git/svn
中存储了 额外的 数据,但不存储 refs 本身。
如果 post- 处理不起作用,我假设 refs 的模式不匹配。因此,将 git for-each-ref
的输出与命令中的字符串进行比较:refs/remotes/tags
和 refs/remotes
.
我已尝试按照 official Git instructions 如何将项目从 Subversion 一次性、单向迁移到 Git。我尝试了几次,选项略有不同,但没有得到预期的结果。
说明建议在导入过程完成后,导入的 Subversion 标签和分支应该出现在新创建的本地 Git 仓库中:
my-new-local-git-repo\.git\refs\remotes
但 Subversion tags/branches 实际上存在于此:
my-new-local-git-repo\.git\svn\refs\remotes\origin
我怀疑这就是 post-导入清理说明对我不起作用的原因。我不知道是我在执行导入时使用的 command/options 中的错误,说明是否已过时,或者我是否在其他地方犯了错误。
这是我用来创建此 Subversion-to-Git 迁移的 repo 的命令:
git svn clone --stdlayout --authors-file=users.txt http://svn/repo/root/MyProjectInSVN/ new-local-git-repo
以下是生成的本地 Git 回购远程引用的一些屏幕截图:
任何关于如何将这些导入的 Subversion 远程分支和标签转换为本地 Git 分支和标签的建议都将不胜感激!
Git 使用 two 位置来存储 refs(即分支,标签,......):首先它将每个 ref 作为单独的文件存储在 .git/refs
.一段时间后 and/or 如果积累了很多 refs git pack-refs
将当前状态打包到 一个 文件 .git/packed-refs
中。 git pack-refs
由 git gc
调用,后者又由某些 git 命令自动执行。
所以 .git/refs
不包含您的分支不是错误。获取所有 refs 的最终命令是 git for-each-ref
.
git svn
确实在 git/svn
中存储了 额外的 数据,但不存储 refs 本身。
如果 post- 处理不起作用,我假设 refs 的模式不匹配。因此,将 git for-each-ref
的输出与命令中的字符串进行比较:refs/remotes/tags
和 refs/remotes
.