Почему я не могу удалить файл записей в каталоге .svn из командной строки? - PullRequest
1 голос
/ 21 августа 2010

Сначала все это делается в Mac OS X, версия 10.6.4

Я скопировал дерево файлов, которое включало в себя некоторый код 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 может удалить их ...

Ответы [ 4 ]

6 голосов
/ 31 августа 2010

Помимо обычных флагов rwx, OSX имеет специальный флаг UCHG.Это может быть то, с чем вы столкнулись.

В пользовательском интерфейсе вы можете установить или отменить его в окне «Информация».Установите флажок «Заблокировано».

В командной строке используйте chflags uchg filename, чтобы установить его.Или chflags nouchg filename для сброса.

Файлы с установленным в Windows флагом только для чтения будут отображаться с установленным флагом uchg при обмене через smb.Вот как я столкнулся с этим.

2 голосов
/ 21 августа 2010

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

должно быть

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

2 голосов
/ 21 августа 2010

Я не уверен, что ваша командная строка точно верна.Попробуйте:

find . -name .svn | xargs rm -rf

Я думаю, что ваша командная строка попытается выполнить такие команды, как:

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

То есть у вас есть дополнительные .svn там.

1 голос
/ 09 октября 2011

Мне пришлось сбросить флаг uappnd, а также флаг uchg, т. Е .:

find .svn -type f |xargs sudo chflags nouappnd,nouchg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...