Как получить и использовать идентификатор фиксации CVSNT?

В другом вопросе я увидел ссылку на уникальный идентификатор фиксации, автоматически сгенерированный CVSNT, который отмечает каждый коммит. Я думаю, что большинство людей в моем отделе используют CVSNT или внешние интерфейсы к нему.

Я нашел идентификаторы коммитов, описанные в руководстве CVSNT, но нет объяснения о том, как определить, что идентификатор фиксации CVSNT предназначен для конкретной ревизии файла. Есть ли способ сделать это? Я хотел бы узнать, какие идентификаторы коммитов генерируются для регистрации других людей, чтобы я мог сгруппировать файлы, включенные в их коммиты.

1 ответ

Журнал команд CVS и rlog показывают идентификатор фиксации для отдельных ревизий файла. Мне неизвестна команда CVS, которая получает информацию с использованием этого идентификатора, но я могу подтвердить, что все файлы в одном коммите имеют один и тот же идентификатор.

У меня есть собственный анализатор лог-файлов, который использует идентификатор фиксации для группировки файлов, затронутых одним коммитом (например, история изменений сортируется по дате и группирует файлы в отдельные коммиты).

Прочитав вашу ссылку, вы, вероятно, могли бы указать что-то вроде "log -r @ commit-id", чтобы получить список затронутых файлов с общим идентификатором фиксации. Возможно, есть и другие настройки командной строки, но следующее дает некоторый успех (слегка шумно):

c:\> cvs -q log -N "-r @fd049d34574117b"

=============================================================================

RCS file: /folder/file.xml,v
Working file: folder/file.xml
head: 1.3
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 4;     selected revisions: 1
description:
=============================================================================

RCS file: /folder/file2.xml,v
Working file: /folder/file2.xml
head: 1.2
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2;     selected revisions: 0
description:
=============================================================================

Обратите внимание, что первый файл содержит "selected revisions: 1", что означает, что фиксация соответствует версии файла.

  1. Возможно, вы могли бы использовать регулярное выражение, чтобы отфильтровать записи "выбранные ревизии: 0" (многострочный регистр, разделенный последовательностью "==============")
  2. Затем извлеките только записи "рабочего файла" результата, чтобы получить список файлов.

Если вы не хотите создавать свои собственные инструменты, попробуйте поискать "cvs changeset":

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