2011-01-24 180 views
3

我有一个使用GIT开发的项目。我需要为不喜欢GIT的用户创建仅SVN镜像存储库。我搜索了一些关于它的说明,但都失败了。其中一部分为Linux编写 - 我有Windows。其中一部分建议创建空的存储库,然后将其与主GIT存储库同步 - 这不是我想要的。其中一部分简单,并没有在具有神秘信息的不同阶段失败。所以我决定在这里问。我拼命尝试让git-svn命令描述让这个事情自己工作。我也失败了。 Github svn出口太不稳定,无法依赖它。现在我要求你帮忙。SourceForge:将GIT存储库镜像到SVN

所以,这里的任务。

  1. 我有本地GIT存储库与许多链接遥控器(我自己的存储库,sf.net,github等)。
  2. 我想从我的本地存储库创建一个支持SVN的GIT存储库来镜像我的开发。
  3. SVN仓库将是一个只读镜像。如果SVN保留更改的历史将会很好,但如果不可能的话 - 我没有打扰。
  4. 只有一个分支应镜像到SVN。它可以是主分支或任何其他专用于镜像 - 不打扰以太。
  5. SVN将驻留在SourceForge上。

是否有可能使这件事情真的有用?

+6

如果人们会对双方承诺,为了上帝的爱,不要这样做。我试图为web2project协调这个为期八个月。 *一个*糟糕的rebase让我们失去了水,git-svn想重新同步8个月以上(500+次提交)。我终于放弃了,只是手动合并整个回购协议中的东西......它不那么费时,不那么痛苦,并且使我不太可能伤害某人。 – CaseySoftware

+1

SVN仓库将是一个只读镜像 –

+0

git-svn不支持按设计对仓库的并发访问,因此双方的承诺是git-svn的一个巨大问题。看到我对SubGit的评论:从第一天开始,这个工具被开发为双向Git-SVN桥接器。当Subversion和Git存储库都保持可写时,它可以很好地应对。 – vadishev

回答

0

git svn initgit svn clone旨在连接到现有的SVN回购,所以我建议以下。

  1. 建立一个空的SVN回购
  2. 设置了svn git clone
  3. 一个新的git回购本地​​git仓库拉入新的
  4. 执行分支的git svn dcommit要与分享SVN回购

另一种完全不同的方法是使用Git和SVN在相同的工作文件。您只需确保分别忽略.git和.svn dirs。然后你使用git命令来执行SVN的git和SVN命令。

当然,使用这种方法,您必须手动同步每个提交手动您想要在两个回购中,但如果你不在乎所有提交在这两个回购这可能就足够了。

1

我认为SubGit是要走的路。

问题是,SubGit将自己的挂钩安装到Subversion和Git存储库中。所以,我怀疑是否有可能为托管提供商设置,比如sourceforge或google代码。

如果你创建自己的Subversion版本库,这不是什么大不了的设置,即使读写镜SubGit:

  1. 创建Subversion库:

    $ svnadmin create $SVN_REPO 
    
  2. 克隆Git仓库:

    $ git clone --mirror $GIT_REMOTE_REPO $GIT_REPO 
    
  3. 配置SubGit:

    $ subgit configure $SVN_REPO 
    
  4. 调整SubGit配置文件:

    # Specify 'git.default.repository = $GIT_REPO' 
    #  at $SVN_REPO/conf/subgit.conf 
    
  5. 添加作家映射:

    # Add all the authors as 
    # svnauthor = Git Author <[email protected]> 
    #  into $SVN_REPO/conf/authors.txt 
    
  6. 安装SubGit到Subversion版本库:

    subgit install $SVN_REPO 
    

安装完成后,您可以克隆$ GIT_REPO作为另一个远程服务器,并推送到此存储库以获取所有提交转换为Subversion存储库。

可以将更改提交到Subversion存储库,SubGit将它们自动转换为Git提交,因此您可以将它们提取回来。

SubGit是一个商业项目,但它对开源项目是免费的。欲了解更多详情请参阅SubGit documenationgit-svn比较。

相关问题