1999-05-05 15:31:23 UTC
I hope this is an appropriate forum for my question. If not, please let me know sams flames.
I've been looking at the "best practices" SCM document ( http://www.perforce.com/perforce/bestpractices.html ), and I'm a little confused about what a codeline actually is. My trouble starts at section 3, The Codeline, under the bullet "Have a mainlne", where it says, "A mainline...is the branch of a codeline that evolves forever" When I read this, it sounds like a codeline is the mainline, plus other stuff. In fact, if I were to infer a definition of a codeline from this statement alone, I would conclude that a codeline is the mainline and all its branches. However, later on under that same bullet it says that "release codelines and development codelines are branched from the mainline". This makes it sound like each development branch and each release branch is a codeline. If this is the case, I can't make sense out of the earlier definition of a mainline.
I have even more trouble when I read the paragraph right under section 3, The Codeline that says, "In this context, the codeline is the canonical set of source files that is required to produce your software". Now, according to my understanding, I would never use the source files in a development branch to produce my software--I would only use the stuff in release branches for this. Further, according to my definition of "canonical", I would never consider stuff in a development branch to be canonical in any sense--the whole point of development branches as I understand it, is to allow people to check in stuff regardless of its state. So, this definition of a codeline makes it sound like development branches are not codelines because they are not canonical, and are not used to produce the software.
I would appreciate any comments on this.
Also, are most people careful to distinguish between a "branch" and a "codeline", i.e. that a "branch" is just the branchpoint, or the Perforce branch specification, and a "codeline" is a set of files?