有一个我想要结账和贡献的开源项目.主存储库是SVN,但我想在Git中工作.这可能吗?
我的大部分搜索都会显示你从SVN移动到Git(或者反过来)的指南,不要回头看.
假设原作者对SVN以外的任何东西都没有兴趣.
[更新]我没有,也不想拥有,提交对SVN存储库的访问权限.我正在寻找解决方法.
[Update2]如果补丁确实是我唯一的选择,是否还有其他警告我应该注意?
幸运的是,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外部.你必须自己处理这些.
祝好运!
保持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同步的分支.