Escludi file ignorare-on-commit di TortoiseSVN da svn diff
-
20-09-2019 - |
Domanda
$svn diff > patchfile
crea un bel patchfile. Tuttavia, utilizzando TortoiseSVN sotto Windows ho impostato alcuni file come "ignorato-on-commit", vale a dire, è sotto il controllo di versione, ma non viene selezionata, quando faccio un impegno.
TortoiseSVN gestisce apparentemente questo tramite una voce personalizzata in .svn/entries
per questo file. Si noti, che non è una proprietà normale SVN (cioè non fetchable via svn propget).
Il mio problema è che io voglio creare un file di patch tramite linea di comando (tramite bash di Cygwin e la porta SVN), ma questo file cerotto deve non includere i file con questo 'ignore-on- commit' bandiera.
Qualcuno ha un'idea di come fare questo (oltre a camminare con awk in modo ricorsivo attraverso ogni .svn/entries
...)?
Soluzione
A quanto pare si tratta di un changelist . Per quanto riguarda come poi ignorare il file / s dalla riga di comando, non sembra che ci sia un particolarmente facile modo .
Altri suggerimenti
È possibile visualizzare l'elenco modifiche via 'svn info' sul file. E SET changelists / RESET tramite la 'svn changelist'
$ svn help cl
changelist (cl): Associate (or dissociate) changelist CLNAME with the named files.
usage: 1. changelist CLNAME TARGET...
2. changelist --remove TARGET...
Valid options:
-q [--quiet] : print nothing, or only summary information
-R [--recursive] : descend recursively, same as --depth=infinity
--depth ARG : limit operation by depth ARG ('empty', 'files',
'immediates', or 'infinity')
--remove : remove changelist association
--targets ARG : pass contents of file ARG as additional args
--changelist ARG : operate only on members of changelist ARG
[aliases: --cl]
Ho avuto anche questo problema, e quindi sviluppato una semplice catena di comando al server la necessità:
svn st | grep -A 1000 'ignorare-on-commit' | grep -v 'ignorare-on-commit' | sed 's /^.* // g' | xargs svn diff | gvim -
(Supponendo è inferiore a 1000 file modificati al di fuori changelist 'ignorare-on-commit')
Con questo comando, i file modificati al di fuori changelist 'ignorare-on-commit' sarà diff-ed, e nessuna modifica file all'interno di 'ignorare-on-commit' saranno inclusi.