On Wed, 2006-03-22 at 17:50 -0800, Linus Torvalds wrote: > I'm not 100% sure this is appropriate, but in general, I think "<rev>" and > "<rev>.1" should be considered the same thing, no? Which implies that > "1.1" and "1.1.1.1" are all the same thing, and collapse to just "1", ie a > zero dot-count. They are all the same version, after all, no? No. 1.1.1.1 is the first import on the first vendor branch; 1.1 is the head of the tree. vendor branches are total CVS magic and need very special treatment. The initial import sets the 'branch' value in the ,v file to point at the vendor branch. Subsequent imports leave the branch value alone, a commit to the trunk will reset the branch to point at the trunk. This means that use of the default version of the file just after an import gives you the head of the import tree. It's insane, but that's how it works. What I've been doing is to treat imports to a vendor branch which occur sequentially as if they were on the trunk. Imports after an intervening commit to the trunk are placed on a separate branch. The best part is that you get the vendor branch named 1.1.1 *even if you've made a million commits to the trunk*. Which means that you must ignore the numeric relationship between the vendor branch and the trunk and merge them together in date order. > This gets rid of the insane (?) special case of "1.1.1.1" that exists > there now, since it's now no longer a special case. Oh, it's a seriously special case, one which takes seriously special handling, and a careful disregard for normal version number ordering. > I also wonder if trailing ".1" revisions should be ignored when comparing > two revisions. As 'real' CVS version numbers always have four digits, this doesn't much matter. btw -- I've got my parsecvs code doing a pretty good job of discovering the structure of an arbitrary set of ,v files. The last remaining bit of code to write is to correctly construct the tree of branches from the partial trees in each ,v file. With simple trees, things are looking good, with the xserver CVS tree, I get a couple of mis-hung branches as the branch tree is wrong. Fixed tomorrow, I think, at which point it should be able to produce more accurate commits than cvsps does. -- keith.packard@xxxxxxxxx
Attachment:
signature.asc
Description: This is a digitally signed message part