2 messages in com.perforce.perforce-userWhat is a Codeline?
FromSent OnAttachments
Bart...@innovision.com05 May 1999 08:31 
Brad...@enteract.com05 May 1999 09:21 
Subject:What is a Codeline?
From:Brad...@enteract.com (Brad@enteract.com)
Date:05/05/1999 09:21:38 AM
List:com.perforce.perforce-user

Barton Stanley writes:

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".

Actually - a codeline is a *path* *of* *evolution/development* of the canonical set of source files that is required to produce a given software (sub)system. Note that "produce" does not mean any kind of formal release in this context, it just means in order to build some stable/consistent configuration that might be used in a client view (for whatever reason - so don't try to read too much into the meaning of "produce" - it has no specialized release-engineering meaning here).

But in the context of the paper you are reading, most of the time, a codeline corresponds to any one single branch. Branch and codeline are almost interchangeable, so long as the "branch" in question is used for the *entire* "canonical set of sourcefile" and not just some really small subset. Since Perforce's inter-file branching does auto-copying of revisions from ancestor branches to heir branches (copying by reference rather than by value), this distinction can be hard to make; it may simply come down to a matter of conceptual intent.

I would appreciate any comments on this.

For the purpose of the paper, I would say a codeline is any branch that can be used to (possibly in conjunction with a baseline/label) to select or build a valid configuration of the code on that branch.

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?

I usually distinguish between a "branch" and a "codeline" in that I do not consider a branch that is used for only one logical development activity to be a codeline. If it will be receiving the changes/results of multiple "change-tasks" ('changes' or 'jobs' in p4 terms), *then* I will consider it a codeline; otherwise a call it a "task-branch" or an "activity-branch". I use the term "branch" more generally, since it could be a codeline, or for a single task. But if I use the term "codeline" and "branch" in the discussion of the same branching strategy, then I usually use "branch" to mean a child-branch spawned from the codeline (which is the parent branch). And the child-branch in this case might be any kind of branch (a codeline or an activity).

See http://www.enteract.com/~bradapp/acme/branching/ to see more discussion about how I choose to define and use these terms.

Hope that helps!

--- Brad Appleton <bradapp at enteract.com> | http://www.enteract.com/~bradapp/ "And miles to go before I sleep." | 3700+ WWW links on CS & Sw-Eng