Получение разницы между двумя верхними версиями файла в CVS

Есть ли способ создать diff для файла b/w его верхние два пересмотра в CVS-репо? Меня не интересуют номера версий и мой локальный файл. Все, что мне нужно, это diff b/w последнее коммит и последнее перед фиксацией.

Ответ 1

Вы можете использовать

cvs diff -r FIRSTREVISION -r SECONDREVISION filename

сравнить две версии.

Возможно, вам удастся выполнить прямое сравнение, но мы также можем автоматизировать его, обработав результаты cvs log filename. Так, например, вы получаете последний номер версии с

cvs log filename | grep ^revision | head -n 1 | cut -c 10-

и предыдущая версия с

cvs log filename | grep ^revision | head -n 2 | tail -n 1 | cut -c 10-

Вы хотите объединить их вместе, создайте файл BASH script (например, lastdiff.sh), который содержит:

cvs diff -r $(cvs log $1 | grep ^revision | head -n 2 | tail -n 1 | cut -c 10-) -r $(cvs log $1 | grep ^revision | head -n 1 | cut -c 10-) $1

и тогда вы сможете получить свой diff, выполнив его с именем файла в качестве параметра, например. ./lastdiff.sh имя файла.

Ответ 2

Вы можете использовать cvs diff, чтобы узнать различия между локальной проверенной версией и версией, присутствующей на голове.

cvs diff -r ver1 -r ver2 <FILE-NAME> 

Ответ 3

Я надеялся, что есть очевидный вариант cvs, который мне не хватало, но, похоже, это решение, похожее на borrible scripted. Если по какой-либо причине вы все еще используете cvs, вы можете найти это уточнение полезным:

cvs diff $(cvs log $FILE |
grep "^revision" |
sed "s/^revision/-r/
2q") $FILE

Это использует sed для захвата двух последних версий из одного вызова "cvs log" и создания параметров -r непосредственно из этого вывода.