使用svn访问git仓库(git-svnserver)的读写权限是什么?

16

有没有一款类似git-svn的程序,但适用于服务器上的仓库是git,而开发者使用svn的情况?

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

编辑:我认为我正在寻找与'git-cvsserver'相对应的项目-- git-svnserver。在搜索了一些2-3年前的git邮件列表线程后,看起来没有人取得重大进展。希望有人能纠正我。

目前是否有任何git-svnserver项目正在进行?我不想做重复的工作,但似乎GitHub最先进,但其他人无法使用。

4个回答

10

看一下SubGit

SubGit是一种服务器端解决方案,它使得Subversion可以访问Git存储库,反之亦然。您可以参考文档了解更多细节,但总的来说,使用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

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

您还可以指定任意的存储库布局,例如标准布局如下:

    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提交,并在每个git push上将git提交转换为svn修订版本。

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


谢谢分享!我会关注它的进展,并希望到它准备好投入生产时,我的公司也准备好尝试它。 - Nate Parsons

4

下载失败 :( 有没有镜像?我很感兴趣接手这个项目。 - Stefan Mai
网站已经上线,但是最后一次提交是20个月前。 - iGEL
1
这看起来非常有用,但是没有文档。有人知道有没有示例、教程或至少 README 吗? - nweiler

2

SVNGit 是你所需要的。它是一个开源的servlet库,供SVN客户端访问Git仓库。


0

我认为git-svn链接是由Git驱动的(用于监视--重新基于或dcommit--SVN分支)。

这意味着您可以首先在本地服务器上克隆所需的任何Git存储库(在那里您也使用SVN),并将其用于本地Git存储库和SVN工作区之间的'git-svn'命令。

一旦您的本地Git存储库充分反映了您的SVN存储库,您就可以将其推回远程Git服务器。


我不确定这个程序是否符合我的需求。这只是为了我的同事们而设计的,因为他们不想切换到 Git,因为他们现在在 SVN 中所做的所有操作都是 checkout / update / commit。如果他们确实需要进行更多操作,有人可以帮助他们学会如何使用 Git。 - Nate Parsons
@drhorrible:这仍然可能是一个解决方案:像git2svn这样的脚本(也可以参考https://dev59.com/bHRB5IYBdhLWcg3wn4UL#572898)可以为他们设置SVN历史记录,然后Git存储库就可以在将其推回其他Git用户之前,在本地Git存储库中获取他们的SVN工作。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接