Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git/svn-保持两个具有不同访问权限的存储库的同步_Git_Svn_Git Svn - Fatal编程技术网

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

Git/svn-保持两个具有不同访问权限的存储库的同步,git,svn,git-svn,Git,Svn,Git Svn,网上有太多的信息让我无法理解,也无法获得自己的照片,所以我温和地请求社区为我的旅程提供光明 我的情况: 我们公司的防火墙后面有一台SVN服务器。无法移动到非军事区 我们需要一些第三方(我们的客户机)从远程位置访问部分源代码,因为他们对开发有贡献。但是他们不是我们公司的,所以我不能为他们提供VPN访问。我需要他们不仅能够读取源代码,而且能够提交更改 我们的SVN回购包含我们的所有产品。我只想让我的客户访问一些文件夹 我的公司非常不愿意让我们购买一个私人GitHub帐户。。。出于安全原因,而不是成

网上有太多的信息让我无法理解,也无法获得自己的照片,所以我温和地请求社区为我的旅程提供光明

我的情况:

  • 我们公司的防火墙后面有一台SVN服务器。无法移动到非军事区
  • 我们需要一些第三方(我们的客户机)从远程位置访问部分源代码,因为他们对开发有贡献。但是他们不是我们公司的,所以我不能为他们提供VPN访问。我需要他们不仅能够读取源代码,而且能够提交更改
  • 我们的SVN回购包含我们的所有产品。我只想让我的客户访问一些文件夹
  • 我的公司非常不愿意让我们购买一个私人GitHub帐户。。。出于安全原因,而不是成本
我们尝试了几个月,但由于需要手动同步,因此无法正常工作:

  • 在线租用虚拟机。安装Git服务器。为我们的开发人员和客户提供访问权限
  • 对减少的要共享的svn文件夹进行初始签出
  • 我们都在工作:要么改进这些文件夹中的代码,要么创建新的源代码和文件夹
  • 我们的开发人员应该手动更新/提交两份回购协议。。。这确实发生了
所以我正在寻找自动同步的解决方案,但要记住访问权限。。。 我看过这个。。。对我有用吗

另一个担忧是,我们公司将在明年将所有SVN迁移到Git。。。 我可以预见到这一点,并运行我们自己的git服务器而不是SVN,但它必须放在防火墙后面。然后我失去了“克隆”、“镜像”方面的功能,无法维护正确的访问权限


在这种分布式体系结构方面,您能为我们提供什么解决方案/建议?

不,git svn在一般情况下不会自动顺利工作。主要问题是git-svn'ed提交将获得不同的SHA,如果git和svn双方的更改率都很高,那么保持双方的同步将成为一项具有挑战性的手动任务


如果您可以将更改限制为仅从git到svn,那么通过类似于Mykola Gurov的回答所解释的那样的技术来保持同步可能是可行的,
git svn在这种情况下可能不起作用

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

  • 允许开发人员使用(适当保护的)反向HTTP代理访问您的SVN服务器。代理必须暴露于internet(或远程开发人员的专用VPN),因此需要登录并通过HTTPS运行
  • 为远程开发人员设置SVN用户帐户
  • 在SVN服务器上,设置为远程开发人员只能读取和提交他们应该读取和提交的内容

这将需要一些手动设置工作,但它应该可以工作,并且是安全的。

这可能会在@PatrickQuirk上得到更好的响应:实际上,我认为更多的是关于这个主题。是的,这是一个关于“专业系统和网络管理员”的问题,但这也是一个关于软件开发工具的问题,这是本文的主题。因为它实际上更多的是关于版本控制的细节,我觉得它在这里更合适。我不清楚的一件事是:如果我将所有代码托管在一个新的git服务器上,我可以允许我的客户端(特定用户)只分叉一些子文件夹吗?然后发送合并/集成请求?@DamienSalle我不是在争论它是否在主题上,只是为了得到更好的响应。主要是因为最后一句话暗示您需要帮助建立一个分布式系统,服务器故障社区可能会更快地回答这个问题。