2009-11-19 23 views
21

Sto provando ad aggiungere ricorsivamente le proprietà a tutti i file con un carattere jolly.Ricorsive svn propset

struttura di file come sotto

D:>dir *.bob /s/b 
D:\Source\key-test\test.bob 
D:\Source\key-test\test2.bob 
D:\Source\key-test\sub\test3.bob 

proprietà finora (nessuna)

D:>svn propget svn:keywords -R *.bob 

provare un insieme ricorsivo (nota test3.bob manca)

D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob 
property 'svn:keywords' set on 'test.bob' 
property 'svn:keywords' set on 'test2.bob' 

modifica sub e assicurati di poter impostare il sostegno (ok)

D:>cd sub 
D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob 
property 'svn:keywords' set on 'test3.bob' 

Qualcuno sa cosa succede con -R, ho provato anche --recursive?

Cheers,

adam

D:>svn --version 
svn, version 1.6.6 (SlikSvn:tag/[email protected]) WIN32 
    compiled Nov 3 2009, 15:31:43 

risposta

7

Dato che non c'è ambiguità sopra la documentazione per quello che -R fa (o non fa), come sottolineato da Gonzalo Ho usato questo file batch, invece di cercare di ottenere svn per fare quello che voglio

D:>type applyProps.cmd 
@echo off 
for /r . %%X in (*.bob) do (
svn propset svn:keywords "Author Id HeadURL Revision" "%%X" 
) 
11

Da svn help propset:

Lo svn: Parole chiave, svn: eseguibile, svn: eol-style, svn: mime-type e
svn: le proprietà di blocco dei fabbisogni non possono essere impostate su una directory. Un tentativo non ricorsivo non avrà esito positivo e un tentativo ricorsivo imposterà la proprietà solo sul file figli della directory.

+0

Sta dicendo che, nonostante l'aiuto messa -R come un'opzione valida, il paragrafo precedente _A ricorsiva tentativo imposterà la proprietà solo sui file figli della directory_ ignora questo e -R è quindi o non valido? –

+5

Sì, questo è ciò che raccolgo dall'aiuto. In * nix puoi usare 'find. -name \ *. bob | xargs svn propset .... 'per ottenere ciò che vuoi, ma non hai idea di come farlo su Windows senza cygwin. – Gonzalo

19

In realtà -R è ricorsivo. Ad esempio:

svn propset svn:eol-style 'LF' -R * 

Questo funzionerà anche su tutte le sottocartelle. Tuttavia:

svn propset svn:eol-style 'LF' -R *.php 

... funzionerà solo su file php all'interno della cartella corrente, indipendentemente dalla -R. Aggiunta:

svn propset svn:eol-style 'LF' -R */*.php 

Funzionerà su sottocartelle a un livello inferiore. L'aggiunta di extra/-s diventerà un altro livello e così via ...

Non sono davvero sicuro di come specificare (o se è anche possibile farlo) che dovrebbe essere filtrato in base al nome del file E ricorsivo . Indipendentemente da ciò, la sperimentazione non può far male, poiché le modifiche sono locali e possono sempre essere eliminate invertendo ...

1

Se la directory di lavoro è in UNIX, è anche possibile provare questo comando.Funziona per me:

svn propset svn:keywords "Id" `du -a | cut -f 2 | grep -v "\.svn" | grep "\.bob$" | sed "s/ /[[:space:]]/g"`