Как получить список комментариев коммита от CVS с последней помеченной версии?
Я сделал несколько изменений в количестве файлов в проекте. Каждая фиксация (обычно на уровне файла) сопровождалась комментарием того, что было изменено.
Есть ли способ получить список из CVS этих комментариев об изменениях с последней помеченной версии?
Бонус, если я смогу сделать это через плагин CVS Eclipse.
ОБНОВЛЕНИЕ. Я хотел бы принять здесь ответ, но, к сожалению, ни один из ответов не является тем, что я ищу. Честно говоря, я не думаю, что это действительно возможно, что очень жаль, поскольку это может быть отличным способом создания списка изменений между версиями (Предполагая, что все коммиты сделаны с разумной детализацией и содержат значимые комментарии).
Ответы
Ответ 1
Я думаю,
cvs -q log -SN -rtag1:::tag2
или
cvs -q log -SN -dfromdate<todate
сделает то, что вы хотите. Здесь перечислены все версии и комментарии для всех изменений, сделанных между двумя тегами или датами, только для файлов, которые были изменены. В случае тега три двоеточия исключают комментарии для первого тега. Для получения дополнительной информации см. Журнал cvs -H
.
Ответ 2
Параметры команды cvs log доступны здесь. В частности, чтобы получить все коммиты с определенного тега (давайте назовем его VERSION_1_0)
cvs log -rVERSION_1_0:
Если ваша цель состоит в том, чтобы иметь команду, которая работает без необходимости знать имя последнего тега, я считаю, что вам нужно будет написать script, который захватывает журнал для текущей ветки, анализирует, чтобы найти тег, затем выдает команду журнала против этого тега, но я совсем недавно перенес все CVS, так что моя память может быть немного ржавой.
Ответ 3
Если вы хотите получить быстрый результат в одном файле, команда cvs log
хороша. Если вы хотите что-то более всеобъемлющее, лучшим инструментом, который я нашел для этого, является perl script, называемый cvs2cl.pl. Это может создать список изменений в нескольких разных форматах. У него много разных опций, но я использовал теги-теги, например:
cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8
или
cvs2cl.pl --delta dev_release_1_2_3:HEAD
Я также делал сравнения, используя даты с одним и тем же инструментом.
Ответ 4
Я знаю, что вы уже "решили" свою проблему, но у меня была такая же проблема, и вот как я быстро получил все комментарии из cvs из данной версии до последней версии:
$ mkdir ~/repo
$ cd ~/repo
$ mkdir cvs
$ cd cvs
$ scp -pr [email protected]:/cvs/CVSROOT .
$ mkdir -p my/favorite
$ cd my/favorite
$ scp -pr [email protected]:/cvs/my/favorite/project .
$ cd ~/repo
$ mkdir -p ~/repo/svn/my/favorite/project
$ cvs2svn -s ~/repo/svn/my/favorite/project/src ~/repo/cvs/my/favorite/project/src
$ mkdir ~/work
$ cd ~/work
$ svn checkout file:///home/geek/repo/svn/my/favorite/project/src/trunk ./src
$ cd src
$ # get the comments made from revision 5 until today
$ svn log -r 5:HEAD
$ # get the comments made from 2010-07-03 until today
$ svn log -r {2010-07-03}:HEAD
Основная идея - просто использовать svn или git вместо cvs:-)
И это можно сделать, переведя cvs repo в svn или git с помощью cvs2svn или cvs2git, что мы должны делать в любом случае. Он получил мой ответ в течение примерно трех минут, потому что у меня был небольшой репозиторий.
Надеюсь, что это поможет.
Ответ 5
Что-то вроде этого
cvs -q log -NS -rVERSION_3_0::HEAD
Где вы, вероятно, хотите передать вывод в egrep, чтобы отфильтровать материал, который вы не хотите видеть. Я использовал это:
cvs -q log -NS -rVERSION_3_0::HEAD | egrep -v "RCS file: |revision |date:|Working file:|head:|branch:|locks:|access list:|keyword substitution:|total revisions: |============|-------------"