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

Re: svn commit: r26803 - in trunk/subversion: libsvn_client tests/cmdline

From: Kamesh Jayachandran <kamesh_at_collab.net>
Date: 2007-10-05 12:16:54 CEST

Paul,

> But if it did not match on Linux, why has this test been passing on
> Linux?
>
>

It passes on Linux because, verify.createExpectedOutput creates
'RegexOutput' object with 'match_all' being false and hence it tries to
match atleast on line line in the output.
In linux

'D svn-test-work/working_copies/merge_tests-63/A_copy/D/gamma' matches our regex and hence we get the PASS.

In windows

'D svn-test-work\working_copies\merge_tests-63\A_copy\D\gamma' does not match our regex and hence we get the FAILURE.

The cause of this difference is when we author a regex we need to escape
'\' with '\\' when combined with our python escaping we need to replace
'\\' with '\\\\'.

I tried this concept in win32 box and it proves correct, Committed the
same in r26945.

Currently the notification happens from do_merge based on the revisions
we give from discover_and_merge_children. Actual decision of which range
to merge happens inside the drive_merge_report_editor. If I move this
logic to discover_and_merge_children, we can fix the notification.

But I am concerned about the following case.

Consider the case where the 'target' has mergeinfo '/src:7-10' and
'target/child' has mergeinfo '/src/child:9 (This is possible via reverts).
If we merge -r6:11 of /src,
Currently it would notify

--- Merging r7 through r8 into 'target':
--- Merging r9 through r11 into 'target':

I think the current behaviour is correct "Merging r7 through r8 into
'target'"(no-op) as it means a possible merge on child.

If we tweak this to "--- Merging r11 into 'target': ", It would be wrong
again as it does a merge of 'r6:8' on target/child.

Should we notify on each 'set_path'(non-noop) call in
drive_merge_report_editor?

> >svn pl -vR merge_tests-1
> Properties on 'merge_tests-1\A_COPY':
> svn:mergeinfo : /A:1
>
> ### WE EXPECT AND SEE NOTIFICATION FOR r4-5 INCLUSIVE...
> >svn merge -r3:5 %URL%/A/D merge_tests-1\A_COPY\D
> --- Merging r4 through r5 into 'merge_tests-1\A_COPY\D':
> U merge_tests-1\A_COPY\D\G\rho
>
> >svn pl -vR merge_tests-1
> Properties on 'merge_tests-1\A_COPY':
> svn:mergeinfo : /A:1
> Properties on 'merge_tests-1\A_COPY\D':
> svn:mergeinfo : /A/D:1,4-5
>
> ### ...NOW REPEAT A SUPERSET OF THE PREVIOUS MERGE RANGE
> >svn merge -r2:6 %URL%/A/D merge_tests-1\A_COPY\D
> ### THIS LOOKS FINE, JUST r2
> --- Merging r3 into 'merge_tests-1\A_COPY\D':
> U merge_tests-1\A_COPY\D\H\psi
> ### BUT SHOULDN'T THIS BE *JUST* r6 IN THE NOTIFICATION?
> --- Merging r4 through r6 into 'merge_tests-1\A_COPY\D':
>

Hope the explanation above answers this.

> U merge_tests-1\A_COPY\D\H\omega
>
> ### AT LEAST THE MERGEINFO IS RIGHT :-)
> >svn pl -vR merge_tests-1
> Properties on 'merge_tests-1\A_COPY':
> svn:mergeinfo : /A:1
> Properties on 'merge_tests-1\A_COPY\D':
> svn:mergeinfo : /A/D:1,3-6
>
> Kamesh is looking into this problem...and speaking of, I did notice that
> in the case where the second merge range isn't a superset, but rather an
> intersection with the existing mergeinfo *and* the ranges still to be
> merged are greater than the intersecting ranges, then the notification
> works:
>
> >svn merge -r4:6 %URL%/A/D merge_tests-1\A_COPY\D
> --- Merging r5 through r6 into 'merge_tests-1\A_COPY\D':
> U merge_tests-1\A_COPY\D\H\omega
>
> >svn pl -vR merge_tests-1
> Properties on 'merge_tests-1\A_COPY':
> svn:mergeinfo : /A:1
> Properties on 'merge_tests-1\A_COPY\D':
> svn:mergeinfo : /A/D:1,5-6
>
> >svn merge -r2:6 %URL%/A/D merge_tests-1\A_COPY\D
> ### r5-6 ALREADY PRESENT, SO THE
> ### NOTIFICATION ONLY REPORTS r3-4
> --- Merging r3 through r4 into 'merge_tests-1\A_COPY\D':
> U merge_tests-1\A_COPY\D\G\rho
> U merge_tests-1\A_COPY\D\H\psi
>
> >svn pl -vR merge_tests-1
> Properties on 'merge_tests-1\A_COPY':
> svn:mergeinfo : /A:1
> Properties on 'merge_tests-1\A_COPY\D':
> svn:mergeinfo : /A/D:1,3-6
>
> We still see the notification problem when the ranges intersect but the
> remaining ranges are less than the intersecting ranges:
>
> >svn merge -r2:4 %URL%/A/D merge_tests-1\A_COPY\D
> --- Merging r3 through r4 into 'merge_tests-1\A_COPY\D':
> U merge_tests-1\A_COPY\D\G\rho
> U merge_tests-1\A_COPY\D\H\psi
>
> >svn pl -vR merge_tests-1
> Properties on 'merge_tests-1\A_COPY':
> svn:mergeinfo : /A:1
> Properties on 'merge_tests-1\A_COPY\D':
> svn:mergeinfo : /A/D:1,3-4
>
> >svn merge -r2:6 %URL%/A/D merge_tests-1\A_COPY\D
> ### SHOULD BE 'r5 through r6'
> --- Merging r3 through r6 into 'merge_tests-1\A_COPY\D':
>

Hope the explanation above answers this.

With regards
Kamesh Jayachandran

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Oct 5 12:17:08 2007

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

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