Question

I was hoping to get your opinion on a Subversion project management strategy.

Some of our SVN projects have grown quite large and unwieldy. From a developer standpoint, one can simply check out the branch that you're working on, but from a project management standpoint it makes alot more sense to me to have the project checked out from the root. But there are alot of old branches and tags that are not relevant at all except for a historical reference.

It has been suggested to implement a strategy of creating another folder in the root of the projects (alongside 'branches', 'tags', and 'trunk') called 'archive'. Older branches and tags could then be moved into that folder as they become irrelevant, and the checkout that is used for current project management could exclude the 'archive' folder. This should keep the history associated with those branches, but not cause issues with huge local working copies.

Do you think this makes sense? Any thoughts would be much appreciated.

Was it helpful?

Solution 2

Why don't you just delete (svn rm) branches and tags that aren't relevant now? You can still go get them out of history if you need them. They just won't show up in the list of branches/tags at HEAD.

For example there was a branch in the Subversion project's repo named log-addressing but if you look for the branch now you won't find it.

You can still find the branch and all the data. I ran a log against the branches and found where it was deleted:

svn-trunk log ^/subversion/branches --search log-address

Of which the first entry was:

r1546929 | stefan2 | 2013-12-02 00:48:57 -0800 (Mon, 02 Dec 2013) | 1 line

Remove the log-addressing branch after merging it into fsfs-improvements.

Now let's say I want to check out this old branch, if I just try to check it out like this:

svn co https://svn.apache.org/repos/asf/subversion/branches/log-addressing

I'm going to get an error saying it doesn't exist:

svn: E170000: URL 'https://svn.apache.org/repos/asf/subversion/branches/log-addressing' doesn't exist

However, I know it existed until revision 1546929 so if I checkout the revision using peg revision of 1546928 (one less) I'll get the state it was in when it was deleted. I can do that just like this:

svn co https://svn.apache.org/repos/asf/subversion/branches/log-addressing@1546928

Now let's say you decide you need that branch back. You can recover it from history by using the same syntax to specify the peg rev as your source for the copy command.

Some useful further reading might be the following sections in the SVN Book:

OTHER TIPS

From PM's POV checkout from repo-root is zero-value useless brainless solution - full tree of repo tells you NOTHING but waste a lot of space!!!

And, as Ben already noted, old irrelevant outdated nodes can (must) be removed from repository - because they anyway stored in history and can be reached, when it needed

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top