Как я могу получить сводку моих конфликтов cvs при выполнении обновления cvs в командной строке? - PullRequest
3 голосов
/ 23 сентября 2008

Есть ли простой способ получить резюме конфликта после запуска cvs update?

Я работаю над большим проектом, и после некоторой работы мне нужно сделать обновление. Список изменений, возвращаемых командой cvs update, состоит из нескольких страниц, и я хотел бы видеть только список конфликтов (начинается с 'C'), повторяющихся в конце вывода команды cvs update.

Решение должно работать из командной строки.

Если мой нормальный вывод:

M src/file1.txt
M src/file2.txt
cvs server: conflicts found ...
C src/file3.txt
M src/file4.txt
M src/file5.txt

Я хочу, чтобы мой новый вывод был:

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

Я хочу, чтобы это была одна команда (возможно, короткий сценарий или псевдоним), которая выводит обычный вывод cvs, как это происходит, после чего следует сводка конфликтов.

Ответы [ 2 ]

3 голосов
/ 04 октября 2008

Учитывая спецификацию, кажется, что вам нужна небольшая адаптация решения Мартина Йорка (потому что это показывает только конфликты, а не обычную информацию журнала). Примерно так - что можно назвать 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

Команды trap гарантируют, что файл журнала не останется. Он улавливает нормальные сигналы - HUP, INT, QUIT, PIPE и TERM (соответственно) и 0 прерывает любой другой выход из оболочки.

0 голосов
/ 23 сентября 2008

У меня нет под рукой cvs, каков точный формат вывода обновления cvs

Кажется, я помню C
Если это так, вы можете использовать:

cvs update | тройник бревно | grep "^ C"

Полный вывод cvs сохраняется в журнале для использования в другой точке. Затем мы grep для всех строк , начинающихся с 'C'

Надеюсь, это поможет.

...