有一个我想要结帐并参与的开源项目。主存储库是SVN,但我想在Git中工作。这可能吗?
我的大部分搜索都会显示你从SVN移动到Git(或者相反)的指南,不要回头看。
假设原作者对SVN以外的任何其他内容没有任何兴趣。
[更新] 我没有,也不想拥有,提交对SVN存储库的访问权限。我正在寻找解决方法。
[Update2] 如果补丁确实是我唯一的选择,我应该注意哪些其他警告?
答案 0 :(得分:7)
幸运的是,git-svn正是出于这个目的。它使您可以在本地使用git,同时还可以在您希望的时候登录SVN。这是相当简单的,如果您在此处或通过Google搜索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外部。你必须自己处理这些。
祝你好运!答案 1 :(得分:7)
保持Git存储库与Subversion存储库同步非常简单:
克隆Subversion存储库(在这个简单的例子中,我忽略了分支/标签)
$ git svn clone https://url/to/repo/trunk
与Subversion主干保持同步:
$ git svn rebase
现在,如果您有提交Subversion仓库的权限,则可以推送您的更改:
$ git commit
$ git svn dcommit
否则,如果Subversion存储库的提交者对使用Git没兴趣,则提交补丁是唯一的选择:
$ git diff 1cc92b96 > my_patch.patch
在这种情况下,最好不要提交你正在与Subversion repo同步的分支。
答案 2 :(得分:3)
是的!这是可能的!
查看此帖子了解详情:http://www.romanenco.com/gitsvn
有三到四个简单的步骤来实现SVN和Git SCM的共生。
我使用这项技术大约三个月,没有任何麻烦。这很酷!当您在SVN中使用主仓库时,您可以进行离线提交并获得强大的Git合并功能。
答案 3 :(得分:1)
如果没有,也不想拥有,则提交对SVN存储库的访问权限,那么git-svn
和StGit的组合可能有所帮助。 git-svn
创建/更新克隆,stg
在其上维护一系列补丁(stg
命令来自StGit Crash Course):
git svn clone ..
stg new invent-some-patch-id
...edit patch description...
...hack hack hack in the tree...
stg refresh
...possibly hack some more...
stg refresh
..
stg mail
请参阅StGIT Tutorial开始使用。
注意:我实际上没有尝试过这个工作流程。