RW使用svn(git-svnserver)访问git存储库?

时间:2010-09-07 19:45:41

标签: svn git version-control git-svn

是否有一个程序可以执行git-svn的功能,但是在服务器上的存储库是git并且开发人员使用svn的情况下?

我知道github.com允许svn访问他们托管的git存储库,但看起来他们没有发布这个项目开源(但是?),并且使用他们的服务器对我来说不是一个选择(甚至不是他们的私人仓库)。

编辑:我认为我正在寻找的是与'git-cvsserver'并行 - git-svnserver。在一些搜索中,我在git邮件列表中找到了一些2-3岁的线程,但看起来并没有任何人取得重大进展。我希望有人可以纠正我。

目前是否有任何git-svnserver项目正在进行中?我讨厌重复努力,但似乎GitHub is the farthest along,但没有其他人可以拥有它。

4 个答案:

答案 0 :(得分:10)

看看SubGit

SubGit 是服务器端解决方案,它允许Subversion访问Git存储库,反之亦然。您可以参考documenation了解更多详情,但一般情况下使用 SubGit 非常容易:

SubGit需要本地访问您正在推送的Git存储库。在同一台机器上创建Subversion存储库:

    $ svnadmin create $SVN_REPOS

然后运行

    $ subgit configure $SVN_REPOS

此命令创建$SVN_REPOS/conf/subgit.conf文件,调整其git.default.repository选项,如下所示:

    [git "default"]
    repository = /path/to/your/git/repository.git

您可以指定许多同步到单个Subversion存储库的Git存储库,只需添加必要的[git "identifier"]部分。

您还可以指定任意存储库布局,例如标准的看起来像这样:

    trunk = trunk:refs/heads/master
    branches = branches/*:refs/heads/*
    shelves = shelves/*:refs/shelves/*
    tags = tags/*:refs/tags/*

您还可以调整$SVN_REPOS/conf/authors.txt以将svn作者姓名映射到git身份。

在那之后:

    $ subgit install $SVN_REPOS
    $ ... let initial translation complete ... 
    $ TRANSLATION SUCCESSFUL

此时你有Subversion资源库及其Git对应资源,它们会不断同步,即SubGit会立即将svn版本转换为每个svn commit上的git commit,并将git commit转换为每个git push上的svn版本。

因此,您可以对创建的Subversion存储库提交更改,并使所有更改与主Git存储库保持同步。

答案 1 :(得分:4)

这是通过svn协议提供git存储库的Python代码:

http://git.q42.co.uk/git_svn_server.git

答案 2 :(得分:2)

SVNGit正是您想要的。它是一个用于SVN客户端访问Git存储库的开源servlet库。

答案 3 :(得分:0)

我认为git-svn链接是由git驱动的(监视 - rebase或dcommit - 一个SVN分支)。
这意味着您可以首先在本地服务器上克隆您需要的任何git仓库(您也使用SVN),并将其用于本地Git仓库和SVN工作区之间的“git-svn”命令。

一旦您的本地Git仓库充分反映了您的SVN仓库,您就可以回到远程Git服务器。