Come posso ottenere un riepilogo dei miei conflitti cvs quando eseguo un aggiornamento cvs dalla riga di comando?

StackOverflow https://stackoverflow.com/questions/122301

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top