<html>
<head>
<title>The Branching Papers -- Perforce FAQs</title>
<head>
<body bgcolor=#ffffff>
<font size=-2><b><a href="branching.html#br02">[INDEX]</a></b></font>
<p>
<b>
We tried to integrate a single change from one branch to
another but in the resolve step we saw hundreds of deltas
that weren't in this change. Why was this?
</b>
<blockquote>
Assume @123 is a changelist that was a bug fix in //depot/6.0.
And assume you used:
<pre>
p4 integ //depot/6.0/...@123,@123 //depot/6.0.1/...
</pre>
to propagate the bug fix from //depot/6.0 to //depot/6.0.1.
<p>
Using "@123,@123" as a revision spec in <b>p4 integrate</b>
is saying "integrate
from @123 to @123", which limits it to only the deltas associated with
changelist @123.
<p>
However, if this is a "leapfrogging integration" (that is, there are
changelists previous to @123 which are NOT being integrated) then the
<b>p4 resolve</b> step can be confusing unless you know what's happening.
<p>
The thing you have to look out for is that <b>p4 resolve</b> always uses
the rev previous to the "from rev" to do the 3-way merge.
<p>
I'm sure that didn't make any sense, so here's an illustration.
Say //depot/6.0.1 is only integrated with //depot/6.0, up as far as @100
in //depot/6.0. Now you do a
<pre>
p4 integ //depot/6.0/...@123,@123 //depot/6.0.1/...
</pre>
Let's see what
happens to //depot/6.0/foo.c:
<p>
<ul>
<p><li>
//depot/6.0/foo.c is being integrated into //depot/6.0.1/foo.c
<p><li>
the 'yours' file in the <b>p4 resolve</b> will be //depot/6.0.1/foo.c at
its current revision on your client
<p><li>
the 'theirs' file in the <b>resolve</b> will be //depot/6.0/foo.c@123
<p><li>
BUT LOOK: the 'base' file will be //depot/6.0/foo.c@122
</ul>
<p>
This means that fixes in 6.0/foo.c after @100 and before @123 will appear
as "backing out" diffs in the resolve step. When you look at the
'diff yours' output, all deltas from @101 to @122 will look like they're
being backed out of the 6.0.1/foo.c file.
<p>
The thing is, even though the diffs LOOK like they're being backed out,
they're not really, because they were never in the 6.0.1/foo.c file to begin
with. But since they're in the base file, you see them in the resolve
process.
<p>
As long as you expect this, it's not a problem, but most people are
completely thrown the first time they see it. (That's why I usually try
to discourage shops from doing leapfrogging integrations, but sometimes they
just can't be avoided.)
</blockquote>
<p>
<i>(March 1998)</i>
<p>
<font size=-2><b><a href="branching.html#br02">[INDEX]</a></b></font>
<hr>
<h6>This is file $Id: //guest/laura_wingerd/perforce/faq/br02.html#2 $ in the
<a href="http://public.perforce.com/public/index.html">
Perforce Public Depot</a></h6>
</body>
</html>