[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: Paul Burba <pburba_at_collab.net>
Date: 2007-10-04 18:32:21 CEST

> -----Original Message-----
> From: Kamesh Jayachandran
> Sent: Saturday, September 29, 2007 3:20 PM
> To: Paul Burba; dev@subversion.tigris.org; kameshj@tigris.org
> Subject: RE: svn commit: r26803 - in trunk/subversion:
> libsvn_client tests/cmdline
>
> >> > * excepting "merge_tests.py 63: merge fails if subtree is
> >> deleted on
> >> > src", which has been failing since r26803.
> >>
>
> >Kamesh - the Win32 buildbots have the details:
>
> >http://www.mobsol.be/buildbot/win32-xp%20VS2005/builds/2379/s
> tep-Test%2
> >0fsfs%2Bra_local/0
>
> >Paul
>
> Paul,
>
> Some thoughts on this failure.
> Something needs to be done in our testsuite to fix this.
>
> expected_merge_output does atleast one match with the regex
> * In linux we did not catch this as actual merge output
> 'D
> svn-test-work/working_copies/merge_tests-63/A_copy/D/gamma'
> did match the regex while the merge notification did not
> match due to r26803.

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

> * In windows somehow
> 'D
> svn-test-work\working_copies\merge_tests-63\A_copy\D\gamma'
> did not match with the regex.
>
> You may ask how does it work with other
> 'expected_merge_output', Almost in all the use of
> 'expected_merge_output' it happened to be for 'single file
> merging' which still uses a old style. In other few cases
> where we use 'expected_merge_output' we do use it for short
> revision range which does merge range for same revs as the old style.
>
> Quick fix would be to change the expectation as matching with
> the new style, like the following patch.
> More proper fix would be to analyse and fix why the path does
> not match in win32 as it does in Linux.

Lieven, on IRC you mentioned:

"pburba: looking at the test output I think that the only problem is
that '.+' in python's regex on Windows doesn't match backslashes, where
on *nix it matches '/'."

In the interest of follow-up it seems that '.+' does handle back slashes
correctly on Win32, e.g.:

>>> import re
>>> regexp = re.compile("--- Merging r3 through r5 into '.+':")
>>> regexp.match("--- Merging r3 DONT MATCH through r5 into
'SOME\\PATH':")
>>>
>>> regexp.match("--- Merging r3 through r5 into 'SOME/PATH':")
  <_sre.SRE_Match object at 0x01202950>
>>> regexp.match("--- Merging r3 through r5 into 'SOME\PATH':")
  <_sre.SRE_Match object at 0x01202528>
>>> regexp.match("--- Merging r3 through r5 into 'SOME\\PATH':")
  <_sre.SRE_Match object at 0x01202950>
>>>

> Still we may need the
> following patch as a matter of completeness.

<snip>

> - svntest.actions.run_and_verify_svn(None, expected_merge_output(3,
> + svntest.actions.run_and_verify_svn(None, expected_merge_output(2,

(Kamesh noted off list that this change is incorrect, since r2 is
already present, rather it is the notification that is wrong.)

That "wrongness" is illustrated here:

>svn st merge_tests-1 -v
                  1 1 jrandom merge_tests-1
                  1 1 jrandom merge_tests-1\A
                  1 1 jrandom merge_tests-1\A\B
                  1 1 jrandom merge_tests-1\A\B\lambda
                  1 1 jrandom merge_tests-1\A\B\E
                  1 1 jrandom merge_tests-1\A\B\E\alpha
                  5 5 jrandom merge_tests-1\A\B\E\beta
                  1 1 jrandom merge_tests-1\A\B\F
                  1 1 jrandom merge_tests-1\A\mu
                  1 1 jrandom merge_tests-1\A\C
                  1 1 jrandom merge_tests-1\A\D
                  1 1 jrandom merge_tests-1\A\D\gamma
                  1 1 jrandom merge_tests-1\A\D\G
                  1 1 jrandom merge_tests-1\A\D\G\pi
                  4 4 jrandom merge_tests-1\A\D\G\rho
                  1 1 jrandom merge_tests-1\A\D\G\tau
                  1 1 jrandom merge_tests-1\A\D\H
                  1 1 jrandom merge_tests-1\A\D\H\chi
                  6 6 jrandom merge_tests-1\A\D\H\omega
                  3 3 jrandom merge_tests-1\A\D\H\psi
                  2 2 jrandom merge_tests-1\A_COPY
                  2 2 jrandom merge_tests-1\A_COPY\B
                  2 2 jrandom merge_tests-1\A_COPY\B\lambda
                  2 2 jrandom merge_tests-1\A_COPY\B\E
                  2 2 jrandom merge_tests-1\A_COPY\B\E\alpha
                  2 2 jrandom merge_tests-1\A_COPY\B\E\beta
                  2 2 jrandom merge_tests-1\A_COPY\B\F
                  2 2 jrandom merge_tests-1\A_COPY\mu
                  2 2 jrandom merge_tests-1\A_COPY\C
                  2 2 jrandom merge_tests-1\A_COPY\D
                  2 2 jrandom merge_tests-1\A_COPY\D\gamma
                  2 2 jrandom merge_tests-1\A_COPY\D\G
                  2 2 jrandom merge_tests-1\A_COPY\D\G\pi
                  2 2 jrandom merge_tests-1\A_COPY\D\G\rho
                  2 2 jrandom merge_tests-1\A_COPY\D\G\tau
                  2 2 jrandom merge_tests-1\A_COPY\D\H
                  2 2 jrandom merge_tests-1\A_COPY\D\H\chi
                  2 2 jrandom merge_tests-1\A_COPY\D\H\omega
                  2 2 jrandom merge_tests-1\A_COPY\D\H\psi
                  1 1 jrandom merge_tests-1\iota
 
>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':
  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':
  U merge_tests-1\A_COPY\D\H\omega

Possibly this will be useful in finding the problem.

Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Oct 4 18:36:29 2007

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