[p4] Codelines and Components

David Ferguson daf at vmware.com
Thu Nov 20 13:20:35 PST 2008

FWIW, we've basically identified that every time we branch one of our 'big' branches, we add 40M to our DB.


From: Matt Craighead [mailto:matt.craighead at conifersystems.com]
Sent: Thursday, November 20, 2008 1:16 PM
To: Smith, Roy
Cc: David Ferguson; Chris Helck; perforce-user at perforce.com
Subject: Re: [p4] Codelines and Components

> My understanding is that the copy-on-write semantics make branching very low cost

It would be nice if this were true, but unfortunately Perforce branching is not as cheap as Perforce's marketing materials suggest.

Branching a tree in Subversion is O(1), no matter how many files are in the tree.  As you commit changes to the branch, the nodes are subdivided.  The eventual cost of a branch is roughly proportional to the number of files you edit inside the branch.

Branching a tree in Perforce is O(number of files in the tree).  The size of the files doesn't matter, but the total number of files matters.  It has to create a new database record for each file branched, even if you have no intention of ever modifying that part of the tree in the branch.  The basic problem is that Perforce does not track "directories" as first-class concepts, so it can't refer to an entire directory tree of files "by reference" -- it has to populate the tree all the way down.

Still, even with this cost, I lean towards the //depot/main/component model.

On Thu, Nov 20, 2008 at 2:50 PM, Roy Smith <smith_roy at emc.com<mailto:smith_roy at emc.com>> wrote:
On Nov 20, 2008, at 2:52 PM, David Ferguson wrote:

My objection to the //depot/main/component is fundamentally one of branching expectations.  That policy tends to drive people toward branching all components every time any of them branch.

Is that a problem?  I always branch the whole project.  My understanding is that the copy-on-write semantics make branching very low cost, so why not branch it all?  It sure beats branching just one component and then discovering later that you really needed to branch some other component and have to go back and branch it too, etc

Roy Smith <smith_roy at emc.com<mailto:smith_roy at emc.com>>
Software Guy, EMC
1133 Westchester Ave, 3rd floor
White Plains, NY 10604
+1 914 461 3597
AIM: roysmith649

Matt Craighead
Founder/CEO, Conifer Systems LLC

More information about the perforce-user mailing list