В настоящее время выполняется сравнение только двух файлов Entries из разных тегов и выводится XML / JSON или информация, удобная для чтения человеком, с разницей между тегами: удалено, новое, пересмотр вниз, пересмотр вверх- davidlt
Есть несколько проблем с вашим подходом.Вы уже знаете о первом: необходимости проверять теги, даже если вас не интересуют реальные файлы.
Другая проблема заключается в том, что файлы CVS / * являются локальными и могут быть отредактированы и / илиповрежден.Также, если вы делаете частичную проверку, файл Entries будет содержать только содержимое, которое вы извлекли, а не все, что связано с тегом.Следовательно, этот файл не может быть гарантирован как источник "правды".
Если вы только после того, какие файлы были изменены, вы можете использовать опцию rdiff -s
.
rdiff options документация гласит:
-s
Создать сводный отчет об изменениях вместо патча.Сводка содержит информацию о файлах, которые были изменены или добавлены между выпусками.Отправляется на стандартное устройство вывода.Это полезно для определения, например, файлов, которые изменились между двумя датами или ревизиями.
Документация также содержит этот пример :
Предположим, вы сделали релиз 1.3 и разветвили ветку R_1_3fix
для исправления ошибок.R_1_3_1
соответствует версии 1.3.1, которая была сделана некоторое время назад.Теперь вы хотите увидеть, сколько разработок было сделано в отрасли.Эту команду можно использовать:
$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
cvs rdiff: Diffing module-name
File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
File bar.h,v changed from revision 1.29.2.1 to 1.2
Я сам ее запустил и вот как выглядят новые и удаленные сообщения:
cvs rdiff -s -r v5_8_0_1 -r v5_8_0_2 <module>
File abc is new; v5_8_0_2 revision 1.1.2.2
File xyz is removed; v5_8_0_1 revision 1.1.4.1
РЕДАКТИРОВАТЬ:
Вы не указываете, на какой платформе вы находитесь, но неоднородный вывод команды cvs, безусловно, может быть пропущен через команду очистки, чтобы упростить управление.например.Следующий awk превратит его в вывод CSV только с четырьмя интересующими вас частями информации.
cvs rdiff -s -r <tag1> -r <tag2> <module> | awk '
/ new; / { print "NEW, \"" $2 "\", , " $7 }
/changed / { print "CHANGED, \"" $2 "\", " $6 ", " $8 }
/ removed; / { print "REMOVED, \"" $2 "\", " $7 ", " }
'