强制svn用户并使用私有子目录更新结帐

时间:2012-02-22 22:50:31

标签: svn svn-checkout

我有一个只有一些公共目录的Subversion树。最后一个目录仅供用户“我”使用。

/trunk/public1
/trunk/public2
/trunk/private1

当我结帐trunk时,我会获得/public1/public2,但不会/private1。我没有被要求提供我的凭据,因为Subversion认为它可以自动检出公共目录。

  1. 如何强制Subversion将此目录检出为“我”,以便我可以获取所有目录?我原以为这就像在命令行中添加--username一样简单---但这不起作用!
  2. 但是如果我已经检查过这个目录结构并且只有公共目录呢?我已经切换到使用“我”,因为我可以做没有问题的提交。但无论我做什么,/private1目录都不会出现。如何使用私人目录更新本地副本?
  3. 这让我更奇怪的是我可以(在目录中):

    svn update private1
    

    和Subversion显然成功,没有错误或警告---但我仍然没有得到目录。 (当然我也可以更新private2,它不存在,但仍然没有错误或警告,所以我想这并不意味着什么。)

    以下是我在Apache上的Subversion授权文件的相关部分:

    [groups]
    developers=me
    
    [foo:/trunk]
    @developers=rw
    *=r
    
    [foo:/trunk/private1]
    @developers=rw
    *=
    

    我可以通过WebDAV浏览器/trunk/private1使用我的浏览器就好了(在我为用户“我”输入正确的凭据后)。

1 个答案:

答案 0 :(得分:0)

请参阅Subversion手册中的section on path-based authorization。特别是,请阅读页面上的最后一个灰色框。

根据这些信息,看起来服务器看到它可以在没有凭据的情况下检出根文件夹,然后匿名进行整个结账。由于您只有一次机会进行身份验证,因此当您访问私人目录时,您仍然是匿名的,因此您无法获得它们的副本。如果需要获取此类受访问保护的目录,请使用初始 --username命令中的svn checkout选项。我不知道你可以checkout使用一组凭据进入使用一组不同凭据签出的工作副本中间的文件夹(这样做会使svn commit混淆,因为每个提交只能有一个作者)。

使用网络浏览器浏览源代码完全不同,因为服务器可以在每次加载新页面时请求身份验证。