<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/michael_roach/perforce/faq/br02.html#1 $ in the <a href="http://public.perforce.com/public/index.html"> Perforce Public Depot</a></h6> </body> </html>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 1424 | Michael Roach | Creating initial guest branch of perforce\faq\... | ||
//public/perforce/faq/br02.html | |||||
#1 | 112 | Laura Wingerd |
Publish "Branching FAQ" (pull in changes from //guest/laura_wingerd/perforce/faq/... ) |
||
//guest/laura_wingerd/perforce/faq/br02.html | |||||
#2 | 85 | Laura Wingerd | Correct typos and add a few clarifications. | ||
#1 | 83 | Laura Wingerd | The Branching Papers. |