为什么我不能从命令行删除.svn目录中的条目文件?

Ton*_*one 1 svn macos

首先,这一切都是在Mac OS X上完成的,版本10.6.4

我复制了一个文件树,其中包含一些已经从subversion中检出的java代码.我想删除该树中的所有.svn文件.所以我使用了以下命令:

find . -name .svn -exec rm -fr .svn {} \;
Run Code Online (Sandbox Code Playgroud)

我收到这样的消息:

rm: ./repository/entity/.svn: Directory not empty
Run Code Online (Sandbox Code Playgroud)

我查看了目录,它看起来像这样:

$ ls -ld .
-r--r--r--  1 tgia  staff  1250 Aug 13 10:48 entries
Run Code Online (Sandbox Code Playgroud)

该文件的父目录如下所示:

$ ls -ld .
drwxr-xr-x  4 tgia  staff  136 Aug 20 16:55 .
Run Code Online (Sandbox Code Playgroud)

好的,更改文件的权限:

$ chmod u+w entries 
chmod: Unable to change file mode on entries: Operation not permitted 
Run Code Online (Sandbox Code Playgroud)

我不懂,这些文件怎么了?我没有尝试使用chmod似乎改变了文件权限.文件所有权是正确的.我很痛苦.WTF?即使root也无法改变它们.

$ sudo chmod u+w entries
Password:
chmod: Unable to change file mode on entries: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

幸运的是root可以删除它们......

dar*_*512 6

除了通常的rwx标志外,OSX还有一个特殊的UCHG标志.这可能是你遇到的.

在用户界面中,您可以在"获取信息"窗口中设置或取消设置它.单击"已锁定"复选框.

在命令行上用于chflags uchg filename设置它.或者chflags nouchg filename取消设置.

在Windows上设置了只读标志的文件将在通过smb进行交换时显示设置的uchg标志.这就是我遇到它的方式.