Wie kann ich eine Zusammenfassung meiner cvs Konflikte bekommen, wenn auf der Kommandozeile ein cvs update zu tun?
-
02-07-2019 - |
Frage
Gibt es einen einfachen Weg, um einen Konflikt Zusammenfassung zu erhalten, nachdem ein cvs update
läuft?
Ich arbeite an einem großen Projekt und nachdem er einige Arbeit zu tun Ich brauche ein Update zu tun. Die Liste der Änderungen zurück aus dem cvs update Befehl kommen mehrere Seiten lang ist und ich möchte nur die Liste der Konflikte sehen (beginnt mit ‚C‘) am Ende der Befehlsausgabe cvs update wiederholt.
Die Lösung muss von der Kommandozeile arbeiten.
Wenn meine normale Ausgabe lautet:
M src/file1.txt
M src/file2.txt
cvs server: conflicts found ...
C src/file3.txt
M src/file4.txt
M src/file5.txt
Ich mag meine neue ausgegeben werden:
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
Das mag ich ein einziger Befehl sein (möglicherweise ein kurzes Skript oder Alias), die den normalen cvs Ausgang ausgibt, wie es durch eine Zusammenfassung von Konflikten gefolgt geschieht.
Lösung
die Spezifikation gegeben, so scheint es, dass Sie eine kleinere Anpassung von Martin York Lösung benötigen (denn das ist nur die Konflikte zeigt und nicht die normalen Protokollinformationen). So etwas wie diese - die ‚cvsupd‘ genannt werden:
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
Die Trap-Befehle sicherzustellen, dass die Protokolldatei um nicht verlassen wird. Es fängt die normalen Signale -. HUP, INT, beendigt, und PIPE TERM (jeweils) und 0 Fallen anderer Ausgang von der Shell
Andere Tipps
Ich habe cvs nicht praktisch, was das genaue Format der Ausgabe von cvs update ist
Ich scheine C
Wenn dies der Fall könnten Sie:
cvs update | tee log | grep "^ C"
Die vollständige Ausgabe von cvs in Protokoll für den Einsatz an anderer Stelle gespeichert. Dann grep wir für alle Linien Anfang mit 'C'
Ich hoffe, das hilft.