Как узнать, какие теги CVS охватывают какие файлы и пути к ним?

StackOverflow https://stackoverflow.com/questions/28817

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

cvs log <filename>

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

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

cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>

Другие советы

Чтобы перечислить теги в файле, можно также сделать:

cvs status -v <file>

приведенный выше метод у меня не сработал

резюме -q rdiff -s -D 2000-01-01 -r Ваше имя

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

cvs -q rdiff -s -D 2000-01-01 -r Имя вашего модуля

работает

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

cvs -n co -rTagName ModuleName

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top