Как получить и использовать идентификатор фиксации CVSNT? - PullRequest
2 голосов
/ 09 июня 2010

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

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

1 Ответ

3 голосов
/ 09 июня 2010

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

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

Прочитав вашу ссылку, вы, вероятно, можете указать что-то вроде "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:
=============================================================================

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

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

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

...