[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Using svn 1.5.1 merge tracking with existing branches

From: Mark Phippard <markphip_at_gmail.com>
Date: Mon, 25 Aug 2008 17:09:11 -0400

On Mon, Aug 25, 2008 at 5:05 PM, Murli Varadachari
<mvaradachari_at_facebook.com> wrote:
> On 8/25/08 12:59 PM, "Mark Phippard" <markphip_at_gmail.com> wrote:
>
> On Mon, Aug 25, 2008 at 3:39 PM, Murli Varadachari
> <mvaradachari_at_facebook.com> wrote:
>
>> We are planning to switch our subversion 1.4.x repositories over to 1.5.1
>> shortly — this effectively means that developers can start using the merge
>> tracking functionality right away.
>>
>> Our current development model is as follows ==>
>>
>> Main development work is done on the trunk -- new features etc are done
>> on
>> branches [ based off the trunk]. Developers frequently merge changes from
>> the trunk to their feature branches and on occasion merge their work back
>> from branch to trunk. The actual revision# and command itself is added
>> as
>> a part of the comment during the merge-commit operation.
>>
>> Example:
>>
>> Create a new branch "mybranch" from trunk at rev# X
>>
>> After some trunk commits the changes are sucked into mybranch
>>
>> svn merge –r X:Y trunk <mybranch-WC>
>>
>> .. Later on more trunk commits are merged to mybranch
>>
>> svn merge –r Y:Z trunk <mybranch-WC>
>>
>> Finally the branch commits are merged back to trunk..
>>
>> svn merge trunk_at_X mybranch <trunk-WC-at latestrev>
>>
>> Going forward the simplest solution would have been to have developers
>> (a)
>> cut a new branch from trunk and (b) start using the new merge /
>> reintegrate
>> process for trunk -> br and br->trunk [reintegrate] merges.
>>
>> However that does not seem likely any time soon since many developers are
>> not ready to merge back their changes to trunk from their feature
>> branches
>> . So my question is how can I convert the current process so that I can
>> start using " svn —reintegrate mybranch <trunk-WC>" on existing branches.
>> There is no prior merge history in 1.4.x other than comments. At this
>> point
>> I can't use the above option — merge complains about not having the
>> necessary information to —reintegrate.
>
>>>Assuming branches were created via svn copy, then SVN should recognize
>>>>the natural history of the branch. I'd think if you knew the last
>>>revision from trunk that you had merged from you could run this
>>>command on the branch root and commit the prop change it would create:
>
>>>>svn merge --record-only -r0:LAST_REV url://trunk .
>
>>>>You could probably replace the "0" with the revision when the branch
>>>>was created. I'd like to think --record-only is smart enough to do
>>> the same, but I did not try it.
>
>>>>Once you do this, you should be able to start using:
>
>>>>svn merge url://trunk
>
>>>>To merge future changes from trunk automatically. And use
>>>>--reintegrate when you are done.
>
>
> The question that is still not clear is how will the --reintegrate option
> work.
>
> Let use assume that the initial branch was created from trunk at rev#
> 100000. Subsequently I merged back from branch -> trunk at rev# 100110
> manually [ pre-1.5] . Since then I have made a large number of commits into
> branch that haven't been merged to trunk at all. Instead recently I pulled
> in changes from trunk once again at rev# 150000 once again. More commits
> into branch up rev# 1500010.
>
> Now I switch to svn 1.5.1 ==>
>
> To follow you proposal — I could do this
>
> svn merge —record-only –r 100000:150000 url://trunk <mybranch-WC> [ this
> will record the fact that all revisions upto 150000 on trunk have been
> merged ]
>
> Now when I run "svn merge —reintegrate url://mybranch <trunk-WC>" what
> should I expect / what would this record?
>
> Will it pull in all changes to branch from rev# 100000 OR after rev# 150000.
> How will it deal with my manual merge at rev# 100110

You will have a checked out WC from trunk, and you will run this command:

svn merge --reintegrate url://branch

Internally, that command will do the same as this command:

svn merge url://trunk@150000 url://branch@HEAD

In other words, SVN compares the current branch with trunk at the last
revision that was merged to the branch. This produces an accurate
diff of what is changed on the branch and applies that to the trunk WC
as the merge operation.

-- 
Thanks
Mark Phippard
http://markphip.blogspot.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-08-25 23:09:34 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.