Кто-нибудь знает параметры командной строки CVS, чтобы получить детали последней регистрации?

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

Мне нужно знать файлы, которые изменились, пользователь, который их изменил, и комментарий.

Я пытался определить параметры командной строки, но, похоже, никогда не получал точных результатов (либо получал слишком много результатов, чем просто за одну регистрацию, либо детали какой-то случайной регистрации за две недели назад)

9 ответов

Решение

Вот это да.

Я забыл, как тяжело это сделать. То, что я делал раньше, было двухэтапным процессом.

Во-первых, бег

cvs history -c -a -D "7 days ago" |
    gawk '{ print "$1 == \"" $6 "\" && $2 == \"" $8 "/" $7 "\" { print \"" $2 " " $3 " " $6 " " $5 " " $8 "/" $7 "\"; next }" }' > /tmp/$$.awk

собрать информацию обо всех проверках за предыдущие 7 дней и сгенерировать сценарий, который будет использоваться для создания части отправленного электронного письма.

Затем я просмотрел файл CVS/Entries в каталоге, который содержал поврежденные файлы, чтобы получить больше информации.

Совместная работа позволила мне найти виновного и послать им электронное письмо с уведомлением, что они сломали сборку.

Извините, что этот ответ не так полон, как я надеялся.

CVS не группирует наборы изменений, как это делают другие системы контроля версий; каждый файл имеет свой собственный, независимый номер версии и историю. Это один из недостатков CVS, который побуждает людей перейти на новый VC.

Тем не менее, есть способы, которыми вы могли бы достичь своей цели. Самым простым может быть добавление перехвата после фиксации для отправки электронной почты или входа в файл. Затем, по крайней мере, вы можете сгруппировать набор коммитов вместе, посмотрев время отправки электронных писем и внесения изменений.

CVS не предоставляет эту возможность. Однако вы можете получить его, купив лицензию на FishEye или, возможно, с помощью CVSTrac (примечание: я не пробовал CVS Trac).

Или вы можете перейти на SVN, который предоставляет эту возможность через атомарные коммиты. Вы можете проверить группу файлов и считать ее за один коммит. В CVS каждый файл является отдельным коммитом, независимо от того, что вы делаете.

Я использую loginfo в CVSROOT и записываю эту информацию в файл

http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_18.html

Мы сделали это с помощью сценария perl, который выводит журнал изменений, и вы можете получить бесплатную версию perl для Windows по второй ссылке.

Скрипт Cvs2Cl

Активный Perl

Подойдет ли вам "cvs history -a -l"? Показывает для всех пользователей последнее событие в проекте...

Eclipse имеет встроенные наборы изменений. Вы можете просматривать последние изменения (по крайней мере, входящие изменения или обновления) по фиксации. Это делается путем группировки коммитов по автору, сообщению о коммите и аналогичным временным меткам.

Это также работает для "Сравнить с / другой веткой или версией", где вы можете выбрать Ветви, Теги и Даты. Посмотрите через значки просмотра синхронизации для всплывающего меню с "Изменить наборы" и убедитесь сами.

Редактировать: для этого потребуется изменить Eclipse хотя бы в качестве средства просмотра, но в зависимости от частоты, которую необходимо сравнить и сгруппировать, это может быть не так уж плохо. Если вы не хотите использовать больше - используйте Eclipse только для CVS. Должна быть возможность получить даже графический клиент cvs приличного размера через rcp со всеми плагинами, но это определенно выходит за рамки...

Разве это не решенная проблема? Я думаю, что любой из нескольких инструментов Матрицы CI, который поддерживает как CVS, так и уведомления по электронной почте, может сделать это для вас.

CVSNT поддерживает идентификаторы коммитов, которые вы можете использовать вместо тегов в командах log, checkout или update. Каждый зафиксированный набор файлов (коммиты являются атомарными в CVSNT) получает свой собственный уникальный идентификатор. Вам просто нужно сначала определить коммит последнего зарегистрированного файла через журнал cvs (вы можете ограничить вывод с помощью -d"1 час назад" или аналогичный), а затем запросить, какие другие файлы имеют этот идентификатор.

Другие вопросы по тегам