取消

将 svn 仓库迁移到 git 仓库

我找到了一个很久很久以前编写的项目,然而当时是使用 svn 进行版本管理的。然而现在的版本管理全部是 git,不愿意再装一个 svn 工具来管理这些古老的项目,于是打算将其迁移到 git 中。

本文介绍如何将古老的 svn 项目迁移到 git。


找回 svn 仓库的 url

如果你能记得你 svn 仓库的 url,或者这个仓库是一个纯本地仓库,那么你直接复制这个 url 就好了。

然而如果这是一个有 svn 远程服务器的仓库,那么你可能依然需要临时安装一下 svn 工具。我们只是为了拿回 url 而已。

这里我使用当时使用的小乌龟 TortoiseSVN。在 svn 仓库空白处右击选择版本库浏览器(Repo-browser),小乌龟会自动定位到当前仓库所在的远程 svn 服务器的对应文件夹。

版本库浏览器

我们所要做的只有一件事——复制顶部那个 url。

得到了这个 url 后,像我这种洁癖就卸载 TortoiseSVN 了。

将 svn 仓库迁移到 git 仓库

命令行

在一个新的文件夹中,我们输入如下命令:

1
git.exe svn clone "https://svn.walterlv.com/LvYi/Timer" ".\Walterlv.RepoFromSvn"

如果那个 svn 目录中包含 trunkbranchestags 结构,那么可以在后面添加相应的参数以便在 clone 完成后保留分支和标签信息。

1
git.exe svn clone "https://svn.walterlv.com/LvYi/Timer" ".\Walterlv.RepoFromSvn" -T trunk -b branches -t tags

需要注意的是,上面的 Walterlv.RepoFromSvn 文件夹是不允许提前存在的,如果存在将无法迁移成功。

TortoiseGit

这里特地照顾一下从 TortoiseSVN 迁移来继续考虑 TortoiseGit 的小伙伴。在 TortoiseGit 中的操作是:

  1. 在某个文件夹中右键(或者 Shift+右键)
  2. 选择克隆
  3. 按照下图填写来自 url 的远程服务器 url 和本地文件夹,并打勾“从SVN版本库”

TortoiseGit 上的迁移 SVN 操作


参考资料

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/migrating-svn-to-git.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

登录 GitHub 账号进行评论