>> We merge -r13, -r17(conflicting), -r29 from /trunk to /feature_branch
>> + local non-conflicting change + conflict resolution to r17 to
>> /feature_branch/test.c and commit at r40
>> (Assume this is the only synch up)
>> Now we merge /feature_branch -r1:40 back to /trunk.
>> It does a merge of -r1:39 which is a normal merge.
>> It does a reflective merge of 40.
>> Let us say /feature_branch/test.c got a change from a merge at
>> r40(Our first merge)
>> To calculate the *meaningful diff*, We apply -r13 change to OLDER,
>> and r29 change to OLDER. (SEE WE DONT APPLY r17 as it is a
>> conflicting one)/
>> Now in this case after the above 2 merges(r13, r29) OLDER becomes
>> (YOURS-local non conflicting changes - r17 - conflict resolution to
>> r17) and hence
>> (YOURS-YOURS +local non conflicting changes + r17 + conflict
>> resolution to r17) is applied to MINE. i.e local non conflicting
>> changes + r17 + conflict resolution to r17.
> Isn't r17 already contained in MINE and now applied again?
We are not applying the r17, sorry if I worded it that way. Following
example should make this case clear.
Consider the case
a. /trunk/test.c = 'line1\nline2\nline3'
b. Create feature branch /feature_branch from /trunk
c. Modify /trunk/test.c line1 -> tline1 at r13
d. Modify /trunk/test.c line2 -> tline2 at r17
e. Modify /trunk/test.c line3 -> tline3 at r29
f. Modify /feature_branch/test.c line2 ->fbline2 commit at r30.
g. merge /trunk r13 to /feature_branch working copy. NO COMMIT
h. merge /trunk r17 to /feature_branch working copy. This would give
raise to a conflict resolve it by 'line2' being 'RESOLVED_LINE2'. NO COMMIT
i. merge /trunk r29 to /feature_branch working copy. COMMIT at r40
j. merge /feature_branch to /trunk working copy.
r40 is merged with reflective call back.
reflective_merge_file_changed(mine, older, yours)
mine = 'tline1\ntline2\ntline3'
older = 'line1\nfbline2\nline3'
yours = 'tline1\nRESOLVED_LINE2\ntline3'
After merging r13 older='tline1\nfbline2\nline3'
After merging r29 older='tline1\nfbline2\ntline3'
diff(older, yours) = "@@ -1,3 +1,3 @@
Which would give raise to a conflict as trunk does not have 'fbline2'.
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-01-11 14:34:04 CET