Starting with Fermi Linux 7.1.1 workgroup maintainers have been able to modify their workgroups with
little or no involvement with the Fermi Linux distribution maintainers. (aka Connie and/or Troy). This was when
the workgroup area's were put into CVS, and then automatically updated on the distribution servers.
Nowday's, the only involvement that the distribution maintainers have to do is when a workgroup maintainer
checks in a comps (or comps.xml) file change. The comps file is the file that lists what RPM's get installed, and
because this get's merged into a central comps file, there is a possibility that it could break the installs for everyone.
So when a comps file get's checked into CVS, the workgroup and distribution maintainers get e-mail saying it is there,
then the distibution maintainers check the format, and if it is correct, put it into the main comps file, and send a second
e-mail telling the workgroup maintainer that the change had been made.
But you probrubly just came to this page to get one specific command that you can't seem to remember. So here is how you maintain your workgroups via CVS.
Make and/or get into a working directory.
This is a directory where all your workgroup files (and directories) can be
downloaded. A typical directory name would be $HOME/CVS (ie. ~brew/CVS).
Remeber to cd into that directory.
Set your CVSROOT variable.
Your CVSROOT variable tells CVS were to get your files. CVS works
well with both local repositories and remote ones. We are working
with a remote CVS repository, and so you will see that the syntax for CVSROOT
is in the same format at rcp or scp.
You might also notice that we are logging in as user flcvs. This
name stands for Fermi Linux CVS. There is no real password because the
Computing Division CVS server is kerberized. Make sure you have your
kerberos tickets when doing all these stips
For the putposes of working on the workgroups the CVSROOT is
flcvs@cdcvs:/cvs/fermilinux
Checkout your workgroup(s)
This does not have to be done everytime, especially if you are sure you are
the only person who has changed the workgroups. But once it has been done, it
goes much quicker the second time, so it really doesn't hurt to do this
everytime you start working on your workgroups.
The format for this command is
cvs checkout <cvs workgroup path>
The cvs workgroup path is almost the same as the path on normal linux, except
that you leave off the /export/linux. So if you wanted to checkout and then
work on the lts304 version of the Farms workgroup, your cvs workgroup path
would be lts304/i386/sites/Fermi/workgroups/Farms.
Go to your working workgroup directory
When you check out your workgroups, they are going to be in this same cvs
workgroup path. So if I had been following these examples, there is now a
directory ~brew/CVS/lts304/i386/sites/Fermi/workgroups/Farms, along with the
directories beneath that (RPMS, docs, scripts, configfiles).
This might seem inconvenient at first, but it allows you to have several
workgroups checked out at once, and you won't be in danger of getting them
mixed up (hopefully)
Edit and/or Change your workgroup
If you are simply editing a file (such as a post install script), then just go
ahead and edit that file. CVS will see these changes when you commit your
changes (see step 6)
If you are adding and/or removing files from the workgroup, you HAVE to tell
this to cvs. When you commit your changes to cvs, cvs does NOT just suck in
every file in these directories. It only checks on the files it knows about.
This does sometimes make things ackward, but with a little use, it becomes
more natural.
When you add these new files, you have to think a little bit, about whether
you want them checked in as a binary file, or just a regular file. All
rpm's should be checked in as binary files.
When a normal file get's checked into a CVS repository, cvs looks through
it for keywords, such as $INFO. If it finds these keywords, it expands
them into their appropriate cvs information. There are several rpm's
built that cvs will do this do and as a consequence, break them. There
is a fairly simple way to repair them, but it's best to not worry about it,
and simply put all your RPM's (and other binary programs) into the repository
as binaries.
BINARIES
For this example we will be updating our farm-tools rpm to the newest one.
Please note that before you 'remove' a file from cvs, you have to really
remove the file. The same goes for 'add'ing a file, it has to actually be there.
Check In (commit) your changes to the CVS
When you do a cvs commit, it will go through all of the changes, in the
directories beneath you. So if you are in
~brew/CVS/lts304/i386/sites/Fermi/workgroups/Farms/RPMS, it will just do the
changes to that RPMS directory, but if you are in
~brew/CVS/lts304/i386/sites/Fermi/workgroups/Farms, it will do the changes you
did in the RPMS's directory, as well as the changes you did in the scripts directory.
The immediate temptation is to go to the directory ~brew/CVS and do a cvs
commit, but be carefull of that since there might be many workgroups that you
have been working on and you might accidentally do a change you hadn't
finished. (Such as a script you had only halfway finished editing open in a
different window)
When you Check In your changes, you HAVE to have some comment about what you
did. It doesn't have to be long, just describe what you did so that you will
remember why do you those changes. (This is especially helpful when there are
more than one person working on a workgroup.)
If you have just a short comment about the change, you can use the -m option.
If you have a longer note, or forget, then vi (or whatever EDITOR is set to)
will open and you can put a note in that way.
Wait for the e-mail to say that your change has been put into the linux distribution.
For testing distributions (lts30rolling, lts4rolling) this happens every
fifteen minutes. For stable distributions (lts301, lts303, lts304, lts305, lts41, lts42),
this will happen every 2 hours during the day (8:00a.m. to 8:00p.m.).
You, and all those that can modify your workgroup, will recieve an e-mail
saying what changes have been made, and on what machine.
You can then go ahead and test your distribution knowing that your changes are there.