title: Does perforce track deltas unique to a changeset or does it just store the whole file?
body: <p>I tried to merge some work that a developer did in a working branch to a stable branch.  The files a, b, and c had been changed by at least a dozen changesets since the common ancestor of STABLE and HEAD branches were separated.</p>
  
  <p>I expected that since this developer changed five lines in each of file a, b, and c, that when I integrated from the HEAD to the STABLE branch, I would get his changes in my pending changset, which I could then review and commit.</p>
  
  <p>Instead, it seems that it has taken every change that happened to file A, since the two were branched, and applied all of those changes that also existed in my colleague's working copy.</p>
  
  <p>In other words, there seems to be no record in a perforce changeset, of what my colleague actually changed, versus what the file before contained. </p>
  
  <p>If I browse the submitted changesets, I can see the difference between my colleague's version of the file, and the immediately preceding version.   But then, that does not, it seems, determine what goes into the merge.</p>
  
  <p>Doesn't a changeset mean, "a set of changes made between rev X and revision X+1 of a file"?
  Can anybody help me understand what it means to "integrate a changeset" when in fact, what it seems is that Perforce doesn't track changes, it tracks files.</p>
  
  <p>It is entirely possible that I am doing everything wrong, and would appreciate any pointer as to how it is that you can can merge accurately and safely between Perforce working branches and stable branches, without stuff that you don't want to get integrated to the stable branch getting integrated.  It seems that no matter how simple the changes that actually get made in the product, the merge does not actually work for me.</p>