[XCSSA] Programming Source Control
xcssa@xcssa.org
xcssa@xcssa.org
Tue, 28 Nov 2006 14:00:08 -0600
On Sat, Nov 18, 2006 at 08:11:21PM -0600, xcssa-admin@xcssa.org wrote:
> A subversion tag is a read-only copy of the directory tree.
Well, close enough.
That doesn't have much to do with branching though, because people
change stuff on branches; that's the point.
> It's a copy of
> the entries in the database, not an actual copy of the files.
I know. But it acts like a copy, which is an easy-to-understand
metaphor but basically there's nothing in the original branch
which relates it to the new branch apart from naming conventions.
> When you
> branch and commit, it will store diffs against the revision you copied from
> rather than making an actual copy of all the files in a whole new revision
> and starting from there. That is actually very desirable.
Yeah, but again, nothing that goes on in the new branch is tied
to anything in the trunk. They are, for most purposes, seperate
entities, with only the human knowing that there's a relation.
It shouldn't be too hard to figure out why that's not always
desirable (hint: it involves merging).
True you can build more complex structures on subversion;
but you could do that with RCS too. I worked at one company
where they used RCS for everything; to build a project, you
checked out a Makefile from RCS. Running "make" would check
out tagged versions of all the subsystems, and then recurse into
them, making them. So you could, using this system, define a
top-level make file that checks out version M of project N,
and version X of project Y, then builds them.
The question is, how complex of a system do you need? Figure out
what you're going to do, then pick the simplest system that can do
what you need. I've found subversion to be adequate for everything
I do, since I don't branch much. All my source is on the trunk,
with tags applied at release dates. So subversion is perfect for
me, but I don't think it would be perfect for a company trying to
create a GUI-based program written in C that has to run on Mac OS
9, Win32, and Unix. If they tried, they'd probably end up with
three independent branches or projects, and a merging nightmare
to get fixes from one into the other in a timely manner, without
stepping on each other, or re-applying diffs, or reverting a
change.
--
"Cryptography is nothing more than a mathematical framework for
discussing various paranoid delusions." -- Don Alvarez
<URL:http://www.subspacefield.org/~travis/> -><-