git-svn克隆了一个生活在git但是从svn获取的repo

时间:2013-06-24 18:26:31

标签: git svn git-svn

我对以下场景的正确工作流程感到有些失落。 我正在使用一个开源项目,该项目托管在subversion repo中的谷歌代码上。我更喜欢使用git所以我使用git-svn将svn repo克隆到git repo。 原作者仍然致力于svn repo(耶!)而我和我的团队都承诺使用git repo。

我需要能够   - 克隆git repo(包含svn历史记录)   - 配置git,以便它可以从svn存储库中获取   - 配置git-svn以便从特定的修订号

中获取

注意:当你克隆git repo时,所有到svn的链接都会丢失。

2 个答案:

答案 0 :(得分:2)

SubGit可以是一个选项,它们承诺包含所有SVN功能的双向Git< - > SVN镜像。免费开源项目。听起来很有意思,但我还没试过这个。

此外,GitHub还有一个双向 SVN connector,其功能与SubGit大致相同。您可以使用Subversion简单地查看Git URL,它开箱即用。这将需要一次性migration from SVN to Git。另见:How to migrate SVN repository with history to a new Git repository?

如果两者都不适合您,最安全的选择可能是每个客户单独git svn clone。如果身份验证不是URL的一部分,您始终可以将克隆的GitSVN工作副本部署到其他计算机,但这与工作流程有关...相关:git clone of git-svn tree?

(我不隶属于上面列出的任何公司。)

答案 1 :(得分:0)

好的,所以我找到了一种方法来做到这一点

首先将svn repo添加到git配置文件中,如下所示

 [svn-remote "svn"]
    url = http://url/to/repo/svn/trunk
    fetch = :refs/remotes/git-svn

注意:如果您的git repo曾经是主干,请确保将其包含在网址中

然后使用svn调用git svn fetch(获取之后)是svn-remote的名称,-r832代表-r(修订版),832是我们想要从

git svn fetch svn -r832
之后我打来电话     git svn rebase并重新定位了它的所有选择我收到一条消息说我应该创建一个分支,因为所有的变化都被重新定位然后我做了然后我切换到master并合并了刚刚创建的分支的更改。 现在我可以从该回购中获取svn fetch:D

如果有比这更好/更短的方式,听听它会很棒:)