arch time, folks!
Nick Moffitt <[email protected]> Tue, 13 Apr 2004 18:56:41 -0700
| Newsgroups | gmane.linux.bbc.devel |
|---|---|
| Message-ID | <[email protected]> |
begin Paul Gray quotation: > Log Message: > Adding -D__KERNEL__ to CFLAGS pushes this through on my 2.6.x build box. [...] > RCS file: /usr/local/var/cvs/gar/disk/hdparm/Makefile,v [...] > +CFLAGS += "-D__KERNEL__" Okay, so I'd love to do a coordinated roll-out of this thing, but we've kind of caught a good wind today. You may or may not know this, but we've been seriously contemplating a switch from CVS to arch. It started a few months ago when Zack Brown came into #lnx-bbc and tried to sell us on it. We were skeptical of the supposed benefits, since it seemed like our problem was a miscommunication about the role of "HEAD" in a world with "STABLE". However, we've had some time to stew over this, and it turns out that Zack was really on to something. In particular, arch may in future help us to coordinate with other GAR-using projects. But there are many ways in which it can help us now: DISTRIBUTED BRANCHES: Arch is a distributed system, so we have set up two "blessed" branches on gargoyle: lnx-bbc--stable--2.1 and lnx-bbc--research--0.0. lnx-bbc--stable--2.1--patch-1 is equivalent to STABLE in cvs, and research is equivalent to HEAD. In order to do development, typically you will branch off one of these into an archive on your own machine (laptop, desktop, or even a homedir on gargoyle). Once you have completed a sizeable feature, you just star-merge your work into the blessed branch and commit up to gargoyle. This means that Nate can maintain five or six lines of development on the research side, and that we can all do work on our laptops without needing a network connection to gargoyle. CHERRY-PICKING: Arch uses a concept of changesets, which is refreshing after wrangling with CVS's diff-per-file and diff-per-directory approach. All changes are one-feature, one-changeset. So if Seth checks in an NUV to stable to make it patch-72, Nate can easily replay patch-72 onto the research branch and let all research developers get it on the next update. MIRRORS: Since arch uses HTTP for read-only access, we can just put up mirrors on the web space. In fact, the archives themselves are currently Web-accessible for those who need them. I plan to change the build script to actually perform a bit of quarantine: only changesets that result in a functioning build will be pushed to the public read-only stable archive. This archive will also live on genetikayos, which has a much faster pipe. This means that third-party developers who track the stable arch code will have fast downloads of known-good code. This is a big deal given our problems with build environments. DELTAS: The mechanisms available to third-party developers using read-only downloads are much better than CVS's. Rather than sending us big diffs, a rich delta tarball can be created for us to merge into our code. SIGNATURES: The archive we set up uses gpg signatures on all modifications of the tree (checkins, cacherevs, etc). This means that we'll have to set up a keyring of trusted signatures, but the result is that we will have better verification of who worked on what changesets. PROBLEMS: The arch model is different from cvs, specifically in that there is no such thing as an arch *server*. This means that all configuration happens on the client end. The effects of this are: Scripts such as the mail script that generated the mail I'm replying to would need to be installed on each developer's machine in a very specific way. There's a bit of a learning curve to arch, but I hope to write a few HOWTOs that will apply to very specific circumstances in the LNX-BBC development process. Since a lot of work happens on the client side, there is a little more configuration work to be done on client systems. Finally, I'd like to ask that we put a bit of a freeze on CVS so that we can dive head-first into arch. I realize that it's a sudden move, but development is picking up and we ought to do it before we hit such a rapid pace of development that we find a move impractical. If you need help, please feel free to drop by #lnx-bbc on slashnet IRC, and yosemite and I can walk you through getting started. I will try to send a HOWTO to this list as soon as possible. -- "virii" would be the plural of the mythical masculine Nick Moffitt noun "virius". The neuter plural of "virus" would be [email protected] "virora" (as "opus" & "opera"), and "viri" is the plural of the masculine "vir" (man). It really is "viruses"!