[RFC] ALFS version control system
Kevin P. Fleming
kpfleming at linuxfromscratch.org
Wed Apr 14 13:23:35 PDT 2004
A discussion occurred on lfs-dev two months (or so) ago regarding
version control systems, with the goal of switching the LFS project to
SVN from CVS. During that discussion, I brought up the possibility of
using BitKeeper, and while a number of people were open to the
possibility, some also expressed reservations (or outright denial) at
using a closed-source product.
However, as I think about it more, and become more used to BitKeeper
myself, I find that it would be a very good fit for what the ALFS team
needs. Note that I am _not_ referring to what the LFS/BLFS teams need;
the ALFS team produces a different kind of products, and the users of
our products use them in a different way. I don't want to fracture the
community, and I don't even know if Gerard would be willing to let us
install BitKeeper on belgarath, but I think the issues warrant serious
A big problem with both CVS and SVN is that when you "checkout" a module
from the CVS repository, you get a checked-out copy, _not_ another
repository. This means that you cannot then clone a copy of that tree
and make changes and push them back to that tree, you can only send them
back to the master tree. It is also very difficult to make multiple
copies of a tree (for different changes you are working on) and merge
them together in an automated fashion.
Let me give a simple example of where BitKeeper would be helpful in our
maintenance tasks... I am currently working on at least three different
areas in nALFS: logging, handler parsing/display, and various efficiency
improvements. As it stands today, I can only do those changes in a
single tree, or else the only way I can merge them together is to push
them up to the master CVS tree, even if the changes are not ready for
public consumption yet (this is why CVS HEAD is currently broken).
However, with BitKeeper I can do this:
bk clone bk://bk.linuxfromscratch.org/ALFS/nALFS nALFS-logging
bk clone bk://bk.linuxfromscratch.org/ALFS/nALFS nALFS-handlers
bk clone bk://bk.linuxfromscratch.org/ALFS/nALFS nALFS-misc
This gives me three trees I can work in, any of which can push changes
up to the master tree on belgarath, but more importantly, I can _clone_
these trees and push changes between them locally for testing before I
send them up to the master tree. I can also pull changes from anyone
else's clone of the nALFS tree (if, for example, Jamie has some changes
he'd like me to play with) into any of my trees without them having to
be diff/patched or merged into the master tree.
This is an immensely useful way to work, and I did it for a while, but
it was too hard to merge the changes back into CVS (plus the revision
history got lost), so I'm back to using CVS for now.
There are also benefits to using BitKeeper to maintain local copies of
the LFS profiles, so that you can easily keep local changes and be able
to pull down updates from the master tree as well. This is also possible
with CVS, but with BitKeeper you could pull changes from someone else's
copy of the profile as well and merge them into your tree with only one
or two commands.
I very much want to be able to use BitKeeper for these things, but I'm
hesitant to push very hard for it unless the ALFS community would find
it valuable. If there is resistance to installing BitKeeper on
belgarath, we could certainly set up an account on bkbits.net and use
that as our master working area for ALFS products, but I don't really
want to go that direction if we don't have to.
More information about the alfs-discuss