0

在工作中,我拥有一个相对较小的软件工具(大约 25k 行 java),并且我一直在使用 Git 存储库对其进行修订。现在,该工具将成为一个更大的包的一部分,该包由其他人在完全不同的环境中维护,该环境使用 SVN。但是我仍然想保持我的 Git 存储库的灵活性,这样我就不会拘泥于更大的包的发布时间表。

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

4

1 回答 1

1

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

最简单的方法是:

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

缺点是您丢失了到目前为止创建的 git 历史记录。

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

  • 创建一个空的 SVN 存储库
  • 使用git svn clone
  • 将您现有的 git 提交导入此 git 存储库
  • 将它们推送到 SVN 存储库 ( git svn dcommit)

“导入您现有的 git 提交”是事情变得棘手的地方(例如,您必须在git svnrepo 中的初始提交之上重新设置基准,然后git svn dcommit将再次重新设置基准,这将对合并提交造成严重破坏。但是,如果您可以忍受例如没有完全忠实地代表的分支,你应该没问题。

于 2013-09-03T09:49:10.390 回答