2010-08-20 67 views
1

首先這一切都在Mac OS X上完成,版本10.6.4爲什麼我不能從命令行刪除.svn目錄中的條目文件?

我複製了一個文件樹,其中包含一些已經被顛覆檢出的java代碼。我想刪除該樹中的所有.svn文件。所以我用下面的命令:

find . -name .svn -exec rm -fr .svn {} \; 

而且我得到了這樣的消息:

rm: ./repository/entity/.svn: Directory not empty 

我的目錄看,它看起來像這樣:

$ ls -ld . 
-r--r--r-- 1 tgia staff 1250 Aug 13 10:48 entries 

和父目錄對於該文件看起來像這樣:

$ ls -ld . 
drwxr-xr-x 4 tgia staff 136 Aug 20 16:55 . 

確定,更改文件的權限:

$ chmod u+w entries 
chmod: Unable to change file mode on entries: Operation not permitted 

我不明白這一點,這是怎麼回事這些文件?沒有我用chmod嘗試似乎更改文件權限。文件所有權是正確的。我是tgia。 WTF?即使是root也不能改變它們。

$ sudo chmod u+w entries 
Password: 
chmod: Unable to change file mode on entries: Operation not permitted 

幸運的是root可以刪除它們......

+1

你爲什麼要在這裏刪除所有'.svn'迪爾斯? 'svn export'是一個更清潔的選擇。 – Ether 2010-08-21 02:22:36

回答

6

我除了通常的rwx標誌,OSX有一個特殊的UCHG標誌。這可能是你碰到的。

在用戶界面中,您可以在「獲取信息」窗口中設置或取消設置。點擊「鎖定」複選框。請使用chflags uchg filename來設置它。或者chflags nouchg filename未設置。

在Windows上設置只讀標誌的文件將在通過smb交換時顯示設置的uchg標誌。這就是我遇到它的原因。

2

我不知道你的命令行是完全正確的。嘗試:

find . -name .svn | xargs rm -rf 

我覺得你的命令行會嘗試執行命令,如:

rm -fr .svn subdir1/.svn 
rm -fr .svn subdir2/.svn 

也就是說,你得在那裏額外.svn

2

find . -name .svn -exec rm -fr .svn {} \;

應該

find . -name .svn -exec rm -fr {} \;

+0

是的,其實我打錯了,我用的命令是 找不到。 -名稱 。svn -exec rm -fr {} \; 並且不會刪除條目... 只有當我刪除名爲entry的文件作爲root用戶時,它才起作用。很奇怪。 – 2010-08-22 00:41:35

1

我不得不取消設置uappnd標誌還有UCHG標誌太,即:

find .svn -type f |xargs sudo chflags nouappnd,nouchg 
+0

我採取了刪除所有這些擴展標誌使用「chflags -R 0000 /路徑/到/無論」 – 2012-07-17 23:03:34