Получить все имена филиалов в SVN - PullRequest
54 голосов
/ 02 февраля 2012

Как получить список всех ветвей SVN, возраст которых превышает x лет?

Я использую SVN на CentOS , и у меня есть sventon для просмотра всего хранилища.

Ответы [ 4 ]

83 голосов
/ 02 февраля 2012
  • svn help ls

Если вы будете использовать URL корневого каталога веток хранилища с подробным выводом, вы получите что-то вроде этого:

svn ls http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/ --verbose
     28 lazybadg              фев 22  2011 ./
     28 lazybadg              фев 22  2011 Leichtbau-Deutsch/
     26 lazybadg              фев 22  2011 branche-francaise/
     25 lazybadg              сен 14  2010 i18n/

Поле 3 + 4 + 5 в gawk даст вам дату последнего изменения филиала.

  • svn help log

Чуть более сложный и шумный вывод с одним преимуществом: читаемая дата,

svn log http://mayorat.ursinecorner.ru:8088/svn/Hello/branches/ -v -q
------------------------------------------------------------------------
r28 | lazybadger | 2011-02-22 09:24:04 +0600 (Вт, 22 фев 2011)
Changed paths:
   M /branches/Leichtbau-Deutsch/Hello.de.txt
------------------------------------------------------------------------
r27 | lazybadger | 2011-02-22 09:21:41 +0600 (Вт, 22 фев 2011)
Changed paths:
   A /branches/Leichtbau-Deutsch (from /trunk:26)
------------------------------------------------------------------------
r26 | lazybadger | 2011-02-22 06:49:41 +0600 (Вт, 22 фев 2011)
Changed paths:
   A /branches/branche-francaise (from /trunk:25)
   M /branches/branche-francaise/Hello.fr.txt
------------------------------------------------------------------------

| grep -v "|" для исключения разделительной линии, используя <любой инструмент выбора>, получите затронутую ветвь из имен файлов «Измененные пути», дату из первой строки журнала изменений.

4 голосов
/ 12 августа 2016

Вы всегда можете использовать «--xml» вместо «--verbose», соответственно. "-V". Дает машиночитаемый вывод, а не «читаемый человеком», как «--verbose». Не нужно удалять разделительные линии и т. Д. Извлеките то, что вам нужно, с помощью xmlstarlet или с помощью правильного сценария XQuery (Saxon,…).

2 голосов
/ 29 сентября 2016

Комбинируя ответ @ Lazy и этот ответ , используя подстановку команд, вы можете поместить все это в одну команду:

svn ls `svn info | grep '^URL' | awk '{sub(/trunk.*$/, "branches", $NF); print}'` -v

(Зависит от вашей схемы репозитория svn, поэтому при необходимости измените.)

0 голосов
/ 15 февраля 2012

Я нашел другой способ сделать это, но вам нужен Sventon или другой инструмент, который перечисляет все содержимое вашего хранилища SVN.

Шаг 1. С экрана Sventon скопируйте список филиалов. Это будет включать ревизию, автора и дату.

Шаг 2: Откройте Excel и сделайте специальную вставку.

Шаг 3: Отфильтруйте столбец даты, чтобы отобразить даты моложе x лет.

Результат: все ветки, которым меньше x лет. Этот список был полезен для меня svn delete --targets listofoldbranchnames.txt.

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