如何跨多个位置协作源代码

时间:2010-07-21 09:01:38

标签: svn version-control build

我们的本地网络中有一个运行gforge实例的VMWare映像。我们希望一些外部人员成为开发过程的一部分。我们希望将此存储库保留为主SVN存储库。有哪些选项可用于与外部资源共享代码并将其合并回本地存储库。

其他选择可能是完全在我们的网络之外托管(在某些托管服务提供商上),这是不可接受的,因为它允许员工访问我们网络外的代码。

我正在寻找解决此问题的建议。

5 个答案:

答案 0 :(得分:6)

SVN不是分布式VCS。如果您想坚持使用SVN,那么除了让他们以某种方式从外部访问您的本地服务器之外,您将没有其他选择。

如果您希望他们能够提交一个与您的内部服务器没有物理连接的独立外部存储库,并将他们的更改手动合并到中央存储库,您需要查看分布式VCS,如{ {3}}或Git

答案 1 :(得分:2)

Subversion是一个集中式(与分布式)版本控制系统。它旨在通过对唯一的存储库执行并发操作来允许协作。所以你基本上有两个选择:

  1. 坚持集中版本控制并允许外部访问存储库(大多数路由器和防火墙允许重定向特定端口,因此它不应该是一个大问题。)
  2. 切换到分布式版本控制(Git,Mercurial,Bazaar ......)。
  3. 其他任何事情都是一个复杂的解决方法。

答案 2 :(得分:1)

  • 您可以设置VPN并让它们 直接提交给主人。
  • 您可以切换分布式 VCS就像Git。
  • 您可以为他们设置另一个SVN 并合并它们。我想那会 令人头痛。

答案 3 :(得分:1)

对你来说一个重要的考虑应该是:

如果您正在寻找开发人员的工作并定期对他们的代码进行更改 - 那么SVN就是好的。

如果您正在寻找那些自己在大块上工作的开发人员,并希望在确定他们所使用的内容的完整性后合并他们的代码库 - 请使用Git或Mercurial。

我还想补充一点,即使持续集成,Git也能做得很好,但是,如果您的开发人员更熟悉基于SVN的工具,那么它可能不是 招致让他们学习新工具的开销。

答案 4 :(得分:0)

单独的分布式VCS(Git,Mercurial,Bazaar)存储库可以具有提交挂钩,用于向网守(具有svn访问权限的人)发送补丁以合并分布式开发人员贡献。

分布式VCS上的更新/克隆/检出挂钩也可以从svn repo更新/拉/合并,使您的分布式VCS与svn同步。

这种方法可以维护您的svn服务器以及适用于您的工作流和备份过程。只有新的分布式开发人员必须学习新的VCS(Bazaar,Git等)。

我现在必须在项目上执行此操作,并将更新详细信息。