[Svnmerge] Directory conflicts, unicode values in array self.revs
Hermanns, Horst
h.hermanns at telekom.de
Tue Mar 25 00:52:18 PDT 2008
I did not see my message in the Svnmerge Mail Archive (perhaps something
went wrong), so I send it once more.
Raman Gupta wrote:
>25683 would be the rev where the bug manifests itself but it isn't the
cause of the mixed unicode/non-unicode values. We now at least know that
the >underlying problem has been around for a while and has not been
introduced recently.
>
>Any chance you can provide a reproducible test script for this problem?
I'm not so familiar with the svnmerge_test.py, so I made a Shell-Script
to reproduce the problem.
Scenario:
- Checkout a Test-Repo (URL 'TESTREPO' in script header)
- Create a Base-Dir BASE
- copy BASE to bra1/bra2/bra3 and initialise merge tracking
- make changes in bra2 and merge back to BASE
- make changes in bra1 and merge back to BASE (only to create
non continuous revisions)
- make changes in bra3 and merge back to BASE
- merge changes in BASE to bra1 -> create conflict
Additonally I added follwing Debug-Output to svnmerge.py
519 # Find the index using a binary search
520 i = bisect(self.revs, rev) - 1
521
522 + print "Output self.revs and i"
523 + print self.revs
524 + print i
Please find attached the script and a output-log
(svnmerge_unicode_test.sh, output_conflict_unicode.log). The Output of
self.revs and index starts at line 200.
...
Output self.revs and i
[0, 723, u'730', u'731', u'732', u'734', u'736', u'738', 739]
1
...
I've made a second run with type change of self.revs (for ...,
self.revs[revi]=int(self.revs[revi]). No errors occur with this version.
See 'output_type_change.log'.
...
Output self.revs and i
[0, 706, 713, 714, 715, 717, 719, 721, 722]
4
...
I hope this will help to solve the problem.
Thanks and Cheers
Horst
-----------
--> svnmerge_unicode_test.sh
#!/bin/sh
set -x
TESTREPO="http://localhost/svn/test"
svn co $TESTREPO test_unicode_conf
cd test_unicode_conf
# - Create Base-Dir BASE
# - copy BASE with 'svnmerge init' to bra1/bra2/bra3
# - make changes in bra2 and merge back to BASE
# - make changes in bra1 and merge back to BASE (only to create non
continuous revisions)
# - make changes in bra3 and merge back to BASE
# - merge changes in BASE to bra1
# -> Conflict
# Create BASE-Dir
svn mkdir BASE
svn ci -m "test"
svn copy $TESTREPO/BASE $TESTREPO/bra1 -m " "
svn copy $TESTREPO/BASE $TESTREPO/bra2 -m " "
svn copy $TESTREPO/BASE $TESTREPO/bra3 -m " "
svn update
cd bra1
svnmerge.py init
svn ci -F svnmerge-commit-message.txt
cd ..
svn update
cd bra2
svnmerge.py init
svn ci -F svnmerge-commit-message.txt
cd ..
svn update
cd bra3
svnmerge.py init
svn ci -F svnmerge-commit-message.txt
cd ..
cd BASE
svn update
svnmerge.py init $TESTREPO/bra1
svn ci -F svnmerge-commit-message.txt
svnmerge.py init $TESTREPO/bra2
svn ci -F svnmerge-commit-message.txt
svnmerge.py init $TESTREPO/bra3
svn ci -F svnmerge-commit-message.txt
cd ..
cd bra2
touch test2
svn add test2
svn ci -m "bra2"
cd ..
cd BASE
svn update
svnmerge.py merge -b -S $TESTREPO/bra2
svn ci -F svnmerge-commit-message.txt
cd ..
cd bra1
touch test1
svn add test1
svn ci -m "bra1"
cd ..
cd BASE
svn update
svnmerge.py merge -b -S $TESTREPO/bra1
svn ci -F svnmerge-commit-message.txt
cd ..
cd bra3
touch test3
svn add test3
svn ci -m "bra3"
cd ..
cd BASE
svn update
svnmerge.py merge -b -S $TESTREPO/bra3
svn ci -F svnmerge-commit-message.txt
cd ..
cd bra1
svn update
svnmerge.py merge -b -vv
svn pl -v
cat dir_conflicts.prej
---------------------------
--> output_conflict_unicode.log
...
svnmerge: memorizing phantom revision(s): 724-729,733,735,737
svnmerge: memorizing reflected revision(s): 730,736
svnmerge: skipping initialized revision(s): 730-732
svnmerge: merging in revision(s) 734,738 from
"http://localhost/svn/test/BASE"
svn --non-interactive propget --strict "svnmerge-blocked" "."
Output self.revs and i
[0, 723, u'730', u'731', u'732', u'734', u'736', u'738', 739]
1
svn --non-interactive propdel "svnmerge-integrated" "."
property 'svnmerge-integrated' deleted from '.'.
Output self.revs and i
[0, 723, 739]
1
svn --non-interactive propdel "svnmerge-blocked" "."
property 'svnmerge-blocked' deleted from '.'.
svn --non-interactive merge --force -r 733:734
http://localhost/svn/test/BASE .
A test2
C .
Output self.revs and i
[0, 723, u'730', u'731', u'732', u'734', u'736', u'738', 739]
1
svn --non-interactive propdel "svnmerge-integrated" "."
property 'svnmerge-integrated' deleted from '.'.
...
-------------------------------
--> output_type_change.log
...
svnmerge: memorizing phantom revision(s): 707-712,716,718,720
svnmerge: memorizing reflected revision(s): 713,719
svnmerge: skipping initialized revision(s): 713-715
svnmerge: merging in revision(s) 717,721 from
"http://localhost/svn/test4/test/test2/BASE"
svn --non-interactive propget --strict "svnmerge-blocked" "."
Output self.revs and i
[0, 706, 713, 714, 715, 717, 719, 721, 722]
4
svnmerge: property data written to temp file: /test/test2/bra1:1-707
/test/test2/bra2:1-708 /test/test2/bra3:1-709
svn --non-interactive propset "svnmerge-integrated" -F "/tmp/tmpO5PXIy"
"."
property 'svnmerge-integrated' set on '.'
Output self.revs and i
[0, 706, 722]
1
svn --non-interactive propdel "svnmerge-blocked" "."
property 'svnmerge-blocked' deleted from '.'.
svn --non-interactive merge --force -r 716:717
http://localhost/svn/test4/test/test2/BASE .
A test2
U .
Output self.revs and i
[0, 706, 713, 714, 715, 717, 719, 721, 722]
6
svnmerge: property data written to temp file: /test/test2/bra1:1-718
/test/test2/bra2:1-716 /test/test2/bra3:1-709
svn --non-interactive propset "svnmerge-integrated" -F "/tmp/tmpGw5qZy"
"."
property 'svnmerge-integrated' set on '.'
Output self.revs and i
[0, 706, 722]
1
svn --non-interactive propdel "svnmerge-blocked" "."
property 'svnmerge-blocked' deleted from '.'.
...
More information about the Svnmerge
mailing list