是否有一个程序可以执行git-svn的功能,但是在服务器上的存储库是git并且开发人员使用svn的情况下?
我知道github.com允许svn访问他们托管的git存储库,但看起来他们没有发布这个项目开源(但是?),并且使用他们的服务器对我来说不是一个选择(甚至不是他们的私人仓库)。
编辑:我认为我正在寻找的是与'git-cvsserver'并行 - git-svnserver。在一些搜索中,我在git邮件列表中找到了一些2-3岁的线程,但看起来并没有任何人取得重大进展。我希望有人可以纠正我。目前是否有任何git-svnserver项目正在进行中?我讨厌重复努力,但似乎GitHub is the farthest along,但没有其他人可以拥有它。
答案 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代码:
答案 2 :(得分:2)
SVNGit正是您想要的。它是一个用于SVN客户端访问Git存储库的开源servlet库。
答案 3 :(得分:0)
我认为git-svn
链接是由git驱动的(监视 - rebase或dcommit - 一个SVN分支)。
这意味着您可以首先在本地服务器上克隆您需要的任何git仓库(您也使用SVN),并将其用于本地Git仓库和SVN工作区之间的“git-svn
”命令。
一旦您的本地Git仓库充分反映了您的SVN仓库,您就可以回到远程Git服务器。