2012-02-22 77 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混淆,因爲每個提交只能有一個作者) 。

使用網絡瀏覽器瀏覽源代碼完全不同,因爲每次加載新頁面時服務器都會要求進行身份驗證。