创建并应用"补丁"两个不同的SVN服务器之间?

时间:2018-01-31 10:24:18

标签: svn version-control tortoisesvn

基本上,有 两个 不同的Svn服务器,并且不同组使用的每个服务器正在处理 相同的 < / strong>项目。我试图找到一种方法来使用svn的功能合并更改。

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

那么,应该选择哪种方式来实现这一目标?我的方法是好的方法,是否可以开发?

提前致谢。

注意

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

1 个答案:

答案 0 :(得分:1)

- 回应您的上次评论。

哦,如果是这样,那么是的,我绝对有一个解决方案。我以为你心里有些不同。

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

Subversion支持Path Based Authorization,您基本上可以使用一组组,并在需要时为他们授予权限。

因此,假设您有两个小组: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下的任何代码中,除了他们之外,没有人可以访问这些代码。

这几乎涵盖了你想要完成的所有事情:

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