$ "$TESTDIR/hghave" svn svn-bindings || exit 80
$ fixpath()
> {
> tr '\\' /
> }
$ cat > $HGRCPATH <<EOF
> [extensions]
> convert =
> graphlog =
> EOF
$ svnadmin create svn-repo
$ svnadmin load -q svn-repo < "$TESTDIR/svn/move.svndump"
$ svnpath=`pwd | fixpath`
SVN wants all paths to start with a slash. Unfortunately,
Windows ones don't. Handle that.
$ expr "$svnpath" : "\/" > /dev/null
> if [ $? -ne 0 ]; then
> svnpath="/$svnpath"
> fi
> svnurl="file://$svnpath/svn-repo"
Convert trunk and branches
$ hg convert --datesort "$svnurl"/subproject A-hg
initializing destination A-hg repository
scanning source...
sorting...
converting...
13 createtrunk
12 moved1
11 moved1
10 moved2
9 changeb and rm d2
8 changeb and rm d2
7 moved1again
6 moved1again
5 copyfilefrompast
4 copydirfrompast
3 add d3
2 copy dir and remove subdir
1 add d4old
0 rename d4old into d4new
$ cd A-hg
$ hg glog --template '{rev} {desc|firstline} files: {files}\n'
o 13 rename d4old into d4new files: d4new/g d4old/g
|
o 12 add d4old files: d4old/g
|
o 11 copy dir and remove subdir files: d3/d31/e d4/d31/e d4/f
|
o 10 add d3 files: d3/d31/e d3/f
|
o 9 copydirfrompast files: d2/d
|
o 8 copyfilefrompast files: d
|
o 7 moved1again files: d1/b d1/c
|
| o 6 moved1again files:
| |
o | 5 changeb and rm d2 files: d1/b d2/d
| |
| o 4 changeb and rm d2 files: b
| |
o | 3 moved2 files: d2/d
| |
o | 2 moved1 files: d1/b d1/c
| |
| o 1 moved1 files: b c
|
o 0 createtrunk files:
Check move copy records
$ hg st --rev 12:13 --copies
A d4new/g
d4old/g
R d4old/g
Check branches
$ hg branches
default 13:* (glob)
d1 6:* (glob)
$ cd ..
$ mkdir test-replace
$ cd test-replace
$ svnadmin create svn-repo
$ svnadmin load -q svn-repo < "$TESTDIR/svn/replace.svndump"
Convert files being replaced by directories
$ hg convert svn-repo hg-repo
initializing destination hg-repo repository
scanning source...
sorting...
converting...
3 initial
2 clobber symlink
1 clobber1
0 clobber2
$ cd hg-repo
Manifest before
$ hg -v manifest -r 1
644 a
644 d/b
644 @ dlink
644 @ dlink2
644 dlink3
Manifest after clobber1
$ hg -v manifest -r 2
644 a/b
644 d/b
644 dlink/b
644 @ dlink2
644 dlink3
Manifest after clobber2
$ hg -v manifest -r 3
644 a/b
644 d/b
644 dlink/b
644 @ dlink2
644 @ dlink3
Try updating
$ hg up -qC default
$ cd ..
Test convert progress bar'
$ cat >> $HGRCPATH <<EOF
> [extensions]
> progress =
> [progress]
> assume-tty = 1
> delay = 0
> refresh = 0
> EOF
$ cat > filtercr.py <<EOF
> import sys, re
> for line in sys.stdin:
> line = re.sub(r'\r+[^\n]', lambda m: '\n' + m.group()[-1:], line)
> sys.stdout.write(line)
> EOF
$ hg convert svn-repo hg-progress 2>&1 | python filtercr.py
scanning [ <=> ] 1
scanning [ <=> ] 2
scanning [ <=> ] 3
scanning [ <=> ] 4
converting [ ] 0/4
getting files [==========> ] 1/5
getting files [======================> ] 2/5
getting files [==================================> ] 3/5
getting files [==============================================> ] 4/5
getting files [==========================================================>] 5/5
converting [==============> ] 1/4
scanning paths [ ] 0/1
getting files [==========================================================>] 1/1
converting [==============================> ] 2/4
scanning paths [ ] 0/2
scanning paths [============================> ] 1/2
getting files [=============> ] 1/4
getting files [============================> ] 2/4
getting files [===========================================> ] 3/4
getting files [==========================================================>] 4/4
converting [=============================================> ] 3/4
scanning paths [ ] 0/1
getting files [==========================================================>] 1/1
initializing destination hg-progress repository
scanning source...
sorting...
converting...
3 initial
2 clobber symlink
1 clobber1
0 clobber2