Get all branch names in SVN
How do I get the list of all SVN branches which are more than x years old?
I use SVN on CentOS, and I have sventon for viewing all the repository.
Solution 1:
svn help ls
If you'll use the URL of the repository branches root with verbose output, you'll get something like this:
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/
The 3+4+5 field in gawk will give you the branch's last-changed date.
svn help log
Slightly more complex and noisy output with a single advantage: a readable date,
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 "|" for excluding separation line, with <any tool of choice>, get affected branch from "Changed paths" filenames, date from the first string of the revision log.
Solution 2:
You can always use "--xml" instead of "--verbose" resp. "-v". Yields machine readable output as opposed to "human readable output" as yielded by "--verbose". No need to remove separation lines etc. Extract what you need using xmlstarlet or using a proper XQuery script (Saxon, …).
Solution 3:
Combining @Lazy's answer and this answer using command substitution you could put it all in one command:
svn ls `svn info | grep '^URL' | awk '{sub(/trunk.*$/, "branches", $NF); print}'` -v
(Depends on your svn repo layout, so change if necessary.)