Как узнать, какие теги CVS покрывают какие файлы и пути? - PullRequest
8 голосов
/ 26 августа 2008

Существует устаревшее хранилище CVS, которое содержит большое количество каталогов, подкаталогов и путей. Существует также большое количество веток и тегов, которые не обязательно охватывают все пути и файлы - обычно это подмножество. Как я могу узнать, какие ветви / теги покрывают, какие файлы и пути?

Журнал CVS уже предоставляет список тегов для каждого файла. Задача требует, чтобы я перенес это в файлы для каждого тега. Я не смог найти такую ​​функциональность в текущей реализации WinCVS (CVSNT). Учитывая достаточно пустых циклов, я могу написать Perl-скрипт, который бы это делал, алгоритм не сложный, но это нужно сделать.

Я полагаю, что есть люди, которые нуждались в такой информации и решили эту проблему. Таким образом, я думаю, что для этого должен быть легкодоступный (с открытым исходным кодом / бесплатный) инструмент.

Ответы [ 6 ]

11 голосов
/ 24 июня 2009

Для вывода списка тегов в файле также можно сделать:

cvs status -v <file>
7 голосов
/ 29 августа 2008

Чтобы определить, какие теги применяются к конкретному файлу, используйте:

cvs log <filename>

Это выведет все версии файла и какие теги были применены к версии.

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

cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>
4 голосов
/ 08 ноября 2010

метод, указанный выше, не работает для меня

cvs -q rdiff -s -D 2000-01-01 -r yourTagName

однако после большого количества возни я понял, что

cvs -q rdiff -s -D 2000-01-01 -r yourTagName ModuleName

работает

2 голосов
/ 06 ноября 2008

Вам не нужно делать фактическую проверку. Вы можете использовать опцию -n только для симуляции этого:

cvs -n co -rTagName ModuleName

Это даст вам имена всех файлов с тегами TagName в модуле ModuleName.

1 голос
/ 24 июня 2009

Следующая команда выдает список файлов, которые находятся в этом теге «yourTagName». Все файлы помечены как новые, информация о редакции в "yourTagName".

Эта команда выполняет различие между 2000-01-01 и вашим тегом, не стесняйтесь использовать другую более раннюю дату.

cvs -q rdiff -s -D 2000-01-01 -r yourTagName
0 голосов
/ 26 августа 2008

Я не знаю ни одного инструмента, который мог бы вам помочь, но если вы пишете свой собственный, я могу спасти вас от одного заголовка: каталоги в CVS не могут быть тегами. Только файлы внутри них имеют теги (и именно это определяет, что проверяется при извлечении каталога по определенному тегу).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...