Получить последнее сообщение или diff самого последнего коммита CVS - PullRequest
8 голосов
/ 07 октября 2009

Мне интересно, как легко получить последние изменения в модуле CVS.

Ответы [ 3 ]

11 голосов
/ 07 мая 2012

Я думаю, что вы могли бы использовать команду истории.Попробуйте что-то вроде:

cvs history -c -D 2012-04-01 -a

В приведенном выше примере показаны все коммиты, начиная с указанной даты (указано, что список ограничен по длине ...).

-c означает коммиты, -a означает всех пользователей.

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

cvs log -r <version> <file>

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

cvs diff -D "<date 1>" -D "<date 2>"

Здесь «дата 1» и «дата 2» должны быть отметкой времени непосредственно перед и сразу после фиксации.Обратите внимание, что (насколько мне известно), это, похоже, не работает, если вы работаете над веткой (??).Это было бы темой для другого вопроса, я полагаю.

0 голосов
/ 13 октября 2009

Поскольку реализация CVS версии каждого файла в отдельности, я думаю, вам придется просматривать каждый файл и сравнивать метки времени принятия, чтобы определить, какая из них является последней. Добавьте к этому тот факт, что CVS не поддерживает концепцию набора коммитов, поэтому вы можете получить кучу файлов с одинаковой отметкой времени коммита. Так какой из них является последним? Или, может быть, вы могли бы создать ловушку фиксации, которая записывает в файл журнала, и использовать ее для определения самой последней фиксации.

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

Вы можете выполнить сравнение последних изменений с тегом, используя

  • cvs rdiff команда без рабочей копии или
  • cvs diff команда на верхнем уровне рабочей копии

См. Документацию CVS для полной справки.

0 голосов
/ 07 октября 2009

cvs log вернет их все. Поскольку вы не можете сказать «последние N ревизий» (здесь я даже не могу сказать cvs log HEAD), есть два варианта:

  1. Используйте head -N для получения N верхних строк (только для Unix или Cygwin)

  2. Используйте дату и cvs log -d DATE

...