Как получить список всех ветвей SVN, возраст которых превышает х лет?
Я использую SVN на CentOS, и у меня есть sventon для просмотра всего репозитория.
Как получить список всех ветвей SVN, возраст которых превышает х лет?
Я использую SVN на CentOS, и у меня есть sventon для просмотра всего репозитория.
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 "|" для исключения разделительной линии, с любым выбранным инструментом > , получить поврежденную ветвь из имен файлов "Измененные пути", дата из первой строки журнала проверки.
Вы всегда можете использовать "--xml" вместо "--verbose" соответственно. "-v". Допускает машиносчитываемый выход в отличие от "удобочитаемой информации", получаемой от "--verbose". Не нужно удалять разделительные линии и т.д. Извлеките то, что вам нужно, используя xmlstarlet или используя подходящий XQuery script (Saxon,...).
Объединив ответ @Lazy и этот ответ, используя подстановку команд, вы можете поместить все это в одну команду:
svn ls `svn info | grep '^URL' | awk '{sub(/trunk.*$/, "branches", $NF); print}'` -v
(зависит от вашего репозитория svn, поэтому при необходимости измените.)
Я понял другой способ сделать это, но вам нужен sventon или другой инструмент, в котором перечислены все содержимое вашего репозитория SVN.
Шаг 1: С вашего представления sventon скопируйте список ветвей. Это будет включать ревизию, автора и дату.
Шаг 2: Откройте Excel и сделайте специальную вставку.
Шаг 3: Отфильтруйте столбец даты, чтобы показать даты менее чем за x лет.
Результат: все ветки, возраст которых меньше x лет. Этот список полезен для меня, чтобы сделать svn delete --targets listofoldbranchnames.txt
.