Получить все имена ветвей в SVN - программирование
Подтвердить что ты не робот

Получить все имена ветвей в SVN

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

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

4b9b3361

Ответ 1

  • 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 "|" для исключения разделительной линии, с любым выбранным инструментом > , получить поврежденную ветвь из имен файлов "Измененные пути", дата из первой строки журнала проверки.

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

Шаг 1: С вашего представления sventon скопируйте список ветвей. Это будет включать ревизию, автора и дату.

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

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

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