1

我想知道是否支持以下愿望:在客户端,即在我的工作目录空间中,我不想从目录树中获得一对一的工作副本(resp . 一个子树)在服务器上找到。相反,我想有一个特定的观点,例如

take directory1 from the repos, check it out here under ./mydirectory1
take directory2 from the repos, check it out here under ./mydirectory2

像这样的东西。我认为 CVS 的“模块”功能已经/能够做到这一点。

svn中是否有类似的东西?

PS:我知道 :externals: 属性。但这不是我想要的,因为这要求单个客户/用户必须做正确的事情,将外部设置正确。我更喜欢这种配置只完成一次,这样用户就可以对签出的东西有相同的看法。

PPS:我可以想象,只要所有内容都在同一个存储库/工作目录中,符号链接就会达到我想要的效果,因为那时链接可以使用相对路径。(我不知道符号链接是否是跨不同文件系统的强大解决方案)

4

2 回答 2

1

从存储库中,您无法指定用户在何处/如何签出他们的工作副本。您可以获得的最接近的方法是创建一个“元”目录,其中没有任何项目,但通过svn:externals. 如果您不能信任您的用户正确使用系统,您需要更好地培训您的用户,获取新用户,或安装挂钩脚本来检查提交并拒绝任何不符合要求的提交。

符号链接不适用于任何使用 Windows 的客户端。

于 2013-06-26T11:32:20.270 回答
0

外部实现您想要的正确方法。您需要将根目录添加到存储库:

svn mkdir file:/path/to/repos/root

然后检查一下:

svn co file:/path/to/repos/root root -m"Creating root directory"

添加适当的外部定义:

svn propedit svn:externals root

这将在一个空文件上打开您的编辑器,您应该在其中添加:

mydirectory1 file:/path/to/repos/directory1
mydirectory2 file:/path/to/repos/directory2

提交您的更改:

svn commit root -m"Added externals to root"

如果现在运行更新:

svn update root

directory1和的内容directory2应检查为root/mydirectory1root/mydirectory2

让您的用户签出file:/path/to/repos/root,他们还将获得您的附加目录。

于 2013-06-26T12:02:11.440 回答