2009-08-09 14 views
64

vedo che è possibile visualizzare un elenco di proprietà impostate su ogni directory all'interno di un repository SVN utilizzando proplist e la bandiera -R (ricorsiva) e la bandiera -v (verbose):Come visualizzare tutti i pattern ignorati impostati con svn: ignori ricorsivamente in un repository SVN?

svn proplist -Rv 

Questo mi mostra tutto proprietà, come svn: mime-type o svn: eseguibile. Sto cercando di filtrare questo solo per le proprietà svn:ignore. Sono sicuro che c'è un modo per convogliare il risultato di questo comando attraverso un comando di shell che mi mostrerebbe solo le linee a cui sono interessato, ma non riesco a capire come farlo. Come esempio del tipo di cosa che sarebbe più utile è un tipo di comando come questo (ma questo non funziona!).

svn proplist -Rv | grep "^ svn:ignore" | awk "{print \$1}" 

solo che non so abbastanza di comandi shell come grep e awk per fare questo lavoro per me. Questo mostra semplicemente "svn: ignora" più e più volte, ma non stampa il percorso della directory o il contenuto della proprietà svn:ignore. Ecco un esempio dell'output di "svn proplist -Rv" che vorrei prelevare, dove 'cache' è il percorso e '*' è il valore della proprietà.

Properties on 'cache': 
    svn:ignore 
    * 

Come può il comando precedente essere fatto per lavorare e/o c'è un modo migliore per visualizzare tutte le svn:ignore immobili a mio repository?

+1

Un paio di suggerimenti su awk: è comune utilizzare le virgolette singole per lo script inline, quindi non è necessario sfuggire a $, e può effettivamente fare anche l'espressione regolare corrispondente a te: 'awk '/ pattern/{print $ 1} '. Non so svn: i dati che stai cercando di vedere sulla stessa riga di "svn: ignore"? In caso contrario, il tuo problema è un po 'più complicato. Se è così, vuoi solo il secondo campo? – Cascabel

+0

I dati che sto cercando di visualizzare sfortunatamente * non * sono sulla stessa riga di svn: ignorare. È il contenuto direttamente sopra e direttamente sotto di esso. Nell'esempio della mia domanda, mi piacerebbe prendere il percorso "cache" e anche il "*", poiché * significa che tutto in "cache" viene ignorato. Grazie per i tuoi suggerimenti su awk. – stereoscott

+0

Il mio male: stavo cercando l'output di esempio e in qualche modo lo ho passato direttamente sopra. – Cascabel

risposta

131
svn pg -R svn:ignore . 

... con pg essere una notazione abbreviata per propget, quindi questo è uguale a ...

svn propget -R svn:ignore . 
+11

@Ram - Questo non funziona in modo ricorsivo. Git, come SVN, ti permette di [applicare ignorare i pattern alle sottodirectory] (http: //www.kernel.org/pub/software/scm/git/docs/gitignore.html # _description) invece di un semplice .gitignore di root. Vuoi 'cat \' find -name .gitignore \ '| less' o 'find -name .gitignore -exec cat {} \; | meno', né bello come usare un interruttore -R IMO. (Detto questo, mi è piaciuto il tuo [post del blog] (http://blog.garlicsim.org/post/9583964892/a-git-users-first-and-hopefully-last-foray-into). Sto imparando Git da Subversion, è interessante dare un'occhiata al lato opposto della recinzione!) –

+2

'git svn show-ignore | grep -ve '^ # \ |^[[: space:]] * $'> .gitignore' –

1

dispiace saltare dentro qui alla fine, ma c'è una soluzione semplice qui.

Solo per grep.

svn proplist -Rv | grep svn:ignore -B1 -A1 

Mostra una riga prima e una riga dopo la partita.

Problemi correlati