Как получить и использовать идентификатор фиксации 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", что означает, что фиксация соответствует версии файла.
- Возможно, вы могли бы использовать регулярное выражение, чтобы отфильтровать записи "выбранные ревизии: 0" (многострочный регистр, разделенный последовательностью "==============")
- Затем извлеките только записи "рабочего файла" результата, чтобы получить список файлов.
Если вы не хотите создавать свои собственные инструменты, попробуйте поискать "cvs changeset":