Я внес кучу изменений в несколько файлов в проекте. Каждая фиксация (обычно на уровне файла) сопровождалась комментарием о том, что было изменено.
Есть ли способ получить список из CVS этих комментариев об изменениях с момента последней помеченной версии?
Бонус, если я смогу сделать это через плагин eclipse CVS.
ОБНОВИТЬ: Я бы хотел принять здесь ответ, но, к сожалению, ни один из ответов не является тем, что я ищу. Честно говоря, я не думаю, что это действительно возможно, и очень жаль, поскольку это может быть отличным способом создать список изменений между версиями (при условии, что все коммиты сделаны с разумной детализацией и содержат значимые комментарии).
Доступны опции для команды cvs log здесь. В частности, чтобы получить все коммиты с определенного тега (назовем его VERSION_1_0)
cvs log -rVERSION_1_0:
Если ваша цель состоит в том, чтобы иметь команду, которая работает без необходимости знать имя последнего тега, я считаю, вам нужно будет написать сценарий, который захватывает журнал для текущей ветки, анализирует его, чтобы найти тег, а затем выдает команду журнала против этого тега, но я довольно давно перенес все из CVS, так что моя память может быть немного ржавой.
по крайней мере, мой cvs печатает теги, автора и даты ... но не комментарии
HEAD - это псевдоним последней версии, если вы явно не пометили новейшие версии своего кода.
Если вы хотите получить быстрый результат для одного файла, подойдет команда 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
Я также провел сравнения с использованием дат с помощью того же инструмента.
Я знаю, что вы уже «решили» свою проблему, но у меня была та же проблема, и вот как я быстро получил все комментарии из 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 в svn или git с помощью cvs2svn или cvs2git, что мы в любом случае должны делать. Мой ответ пришел примерно через три минуты, потому что у меня был небольшой репозиторий.
Надеюсь, это поможет.
Что-то вроде этого
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: |============|-------------"
Я думаю
cvs -q log -SN -rtag1:::tag2
или же
cvs -q log -SN -dfromdate<todate
буду делать то, что ты хочешь. Здесь перечислены все версии и комментарии для всех изменений, сделанных между двумя тегами или датами, только для файлов, которые были изменены. В случае тега три двоеточия исключают комментарии для первого тега. Дополнительную информацию см. В журнале cvs -H
.
Это действительно ответ на вопрос. Я использую rlog. Я считаю, что два двоеточия работают, а не три двоеточия. Также может быть полезно оставить в тегах (поэтому опустите параметр -N). Итак: 'cvs -q rlog -S -rtag1 :: tag2' или 'cvs -q rlog -S -rtaglast ::'
хмм Похоже, что -r указывает номер версии файла, а не конкретный тег.