I'm about to embark on a large project which basically consists of
maintaining a branch of the CentOS distribution. A consulting client
modifies a few rpm's, includes a few of their own, and ships this thing on
appliances. We want to be able to keep track of exactly what went into
each machine and be able to reproduce if necessary.

I am going to be version controlling all of the SRPM's minus the pristine
source tarballs which never change.

They currently do something like this with FC2 and CVS but their old
process is a bit of a mess and CVS is CVS. They want to move to a better
version control system and are looking to me for guidance.

There are only two we are considering having ruled the rest out:
Mercurial (Hg) and Subversion (svn).

I have a fair amount of experience with svn. It is much easier to use than
cvs and I actually like the simple heirarchical nature of the repository
and how tags are implemented with copies/references. It makes everything
clear and easy to navigate. I also like the way svn supports webdav and
auto-versioning and has a nice interface via trac. But I don't like that
the merge handling isn't as slick due to not carrying enough meta-data
around to know about the full history and where the common parent is.
Historically I haven't done that much merging anyway but this place might
be different. I also don't like that it isn't distributed and commits
require communicating with the main repository.

I've never used Hg before. But supposedly it is also easy to use, has
easier merging, and is distributed. I don't so much like the fact that it
doesn't seem to implement something as simple as keywords (So I can't put
$Version:$ in the /etc/motd and know what the version of this distro is),
doesn't do webdav, and you can only check out a whole repository. Not just
an individual file or directory. The latter point has interesting
implications for my preference to version control system files. Would I
need to create a separate Hg repo for each host or each directory on each
host or something equally silly? With svn I have a
/hosts/hostname/etc/ for example and I can do:

# cd /etc/
# svn mkdir host://svn.mydomain.com/hosts/hostname/etc
# svn co host://svn.mydomain.com/hosts/hostname/etc/ .
# svn add sudoers
# svn commit

And now my sudoers file is version controlled. I'm not sure how I will do
this with Hg.

One might suggest I use svn for host configs and Hg for larger coding
projects which are more likely to be distributed anyway but using and
administering two different tools for almost the same thing bugs me.

I'm still doing research on these issues and I'll let you know what I
decide.

-- 
Tracy Reed      http://www.ultraviolet.org


-- 
KPLUG-List@kernel-panic.org
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list

Reply via email to