Call for testers: CVSMode for csup

Ulf Lilleengen lulf at
Thu Mar 6 04:45:04 PST 2008

Hello all,

During the past few months, I've implemented CVSMode support for csup. This
means one can use csup to fetch complete CVS repositories. However, first I'd
like everyone who'd like to help, to try out this patch and test to find bugs
and issues with it. Currently, I'm pretty sure it should behave correctly in the
normal cases, but therefore needs to be tested by a wider audience. Also,
there are some flaws that are noted at the bottom of this e-mail, but the
important thing is to test the correctness regarding RCS.

For now, I'm including the tokenizer generated by flex since the base system
flex won't be good enough yet. Hopefully, it'll get updated soon.

A more technical overview:
The support for CVSMode is accomplished by extending the already good
foundation of csup to support the commands listed in the cvsup protocol. This
means that I've added support for this in the detailer (the part giving the
cvsup server the client file info) and updater(the one taking orders from the
server) part of csup. In addition, I've created the rcsfile-interface.  The
interface specifies functions to add and remove deltas, tags, attributes etc.
of a RCS file. To initially read a RCS file, I've created a parser using flex
as tokenizer. Since the parser and tokenizer must be reentrant (both updater
and detailer uses it), a fairly new version of flex is needed.

There are some known issues with this patch:
- Some RCS files contains extra whitespaces due to hackery. CVSup solves this by
  counting them during reading. This could perhaps be solved by using a newline
  counter in the lexxer, but I'm not sure if this is really necessary.

- Some RCSfiles such as
  src/share/examples/kld/firmware/fwimage/firmware.img,v  differ because there
  are some unknown garbage I think, but this should be investigated and

- It has a quite high memory usage, and this might be due to some leaks that
  I've been unable to find. I'll do a much better audit of the code and run
  valgrind to investigate this further.

- Does not support md5 of RCS stream, so it can't detect errors yet.

- Statusfile file attributes might not be correct.

- Some RCS parts such as newphrases (man rcsfile) is not supported yet.

- Some hardcoded limits that may break it.

- Things done a silly way such as sorting and comparing, which I have plans to
  improve later. Please consider this as a very pre-alpha patch :)

Given this list, I'm not so sure unleashing this patch is so good after all :),
but it's really very experimental for now.

As i mentioned, the things I want to be tested right now is if it does the
RCS update procedure correctly in all cases (except the points I just
mentioned). I've been testing on some parts of the FreeBSD src repository
(diffing the result against cvsup result), and this is a quite good testcase,
but different repos is always good.

The latest patches for CURRENT and RELENG_7 can be found here:

Also, I'll be on and off the internet during the next few weeks (in Japan
until 25th of march), so I might respond a bit late. I'll come back with
more improvements and new patches as soon as I can.

Ulf Lilleengen

More information about the freebsd-current mailing list