Come posso ottenere un riepilogo dei miei conflitti cvs quando eseguo un aggiornamento cvs dalla riga di comando?
-
02-07-2019 - |
Domanda
Esiste un modo semplice per ottenere un riepilogo dei conflitti dopo aver eseguito un cvs update
?
Lavoro su un grande progetto e dopo aver fatto un po 'di lavoro ho bisogno di fare un aggiornamento. L'elenco delle modifiche che ritorna dal comando cvs update è lungo diverse pagine e vorrei vedere solo l'elenco dei conflitti (che inizia con 'C') ripetuto alla fine dell'output del comando cvs update.
La soluzione deve funzionare dalla riga di comando.
Se il mio output normale è:
M src/file1.txt
M src/file2.txt
cvs server: conflicts found ...
C src/file3.txt
M src/file4.txt
M src/file5.txt
Voglio che il mio nuovo output sia:
M src/file1.txt
M src/file2.txt
cvs server: conflicts found ...
C src/file3.txt
M src/file4.txt
M src/file5.txt
Conflict Summary:
C src/file3.txt
Voglio che questo sia un singolo comando (possibilmente un breve script o alias) che genera l'output normale di cvs mentre succede seguito da un sommario dei conflitti.
Soluzione
Date le specifiche, sembra che sia necessario un piccolo adattamento della soluzione di Martin York (perché mostra solo i conflitti e non le normali informazioni di registro). Qualcosa del genere - che potrebbe essere chiamato 'cvsupd':
tmp=${TMPDIR:-/tmp}/cvsupd.$$
trap "rm -f $tmp; exit 1" 0 1 2 3 13 15
cvs update "$@" | tee $tmp
if grep -s '^C' $tmp
then
echo
echo Conflict Summary:
grep '^C' $tmp
fi
rm -f $tmp
trap 0
exit 0
I comandi trap assicurano che il file di registro non venga lasciato in giro. Cattura i segnali normali: HUP, INT, QUIT, PIPE e TERM (rispettivamente) e 0 intrappola qualsiasi altra uscita dalla shell.
Altri suggerimenti
Non ho cvs a portata di mano qual è il formato esatto dell'output dell'aggiornamento cvs
Mi sembra di ricordare C < nome file >
In tal caso è possibile utilizzare:
aggiornamento cvs | registro tee | grep " ^ C "
L'output completo di cvs viene salvato nel registro per l'uso in un altro punto. Quindi grep per tutte le linee che iniziano con 'C'
Spero che sia d'aiuto.