Как получить список комментариев коммитов из CVS с момента последней помеченной версии? - PullRequest
17 голосов
/ 31 октября 2008

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

Есть ли способ получить список из CVS этих комментариев об изменениях со времени последней помеченной версии?

Бонус, если я смогу сделать это через CVS-плагин eclipse.

ОБНОВЛЕНИЕ : Я хотел бы принять ответ здесь, но, к сожалению, ни один из ответов не является тем, что я ищу. Честно говоря, я не думаю, что это на самом деле возможно, что очень жаль, поскольку это может быть отличным способом создания списка изменений между версиями (при условии, что все коммиты сделаны с разумной детализацией и содержат содержательные комментарии).

Ответы [ 5 ]

8 голосов
/ 02 апреля 2012

Я думаю

cvs -q log -SN -rtag1:::tag2 

или

 cvs -q log -SN -dfromdate<todate  

будет делать то, что вы хотите. Здесь перечислены все версии и комментарии для всех изменений, внесенных между двумя тегами или датами, только для файлов, которые были изменены. В случае тега три двоеточия исключают комментарии для первого тега. См. cvs -H log для получения дополнительной информации.

5 голосов
/ 31 октября 2008

Если вы хотите получить быстрый результат для одного файла, команда cvs log подойдет. Если вы хотите что-то более всестороннее, лучший инструмент, который я нашел для этого, - это Perl-скрипт с именем cvs2cl.pl . Это может генерировать список изменений в нескольких различных форматах. У него много разных опций, но я использовал опции тега к тегу, например так:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8

или

cvs2cl.pl --delta dev_release_1_2_3:HEAD

Я также провел сравнение, используя даты с помощью того же инструмента.

5 голосов
/ 31 октября 2008

Опции для команды cvs log доступны здесь . В частности, чтобы получить все коммиты начиная с определенного тега (назовем его VERSION_1_0)

cvs log -rVERSION_1_0:

Если ваша цель состоит в том, чтобы команда работала без необходимости знать имя последнего тега, я думаю, вам нужно написать скрипт, который захватывает журнал для текущей ветви, анализирует его, чтобы найти тег, и затем выдает команда log для этого тега, но я перенес все с CVS довольно давно, поэтому моя память может быть немного ржавой.

3 голосов
/ 11 марта 2011

как то так

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: |============|-------------"
3 голосов
/ 06 января 2011

Я знаю, что вы уже "решили" свою проблему, но у меня была та же проблема, и вот как я быстро получил все комментарии из cvs с данной ревизии до самой последней:

$ mkdir ~/repo
$ cd ~/repo
$ mkdir cvs
$ cd cvs
$ scp -pr geek@avoid.cvs.org:/cvs/CVSROOT .
$ mkdir -p my/favorite
$ cd my/favorite
$ scp -pr geek@avoid.cvs.org:/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 в svn или git с использованием cvs2svn или cvs2git, что мы должны делать в любом случае. Он получил мой ответ примерно через три минуты, потому что у меня был небольшой репозиторий.

Надеюсь, это поможет.

...