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

Re: resolve conflict dialog is confusing

From: Dave Huang <khym_at_azeotrope.org>
Date: Fri, 21 Oct 2011 09:53:23 -0500

On Oct 21, 2011, at 9:00 AM, Bob Archer wrote:
> Yea, I know. Not the point. I could just of well have said:
>
> svn merge http://myserver/myrepo/MyProject/branches/MyFeature
>
> implies SOURCE2 and TARGET from the pwd which is a working copy. You are only specifying SOURCE1 or what TSVN calls "FROM" in its dialogs.
>
>> 'C:\Users\Dave\AppData\Local\Temp' is not a working copy; I assume TSVN's
>> current directory was set to the temp dir, rather than my WC dir). However,
>> both source1 and source2 of the merge are derived from that path, not just
>> source2. SVN merges always need two sources--what you said later about a
>
> No, when you merge in TSVN you select SOURCE1, it is what you put in the "FROM" path in the TSVN dialog. It has nothing to do with the working copy or the working copy's associated svn path.

And in your previous message, you wrote:
> So, when you don't specify SOURCE2 then the associated repository of the URL is what is used as SOURCE2.

However, that's incorrect--"svn merge http://myserver/myrepo/MyProject/branches/MyFeature" with the command-line client is equivalent to TSVN's do a "Merge a range of revisions" with "URL to merge from" set to "http://myserver/myrepo/MyProject/branches/MyFeature" and "Revision range to merge" left blank.

TSVN says of the Revision range box, "To merge all revisions, leave the box empty," which isn't as explicit as the command-line client's "If no revision range is specified, the default range of 0:REV is used," but means the same thing. The CLI help also says, "'-r N:M' specifies a revision range to be merged. The difference between SOURCE_at_REV as it existed at revision N, and SOURCE_at_REV at it existed at revision M, is merged into TARGET_WCPATH."

Note that last sentence. So both SOURCEs are derived from http://myserver/myrepo/MyProject/branches/MyFeature: SOURCE1 is http://myserver/myrepo/MyProject/branches/MyFeature at revision 0, and SOURCE2 is http://myserver/myrepo/MyProject/branches/MyFeature at HEAD (with the added caveat of "If mergeinfo within TARGET_WCPATH indicates that revisions within the range were already merged, changes made in those revisions are not merged again.") In no case is the repo path associated with the WC used as either SOURCE1 or SOURCE2.

If it worked as you say, how would a merge do anything useful? Assume your WC has no local changes (as is the usual case during a merge), so your WC has the same contents as its associated repo path. And for simplicity, assume this is your first merge, so there's no mergeinfo. If you take the differences from some SOURCE URL and your WC's repo path, then apply that diff to your WC, you're going to try to double-apply every single difference between the two: conflicts galore.

-- 
Name: Dave Huang         |  Mammal, mammal / their names are called /
INet: khym_at_azeotrope.org |  they raise a paw / the bat, the cat /
FurryMUCK: Dahan         |  dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 35 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++
------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=2859932
To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2011-10-21 16:53:51 CEST

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

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