Modo corretto per aggiungere svn: eseguibile


107

Ho alcuni file che sono stati eseguibili prima che svn li aggiungesse. Hanno la proprietà svn: executable impostata. Ora, alcuni altri file sono stati archiviati senza il bit eseguibile non ce l'hanno e voglio impostare la proprietà svn: eseguibile:

$ svn propset svn:executable on *.cgi

Quindi controllo lo stato e anche i file con l'eseguibile svn: sono stati modificati:

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


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

a.cgi non deve essere modificato. Voglio aggiungere il bit svn: eseguibile da impostare nello stesso modo in cui lo è sugli altri file, ma non riesco a capire il comando per farlo.


2
Apro questa pagina ogni volta che non voglio digitare svn propset svn:executable on (...). E la risposta alla domanda dovrebbe essere for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; donee basta eseguire il commit dei file modificati. Allora vai avanti.
Tomasz Gandor

@TomaszGandor Penso che ti manchi svn:executableda qualche parte in quel secondo frammento. Forse svn ps svn:executable on $f;?
Keith M

1
en.wikipedia.org/wiki/Ellipsis_(linguistics) - sì, è stato lasciato come esercizio al lettore.
Tomasz Gandor

Risposte:


166

Hai ragione a usare i comandi di modifica delle proprietà svn. La proprietà è svn: eseguibile.

Per aggiungere il "bit eseguibile" in svn

svn propset svn:executable on <list of files>

Per rimuovere il "bit eseguibile" in svn

svn propdel svn:executable <list of files>

La documentazione SVN per questo si trova qui.

Per quanto riguarda la modifica degli eseguibili, non stai modificando l'eseguibile (un checksum lo verificherà), ma stai modificando il repository SVN. Ricorda che SVN rivede i file system, non solo i file; quindi, una modifica dei bit di autorizzazione aumenterà il numero di revisione SVN, anche se è solo una modifica delle proprietà di un file (e non una modifica del file stesso).


Quando eseguo svn propset nel modo mostrato sopra, li imposta a "*" ma il modo naturale imposta svn: eseguibile su nulla, ma che è ancora impostato. Voglio che questa proprietà sia la stessa di quelle il cui bit eseguibile è stato impostato prima di aggiungerle a subversion.
Jake

2
Ci scusiamo per tutte le modifiche, ma se ricordo bene, averlo impostato su qualsiasi attiverà il bit eseguibile, eliminandolo (ed eventualmente impostandolo su null o spazi bianchi) lo spegnerà. Per ottenere il valore utilizzato dal client SVN, è possibile utilizzare un propget svn.
Edwin Buck

-2

Ecco come imposto la proprietà eseguibile su tutti i file * .py nel mio progetto che hanno il bit di esecuzione impostato su di essi. Lo eseguo dalla directory di primo livello

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;

Come viene impostato l'attributo eseguibile senza utilizzare propset? Non l'ho usato e, per quanto ne so, nessun altro lo ha fatto. Appare su tre file nella stessa directory e da nessun'altra parte e sembra che non ci sia nulla di speciale in quei file. (Sono file java, non sh o exe o bat o jar o altro.)
Jerry Miller

Credo che se il file ha il bit eseguibile impostato quando viene inizialmente importato, verrà impostata la proprietà eseguibile svn.
Isaac Jessop

abbastanza sicuro trovare ha un interruttore -perm che potrebbe essere leggermente più elegante di if / then, ma ovviamente sarebbe più da ricordare
Never Sleep Again
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.