如何让我的代码同步到Git和SVN存储库?

时间:2013-09-03 06:25:47

标签: git svn version-control

在工作中我拥有一个相对较小的软件工具(大约25k行java),我一直在使用Git repo来修改它。现在,该工具将成为更大的软件包的一部分,该软件包由使用SVN的其他人在完全不同的环境中维护。但是我仍然希望保持我的Git仓库的灵活性,这样我就不会严格依赖更大的软件包的发布时间表。

有没有办法让我的本地区域与两个版本控制系统同步,避免将.svn文件上传到git,将.git文件上传到SVN?理想情况下,我想继续将次要编辑提交给Git,然后在请求时定期推送到SVN,所有这些都来自同一目录。或者我注定要继续在我的系统上的两个目录之间复制文件?

1 个答案:

答案 0 :(得分:1)

您最好的选择可能是使用git-svn。这允许您使用git作为Subversion存储库的前端。

最简单的方法是:

  • 为软件创建SVN存储库(或使用现有存储库)
  • 将软件提交给SVN一次(作为一堆文件夹,使用svn commit
  • 使用git svn clone将软件作为git存储库获取

缺点是您丢失了迄今为止创建的git历史记录。

如果你想保留git历史,事情会变得复杂一些(因为SVN不能代表git历史的某些方面,特别是分支)。基本上你是:

  • 创建一个空的SVN回购
  • 使用git svn clone
  • 查看
  • 将您现有的git提交导入此git repo
  • 将他们推送到SVN回购(git svn dcommit

“导入你现有的git提交”会让事情变得棘手(例如,你必须在git svn repo的初始提交之上进行rebase,然后git svn dcommit将再次进行rebase这会对合并提交造成严重破坏。但是,如果你可以和没有完全忠实代表的分支一起生活,你应该没事。