Właściwy sposób dodania svn: wykonywalny


107

Mam kilka plików, które były wykonywalne przed dodaniem ich przez svn. Mają ustawione właściwości svn: executable. Teraz kilka innych plików zostało wpisanych bez wykonywalnego bitu, nie ma go i chcę ustawić właściwość svn: executable:

$ svn propset svn:executable on *.cgi

Następnie sprawdzam status, a nawet pliki z svn: executable zostały zmodyfikowane:

$ svn diff
Property changes on: a.cgi
___________________________________________________________________
Modified: svn:executable
   - 
   + *


Property changes on: b.cgi
___________________________________________________________________
Added: svn:executable
   + *

a.cgi nie powinny być modyfikowane. Chcę dodać bit svn: wykonywalny, który ma być ustawiony w taki sam sposób, jak w innych plikach, ale nie mogę znaleźć polecenia, aby to zrobić.


2
Otwieram tę stronę za każdym razem, gdy nie chcę pisać svn propset svn:executable on (...). Odpowiedź na to pytanie powinna brzmieć for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; donei po prostu zatwierdzić zmodyfikowane pliki. Następnie przejdź dalej.
Tomasz Gandor

@TomaszGandor Myślisz, że brakuje Ci svn:executablegdzieś w tym drugim fragmencie. Może svn ps svn:executable on $f;?
Keith M

1
en.wikipedia.org/wiki/Ellipsis_(linguistics) - tak, pozostawiono to jako ćwiczenie czytelnikowi.
Tomasz Gandor

Odpowiedzi:


166

Masz prawo używać poleceń edycji właściwości svn. Właściwość to svn: executable.

Aby dodać „wykonywalny bit” w svn

svn propset svn:executable on <list of files>

Aby usunąć „wykonywalny bit” w svn

svn propdel svn:executable <list of files>

Dokumentacja SVN na ten temat znajduje się tutaj.

O ile nie modyfikujesz plików wykonywalnych, nie modyfikujesz pliku wykonywalnego (suma kontrolna to zweryfikuje), ale modyfikujesz repozytorium SVN. Pamiętaj, że SVN zmienia systemy plików, a nie tylko pliki; tak więc modyfikacja bitów uprawnień zwiększy numer wersji SVN, nawet jeśli jest to tylko modyfikacja właściwości pliku (a nie modyfikacja samego pliku).


Kiedy uruchamiam svn propset w sposób pokazany powyżej, ustawia je na "*", ale w naturalny sposób ustawia svn: executable na nic, ale nadal jest ustawione. Chcę, aby ta właściwość była taka sama, jak te, których bit wykonywalny został ustawiony przed dodaniem ich do subversion.
Jake

2
Przepraszam za wszystkie zmiany, ale jeśli dobrze pamiętam, ustawienie go na cokolwiek spowoduje włączenie wykonywalnego bitu, usunięcie go (i prawdopodobnie ustawienie go na null lub białe znaki) wyłączy go. Aby uzyskać wartość używaną przez klienta SVN, można użyć właściwości svn.
Edwin Buck

-2

Oto, jak ustawić właściwość wykonywalną dla wszystkich plików * .py w moim projekcie, które mają ustawiony bit wykonania. Wykonuję to z katalogu najwyższego poziomu

for f in `find ./ -name '*.py'`; do echo $f; if [ -x $f ]; then echo $f 'is executable setting svn:executable'; svn propset svn:executable on $f; else echo $f 'is not executable'; fi; done;

W jaki sposób atrybut wykonywalny jest ustawiany bez użycia propset? Nie użyłem go i, o ile wiem, nikt inny też tego nie zrobił. Pojawia się na trzech plikach w tym samym katalogu i nigdzie indziej, i wydaje się, że nie ma w nich nic specjalnego. (Są to pliki java, a nie sh, exe, bat, jar czy cokolwiek innego.)
Jerry Miller

Uważam, że jeśli plik ma ustawiony bit wykonywalny, gdy jest początkowo importowany, zostanie ustawiona właściwość wykonywalna svn.
Isaac Jessop,

całkiem pewne znalezisko ma przełącznik -perm, który może być nieco bardziej elegancki niż jeśli / wtedy, ale oczywiście byłby bardziej do zapamiętania
Never Sleep Again
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.