如何在subversion存储库之间设置单向合并

时间:2012-08-07 16:02:02

标签: svn

我们目前有一个由外包公司开发的软件,该软件正在我们服务器上的SVN存储库中签入。我们将很快结束我们对他们的控制,并引入了一些开发人员(包括我自己)来接管开发。我们已经获得了一个单独的SVN回购。

外包公司不应该看到我们团队提交的更改,但我们需要接收他们输入的更改。 有没有人知道我们可以设置我们的SVN服务器的方式,以便他们的更改被提交到我们的存储库(立即或每天或其他),而不会覆盖我们的更改。 我很乐意根据需要手动审查任何合并冲突。

任何答案都将受到赞赏,设置,批处理文件或支付包含的产品。

3 个答案:

答案 0 :(得分:1)

您需要Vendor Branches。让外包公司只能访问供应商'您的存储库的一部分(如果他们使用http访问,那么您可以锁定.htaccess文件中的权限,以便他们只能访问此目录)。此位置仅包含他们提交给您的代码。

然后,您在SVN的其他位置创建一个区域,您可以使用它们提供的代码进行初始化。我们称之为第三方'目录。您可以自己进行更多更改,但外包商无法查看此目录。如果外包商在供应商区域中进行了新的更改,那么您将需要使用“供应商分支”链接中描述的命令将这些更改合并到您的第三方区域。与其他颠覆合并一样,如果更改不会与您自己做出的更改发生冲突,那么合并非常简单。如果存在冲突,则需要以通常的方式手动解决它们。

答案 1 :(得分:1)

我没有玩过这个,这只是一个想法。

有svnrdump实用程序可以转储远程存储库。如果您将持续将此信息加载到您的存储库中,那么您将能够进行任何分支/合并。

主要的问题是svnrdump用于填充 new 存储库中的信息,而不是现有的信息,因此可能需要对转储内容进行一些操作......它们可能不是一件容易的事 - 你会可能以某种方式存储修订函件。

我也看到了svn2svn(http://svn2svn.codeplex.com)工具,但似乎对操作的支持有限而且没有非常积极地开发......

答案 2 :(得分:1)

谢谢你们,我们设法用以下过程解决了这个问题。 每天我们从外部svn获取转储文件,外包商可以访问并将其应用到我们内部SVN的主干。

我们同时一直在从svn的一个分支上工作并在那里进行所有的更改。

然后我们将分支合并回主干并解决任何冲突。

然后我们分出一个新的分支来工作,等到第二天。

外包商SVN不会受到影响,我们会在不失去自己的情况下获得最新的更改而且不会花费太多精力 - 而且由于它主要由svn控制,因此人为错误的可能性会降低。