This Answer is in reference to Subversion.
I have no compunction about deleting obsolete branches and tags in Subversion. It keeps the /tags
and /branches
directories cleaner. Instead of hundreds of branches and tags, only a couple of dozen may show up.
If a branch is no longer being used for active development, and no one is interested in the code, why not delete it? If you have a tagged a revision of your code that no customer is using, and no developers no longer reference, why not delete it?
I usually have some sort of time basis for branches. No work done on them for a year? They're a candidate for deletion. If the developers are no longer interested in the code, out it goes.
In Subversion that nothing is ever permanently deleted You can always get it back:
Let's say I deleted the tag to Version 1.6 of our code. Suddenly an army of auditors show up demanding to examine that particular release of the code. I can run:
$ svn log -q -v http://server/repo/tags | less
And, find when I deleted that tag:
------------------------------------------------------------------------
r76229 | smith | 2011-09-01 11:26:47 -0400
Changed paths:
D /tags/1.6
The 1.6 tag was deleted in revision 76229, so I know that tag was in revision 76228 of my repository. I can restore that tag:
$ svn cp -r76228 http://server/repo/tags/1.6@76228 http://server/repos/tags/1.6
If I merely want to see this code, I could check it out without undeleting the tag:
$ svn co -r76228 http://server/repo/tags/1.6@76228
Now the auditors can get to work and pester the developers and leave me in piece.