使用Git&;以Git为中心服务器的SVN

使用Git&;以Git为中心服务器的SVN,svn,git,git-svn,Svn,Git,Git Svn,我的公司使用Git进行版本控制,但我们正在与另一家使用SVN的公司合作一个项目(他们拒绝使用Git)。我需要将我们的Git服务器设置为中心服务器,并以某种方式提供对它的SVN访问。我知道git svn非常适合使用git,而svn是中央服务器,但是如何提供svn对git存储库的访问 注意:我看到Github现在提供了对其Git存储库的SVN访问。有人知道他们是怎么做到的吗?我能想到的一个粗略的方法是在你的网络中设置一个svn存储库,从那里使用git svn进行签出,将真实的gitrepo`添加为远

我的公司使用Git进行版本控制,但我们正在与另一家使用SVN的公司合作一个项目(他们拒绝使用Git)。我需要将我们的Git服务器设置为中心服务器,并以某种方式提供对它的SVN访问。我知道git svn非常适合使用git,而svn是中央服务器,但是如何提供svn对git存储库的访问


注意:我看到Github现在提供了对其Git存储库的SVN访问。有人知道他们是怎么做到的吗?

我能想到的一个粗略的方法是在你的网络中设置一个svn存储库,从那里使用
git svn
进行签出,将真实的
git
repo`添加为远程,从那里拉入svn远程。我不知道它是否能工作或可靠,但它应该能制造出某种镜子。您可以使用一些钩子同步您的一侧,这些钩子在推送更新SVN镜像时被踢入。至于另一种方法(当您的客户机提交到SVN存储库时),您必须考虑其他方法

好的,我将用一个糟糕但可行的答案来回答我自己的问题(imo)。我可以使用标准补丁文件在我们两家公司之间发送更改。我的经理认为这是一个可以接受的解决方案,但我真的不喜欢它


编辑:作为对Noufal Ibrahim的回应,我认为通过结合使用钩子脚本,我实际上可能有一个自动化的解决方案,它可能会真正起作用。博客对使用裁缝设置SVN镜像有很好的描述。

是的,您可以使用:

创建空的SVN存储库

$ svnadmin create path/for/svn/repository
使用SubGit将其配置为与Git存储库链接:

$ subgit configure path/for/svn/repository
$ #edit path/for/svn/repository/conf/subgit.conf to set git.default.repository (absolute or relative path to your bare Git repository)
开始连续同步:

$ subgit install path/for/svn/repository
因此,SVN和Git接口都是可读写的


据我所知,GitHub使用了另一种方法:他们实现了一个SVN接口,可以动态访问Git。这种方法有其自身的优点和缺点。

Github使用内部开发的SVN到Git网关。到目前为止,他们对释放消息来源保持沉默;我怀疑他们会的。再了解一点背景:我们正在使用gitolite作为git服务器。也许有人应该请求/帮助gitolite提出解决方案?这显然不是一个有效的答案,但我会告诉他们,“很难,你正在使用git进行这个项目。”@haydenmuhl-我喜欢!不幸的是,我认为这不会奏效,要么他们正在使用git,要么他们没有获得合同。是的,我曾想过使用挂钩作为同步SVN和git的一种方式,但它似乎非常容易出错,所以我希望有人有这样做的经验。嗯,你有一个奇怪的问题,所以…:)好吧,有,这可能会让你的生活更轻松。这是一个很好的选择。我希望它在1.5年前可用:(