Git / svn - 保持同步两个具有不同访问权限的存储库

时间:2014-10-29 14:39:01

标签: git svn git-svn

网上有太多的信息让我无法理解并能够自己拍照,所以我轻轻地请社区为我的旅程提供亮点......

我的情况:

  • 我们公司内部的防火墙后面有一台SVN服务器。无法迁移到DMZ。
  • 我们需要一些第三方(我们的客户)从远程位置访问部分源代码,因为他们正在为开发做出贡献。但他们不是来自我们公司,所以我不能为他们提供VPN访问。我需要他们不仅能够阅读源代码,还能提交更改。
  • 我们的SVN回购包含我们所有的产品。我想只允许访问我的客户端的一些文件夹。
  • 我的公司非常不愿意让我们购买私人GitHub帐户...出于安全考虑,而非费用......

我们正在尝试以下几个月,但它只是不起作用,因为它需要手动同步:

  • 在线租用虚拟机。安装Git服务器。提供对我们的开发人员和客户的访问。
  • 初步检查我要分享的减少数量的svn文件夹。
  • 我们都在工作:要么改进这些文件夹中的代码,要么创建新的源代码和文件夹。
  • 我们的开发人员应该手动更新/提交两个回购......而这确实发生了......

所以我正在寻找自动同步的解决方案,但要记住访问权限...... 我已经看到了......这对我有用吗? http://git-scm.com/docs/git-svn

另一个担心是我们公司将在明年将我们所有的SVN迁移到Git ...... 我没有预料到这一点并运行我们自己的git服务器而不是SVN,但它必须保留在防火墙后面。然后我迷失了"克隆","镜像"方面和维护正确的访问权限......

您可以就此分布式架构提供哪些解决方案/建议?

2 个答案:

答案 0 :(得分:1)

不,git-svn在通用情况下无法自动平滑地工作。主要问题是git-svn'ed提交将获得不同的SHA,如果git和svn两方面的变化率很高,那么这将使双方同步成为具有挑战性的手动任务。

如果您可以将更改限制为仅从git转到svn,则可以通过类似于How to deal with a git that has git-svn and pure git remotes的技术维护同步

答案 1 :(得分:0)

正如Mykola Gurov的回答所解释的那样,git svn在这种情况下可能不起作用。

但是,你应该能够在没有git的情况下解决这个问题:

  • 使用(正确安全的)反向HTTP代理,让开发人员只访问您的SVN服务器。代理必须暴露给互联网(或远程开发人员的专用VPN),因此需要登录并通过HTTPS运行。
  • 为远程开发人员设置SVN用户帐户。
  • 在SVN服务器上,设置Path-Based Authorization,使远程开发人员只能读取和提交他们应该去的地方。

这需要一些手动设置工作,但它应该有效并且安全。