1

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

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

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

4

2 回答 2

2

SubGit可能是一个选项,他们承诺提供一个双向 Git<->SVN 镜像,包括所有 SVN 功能。对开源项目免费。听起来很有趣,但我还没有尝试过这个。

此外,GitHub 有一个双向 SVN 连接器,其功能集与 SubGit 大致相同。您可以使用 Subversion 简单地检查一个 Git URL,它开箱即用。这将需要从 SVN 一次性迁移到 Git。另请参阅:如何将具有历史记录的 SVN 存储库迁移到新的 Git 存储库?

如果两者都不是您的选择,那么最安全的选择可能是分别git svn clone针对每个客户。如果身份验证不是 URL 的一部分,您始终可以将克隆的 GitSVN 工作副本部署到另一台机器上,但这与工作流程有关……相关:git-svn 树的 git clone?

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

于 2013-06-24T23:37:29.203 回答
0

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

首先像这样将svn repo添加到git配置文件中

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

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

然后调用 git svn fetch ,其中 svn(在 fetch 之后)是 svn-remote 的名称,-r832 代表 -r(修订版),832 是我们要开始的颠覆修订号

git svn fetch svn -r832

之后,我调用了 git svn rebase 并在其末尾重新设置了所有选择,我收到一条消息说我可能应该创建一个分支,因为所有更改都被重新设置了,然后我切换到 master 并合并了来自刚刚创建的分支。现在我可以从那个 repo 获取 git svn 了:D

如果有比这更好/更短的方法,很高兴听到它:)

于 2013-06-25T13:20:00.677 回答