Кто-нибудь знает параметры командной строки CVS, чтобы получить детали последней регистрации? - PullRequest
5 голосов
/ 17 сентября 2008

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

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

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

Ответы [ 9 ]

2 голосов
/ 17 сентября 2008

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

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

1 голос
/ 17 октября 2008

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

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

1 голос
/ 17 сентября 2008

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

Cvs2Cl скрипт

Активный Perl

1 голос
/ 17 сентября 2008

Ничего себе.

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

Во-первых, работает

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 в каталоге, который содержал поврежденные файлы, чтобы получить больше информации.

Обмена двух вместе позволили мне уловить виновника и отправить им электронное письмо с уведомлением, что они сломали сборку.

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

1 голос
/ 17 сентября 2008

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

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

0 голосов
/ 16 марта 2009

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

0 голосов
/ 06 ноября 2008

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

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

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

0 голосов
/ 06 ноября 2008

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

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

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

...