2012-02-22 79 views
0

我有一个只有一些公共目录的Subversion树。最后一个目录仅适用于用户“我”。强制svn用户和更新与私人子目录结帐

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

当我做的trunk结帐,我得到/public1/public2,但不/private1。我没有要求我的凭证,因为Subversion认为它可以自动检出公共目录。

  1. 我该如何强制Subversion检查这个目录为“我”,这样我才能得到所有的目录?我曾以为这将会像在命令行上添加--username一样简单---但这不起作用!
  2. 但是如果我已经检查过这个目录结构并且只有公共目录呢?我已经转而使用“我”了,因为我可以做没有问题的提交。但无论我做什么,/private1目录不显示。我怎样才能更新我的私人目录的本地副本?

是什么让这个更奇怪的是,我可以做(目录内):

svn update private1 

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

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

[groups] 
developers=me 

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

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

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

回答

0

请参阅Subversion手册中的section on path-based authorization。具体来说,阅读页面上的最后一个灰色框。

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

使用网络浏览器浏览源代码完全不同,因为每次加载新页面时服务器都会要求进行身份验证。