Trafiłem ostatnio na dziwny problem przy próbie commitowania zmian do repozytorim SVNowego. Mac OS wyświetla komunikat:
Can't move '.svn/tmp/entries' to '.svn/entries': Operation not permitted
i żadne zmiany nie trafiają na serwer. Przy kłopotach z SVNem pierwszym odruchem jest oczywiście
svn cleanup, ale niestety tym razem nic to nie dało. Moja kopia robocza jest o tyle nietypowa, że znajduje się na pendrivie i jest od czasu do czasu używana również pod Windows.
Po kilku minutach szukania w Google okazało się, że problem nie jest (na szczęście) nietypowy, a rozwiązanie jest bardzo proste:
chflags -R nouchg .
w katalogu, w którym znajduje się kopia robocza.
Polecenie chflags zmienia różnego rodzaju znaczniki związane z plikami i katalogami (inne niż standardowe prawa dostępu i inne niż ACL). Co ciekawe, niektóre z nich umożliwiają nawet ochronę przed zapisem z konta roota - można je zmieniać tylko po uruchomieniu systemu w trybie single-user. Manual nie wyjaśnia zbyt dokładnie znaczenia poszczególnych opcji, lepszy opis można przeczytać tutaj.