Py学习  »  community wiki 2 revs, 2 users  »  全部回复
回复总数  1
8 年前
回复了 community wiki 2 revs, 2 users 创建的主题 » 如何将具有历史记录的SVN存储库迁移到新的Git存储库?

为了 吉特实验室 我在这里介绍了如何从SVN迁移的用户:

https://gist.github.com/leftclickben/322b7a3042cbe97ed2af

从SVN迁移到Gitlab的步骤

安装程序

  • SVN托管在 svn.domain.com.au .
  • SVN可通过 http (其他协议应该有效)。
  • Gitlab托管于 git.domain.com.au 还有:
    • 使用命名空间创建组 dev-team .
    • 至少创建了一个用户帐户,将其添加到组中,并具有用于迁移的帐户的ssh密钥(使用 ssh git@git.domain.com.au )
    • 项目 favourite-project 创建于 新鲜的 命名空间。
  • 文件 users.txt 包含表单的相关用户详细信息,每行一个用户 username = First Last <address@domain.com.au> 在哪里 username 是SVN日志中给定的用户名。(有关详细信息,请参阅参考资料部分的第一个链接,尤其是用户凯西的回答)。

版本

  • Subversion版本1.6.17(R1128011)
  • Git版本1.9.1
  • Gitlab版本7.2.1 ff1633f
  • Ubuntu服务器14.04

命令

bash
git svn clone --stdlayout --no-metadata -A users.txt 
http://svn.domain.com.au/svn/repository/favourite-project
cd favourite-project
git remote add gitlab git@git.domain.com.au:dev-team/favourite-project.git
git push --set-upstream gitlab master

就是这样!在GitlabWebUI中重新加载项目页面,您将看到所有提交和文件现在都已列出。

笔记

  • 如果有未知用户,则 git svn clone 命令将停止,在这种情况下,更新 用户交换机 , cd favourite-project git svn fetch 将从停止的位置继续。
  • 标准 trunk - tags - branches SVN存储库的布局是必需的。
  • 提供给 GIT-SVN克隆 命令在紧接着上方的级别停止 trunk/ , tags/ branches/ .
  • 这个 GIT-SVN克隆 命令产生大量输出,包括顶部的一些警告;我忽略了这些警告。