What about branch from a branch ? In general you need a tuple of (base version, branch id, branch version) to identify a branch version. Similarly a branch on a branch would become ((base version, branch id, branch version), branch2 id, branch2 version).
In VW we use the following convention base version + branch id - branch version which then naturally extends to base version + branch id - branch version + branch2 id - branch2 version In monticello, your 'version' is author.nr (to accommodate distributed development) so the scheme would become author0.nr0 + branch1 - author1.nr1 + branch2 - author2.nr2 People probably won't like that, but I think the notion of the version identification tuple is relevant to the discussion. For example neither of the schemes below indicates where the branch starts. "Lukas Renggli"<reng...@gmail.com> wrote: > You cannot get rid of branching, this is a central part of version > control and extensively used in many large projects. > > In Seaside we use the following pattern, also see the documentation at > http://code.google.com/p/seaside/wiki/PackageNaming: > > Package = PackageName "-" Author { "." Branch } "." Version > > However I noticed that other projects (and earlier versions of > Seaside) use a different scheme: > > Package = PackageName { "." Branch } "-" Author "." Version > > In this case I guess we must support: > > Package = PackageName { "." Branch } "-" Author { "." Branch > } "." Version > > However, that doesn't change that $. and $- cannot be part of the > PackageName or Author.