2011-08-05 1051 views
1

我對SVN很新穎,它一直讓我瘋狂!這裏的基本問題:你如何讓SVN忽略寫保護目錄?

我已經在一個允許用戶上傳源代碼的網站上工作。在一個名爲「提交」的子目錄中,所有上傳都被存儲。 雖然網絡服務器對提交的寫入權限有限制,但我沒有。我在我的php和文本文件上使用SVN進行版本控制,但它一直處於鎖定狀態。如果可能的話,我希望SVN保留上傳提交的檔案,我不介意由於文件許可而無法恢復它們。

問題是SVN保持鎖定,它告訴我清理,清理告訴我「提交」不是工作副本目錄,我不允許提交更改,刪除文件或執行其他任何正常工作流程。有什麼建議麼?

[[email protected] ~]$ svn commit -m "added report" 
svn: Working copy '/var/www/sites/testPortal' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 
[[email protected] ~]$ svn cleanup 
svn: 'submissions' is not a working copy directory 
[[email protected] ~]$ svn remove submissions 
svn: Working copy '.' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 
[[email protected] ~]$ ls -la submissions 
total 32 
drwxrwxrwx 7 nginx nginx 4096 Aug 4 03:22 . 
drwxrwxrwx 10 root root 4096 Aug 5 01:36 .. 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 00:04 114 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 02:10 116 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 02:40 117 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 02:15 118 
drwxr-xr-x 2 nginx nginx 4096 Aug 4 03:22 119 
-rw-r--r-- 1 nginx nginx 1 Aug 4 01:51 uploads.txt 

回答

2

也許最簡單的是所有這些文件執行chgrp一組你在,然後更改權限給自己寫訪問(G + W)。使用權限2775作爲目錄,它將添加組sticky位,因此在該目錄中創建的所有文件都將擁有目錄組 - 即使創建者(本例中爲nginx)不在該組中。

+0

我無權更改其羣組或權限 –

+0

+1您以簡單的方式解釋了這一點。 很多人一開始就很難理解這個概念,你的解釋很好。 – stefgosselin

+0

@ mark-wilbur實際上你可能會做,除非你必須通過網絡服務器來完成。運行一些PHP代碼,或者你使用的任何東西,然後在那裏做改變。您可能只需要擁有.svn目錄。如果是這樣,首先讓webserver將根目錄更改爲777,然後創建一個由您擁有的.svn,然後更改根目錄。一旦.svn是可寫的,顛覆應該是可以的。然而,你將需要在每個目錄中有一個.svn,而不僅僅是根目錄。 – Ariel

1

如果問題是您希望某些文件超出版本控制範圍,您可以在保存所需目錄的目錄中設置svn:ignore屬性。

你也可以查看這個見地SO question,有很多的似乎有點關係到你的問題好點

+0

這是一件很好的事情要知道。如果正確理解,svn將不再存檔提交。有沒有辦法告訴svn在目錄上是隻讀的? –

+0

好吧,取決於服務器的設置,也許是這樣。根據svn * serverside *配置,svn使用基於用戶的方法,因此,如果您正在使用的是用戶,那麼可以創建用戶並提供只讀訪問權限。閱讀免費的svn圖書,它是一個簡單的閱讀,完全值得,如果你使用svn。 – stefgosselin