在两个不同的SVN服务器之间创建和应用"patch"?



基本上,有两个不同的Svn服务器,每个服务器被不同的组使用,都在同一个项目上工作。我正在尝试找到一种使用 svn 的功能合并更改的方法。

为了进行测试:我在本地创建了两个存储库(file:///D:/FirstRepofile:///D:/SecondRepo),并像项目一样添加了相同的文件(test.txt)。更改第一个存储库中的文件后,我创建了一个补丁并将该补丁应用于其他存储库。它无法正常工作。如果这两个文件不同步(文件内容完全相同),则创建的修补程序为空。

那么,应该选择什么样的方式来实现这一目标呢?我的方式是好方法吗,它是可开发的吗?

提前谢谢。

  • TortoiseSVN用于SVN客户端。
  • 两个 svn 服务器都已关闭,无法从外部连接。

-- 回应您的最后一条评论。

哦,如果是这样的话,那么是的,我绝对有适合您的解决方案。我以为你的想法有些不同。

即使您的团队不通信,您仍然可以在同一存储库下托管代码,即使您在同一存储库下托管两个团队,您也可以授予组对特定目录的访问权限/阻止访问权限,他们永远不会看到其他目录。

Subversion 支持基于路径的授权,你基本上采用一组组,并根据需要授予它们对目录的权限。

因此,假设您有两个组:team-oneteam-two,正如您所说,这两个团队只能访问这些特定目录。如果设置 authz 文件授权,则可以显式设置存储库中所有目录的权限,因此,您只需要一个存储库。

[groups]
admins = krezus
team-one = chris, john
team-two = jim, ted
[RepoName:/MyProject]
@admins = rw
[RepoName:/MyProject/trunk]
@team-one = rw
[RepoName:/MyProject/branches]
@team-two = rw
[RepoName:/MyProject/tags]
@team-one = rw
@team-two = r

在此快速示例中,你是管理员。因此,您可以访问下的所有内容RepoName/MyProject.team-one作为主要开发团队,他们read-write访问trunktagsteam-two将无法访问 trunk 下的任何这些文件。

但是,在开发周期中,会定期"发布"代码以供team-two使用。然后,您可以在某个修订版上为trunk制作标签,并将其复制到tags目录中。team-two可以读取标签,他们可以将更改提取到branches下的任何代码中,除了他们之外没有人可以访问。

这将涵盖您要完成的几乎所有内容:

  • 为某些用户锁定目录
  • 将更改从一个项目合并到下一个项目