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 confirmed. - 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: http://people.freebsd.org/~lulf/patches/csup/cvsmode 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 LilleengenReceived on Thu Mar 06 2008 - 11:45:04 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:28 UTC