当主存储库是SVN时,在本地使用Git

Miz*_*zor 11 svn git git-svn

有一个我想要结账和贡献的开源项目.主存储库是SVN,但我想在Git中工作.这可能吗?

我的大部分搜索都会显示你从SVN移动到Git(或者反过来)的指南,不要回头看.

  • 如果我签出项目,进行更改并将其推送到我在Github上创建的分支,我该如何通知原作者?
  • 将Git回购中的贡献包含在SVN回购中有多难?
  • 只需比较两个修订版本(我的最新签出/拉取/更新和我自己的本地最新提交),从中生成补丁并将其发送给它们; 这应该被视为后备工作流程还是标准方法?

假设原作者对SVN以外的任何东西都没有兴趣.

[更新]我没有,也不想拥有,提交对SVN存储库的访问权限.我正在寻找解决方法.

[Update2]如果补丁确实是我唯一的选择,是否还有其他警告我应该注意?

lem*_*nad 7

幸运的是,git-svn正是出于这个目的.它使您可以在本地使用git,同时还可以在您希望的时候登录SVN.这是相当简单的,如果您在git-svn这里或通过谷歌搜索,有很多信息.

http://flavio.castelli.name/howto_use_git_with_svn上有一个教程,你可能想先看一下.

编辑:要生成SVN兼容的差异,您可以使用git diff --no-prefix.但请注意,此格式与TortoiseSVN不兼容.如果需要兼容性,则必须使用某种shell脚本; 请参阅此处的示例:http://mojodna.net/2009/02/24/my-work-git-workflow.html

编辑: git-svn的一个潜在缺点是它不处理svn外部.你必须自己处理这些.

祝好运!


Ben*_*mes 7

保持Git存储库与Subversion存储库同步非常简单:

克隆Subversion存储库(在这个简单的例子中,我忽略了分支/标签)

$ git svn clone https://url/to/repo/trunk
Run Code Online (Sandbox Code Playgroud)

随时了解Subversion主干:

$ git svn rebase
Run Code Online (Sandbox Code Playgroud)

现在,如果你有提交Subversion仓库的权限,你可以推送你的更改:

$ git commit
$ git svn dcommit
Run Code Online (Sandbox Code Playgroud)

否则,如果Subversion存储库的提交者对使用Git没兴趣,则提交补丁是唯一的选择:

$ git diff 1cc92b96 > my_patch.patch
Run Code Online (Sandbox Code Playgroud)

在这种情况下,显然最好不要提交你正在与Subversion repo同步的分支.