
On Feb 4, 2005, at 1:10 AM, Rene Rivera wrote:
My experience with SVN has not been all that pleasant but perhaps it's a result of only using the command line, maybe the GUIs out there fare better.
1. Obtaining information about the repository without doing a checkout of every branch, tag, etc. is horribly painful. The history/log facility is almost useless. For example I don't think theres way to find out in what branches/tags a particular file revision is part of, other than getting the complete repository and doing a file find.. yuk. [snip] 3. The lack of in place branching makes many things harder, and the possible equivalent of "svn copy"+"svn switch" is very difficult to manage. This discourages the use of small short lived branches useful for experimental code changes.
Reading about Mono's switch to svn made me wonder if some of these problems are because we're trying to use our cvs tricks with svn, when those tricks have only become habit to get around cvs's limitations. For instance, what do you mean by a "small" branch? It made me think of the graph_devel branch, where I only branched the boost/graph and libs/graph subdirectories [1]. I'd then test my branch be switching over those two directories (only) within a full checkout of the trunk, and develop that way. It's a bit of a strange model, because I never had a full branch, just a few files, and I've weave the two together. The "svn way" to do this would be to create a whole branch (a trivial operation: copies are cheap), which would be entirely separate from the main branch. Interestingly, I did find that I had to switch between the two multiple times, such that it would have been nice to have two separate branches [1]. [1] The reasons I tagged only those two directories are CVS limitations. Branching, checkout, and update all take a really long time with CVS (especially the first one), so I wanted to branch and change as little as possible in my tree. [2] I could have faked two separate, full branches by copying the top-level "boost" directory, renaming one to include the branch name, and updating with "-A" in the "head" branch but not the other. Subversion's workflow is different from CVS's. Whenever we say that Subversion can't do something well that CVS can, we should step back from the task to determine if that's really what we want. We wouldn't complain that C++ compiler X couldn't emulate "typeof" properly when it gives us "decltype", I think Subversion is in some ways harmed because it's touted as "a better cvs" and not "a version control system with a similar interface to cvs". I'm sure it'll have plenty of failings without us pushing it :) Doug