基本上,有两个不同的Svn服务器,每个服务器被不同的组使用,都在同一个项目上工作。我正在尝试找到一种使用 svn 的功能合并更改的方法。
为了进行测试:我在本地创建了两个存储库(file:///D:/FirstRepo
和file:///D:/SecondRepo
),并像项目一样添加了相同的文件(test.txt
)。更改第一个存储库中的文件后,我创建了一个补丁并将该补丁应用于其他存储库。它无法正常工作。如果这两个文件不同步(文件内容完全相同),则创建的修补程序为空。
那么,应该选择什么样的方式来实现这一目标呢?我的方式是好方法吗,它是可开发的吗?
提前谢谢。
注:
- TortoiseSVN用于SVN客户端。
- 两个 svn 服务器都已关闭,无法从外部连接。
-- 回应您的最后一条评论。
哦,如果是这样的话,那么是的,我绝对有适合您的解决方案。我以为你的想法有些不同。
即使您的团队不通信,您仍然可以在同一存储库下托管代码,即使您在同一存储库下托管两个团队,您也可以授予组对特定目录的访问权限/阻止访问权限,他们永远不会看到其他目录。
Subversion 支持基于路径的授权,你基本上采用一组组,并根据需要授予它们对目录的权限。
因此,假设您有两个组:team-one
和team-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
访问trunk
和tags
。team-two
将无法访问 trunk 下的任何这些文件。
但是,在开发周期中,会定期"发布"代码以供team-two
使用。然后,您可以在某个修订版上为trunk
制作标签,并将其复制到tags
目录中。team-two
可以读取标签,他们可以将更改提取到branches
下的任何代码中,除了他们之外没有人可以访问。
这将涵盖您要完成的几乎所有内容:
- 为某些用户锁定目录
- 将更改从一个项目合并到下一个项目