$ "$TESTDIR/hghave" svn svn-bindings || exit 80 $ cat > $HGRCPATH < [extensions] > convert = > graphlog = > EOF $ svnadmin create svn-repo $ svnadmin load -q svn-repo < "$TESTDIR/svn/encoding.svndump" Convert while testing all possible outputs $ hg --debug convert svn-repo A-hg initializing destination A-hg repository reparent to file://*/svn-repo (glob) run hg sink pre-conversion action scanning source... found trunk at 'trunk' found tags at 'tags' found branches at 'branches' found branch branché at 5 found branch branchée at 6 scanning: 1 revisions reparent to file://*/svn-repo/trunk (glob) fetching revision log for "/trunk" from 4 to 0 parsing revision 4 (2 changes) parsing revision 3 (4 changes) parsing revision 2 (3 changes) parsing revision 1 (3 changes) no copyfrom path, don't know what to do. '/branches' is not under '/trunk', ignoring '/tags' is not under '/trunk', ignoring scanning: 2 revisions reparent to file://*/svn-repo/branches/branch%C3%A9 (glob) fetching revision log for "/branches/branché" from 5 to 0 parsing revision 5 (1 changes) reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/branches/branch%C3%A9 (glob) found parent of branch /branches/branché at 4: /trunk scanning: 3 revisions reparent to file://*/svn-repo/branches/branch%C3%A9e (glob) fetching revision log for "/branches/branchée" from 6 to 0 parsing revision 6 (1 changes) reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/branches/branch%C3%A9e (glob) found parent of branch /branches/branchée at 5: /branches/branché scanning: 4 revisions scanning: 5 revisions scanning: 6 revisions sorting... converting... 5 init projA source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@1 converting: 0/6 revisions (0.00%) 4 hello source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@2 converting: 1/6 revisions (16.67%) reparent to file://*/svn-repo/trunk (glob) scanning paths: /trunk/à 0/3 (0.00%) scanning paths: /trunk/à/é 1/3 (33.33%) scanning paths: /trunk/é 2/3 (66.67%) à/é getting files: à/é 1/2 (50.00%) é getting files: é 2/2 (100.00%) 3 copy files source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@3 converting: 2/6 revisions (33.33%) scanning paths: /trunk/à 0/4 (0.00%) gone from -1 reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/trunk (glob) scanning paths: /trunk/è 1/4 (25.00%) copied to è from é@2 scanning paths: /trunk/é 2/4 (50.00%) gone from -1 reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/trunk (glob) scanning paths: /trunk/ù 3/4 (75.00%) mark /trunk/ù came from à:2 à/é getting files: à/é 1/4 (25.00%) è getting files: è 2/4 (50.00%) è: copy é:6b67ccefd5ce6de77e7ead4f5292843a0255329f é getting files: é 3/4 (75.00%) ù/é getting files: ù/é 4/4 (100.00%) ù/é: copy à/é:a9092a3d84a37b9993b5c73576f6de29b7ea50f6 2 remove files source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@4 converting: 3/6 revisions (50.00%) scanning paths: /trunk/è 0/2 (0.00%) gone from -1 reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/trunk (glob) scanning paths: /trunk/ù 1/2 (50.00%) gone from -1 reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/trunk (glob) è getting files: è 1/2 (50.00%) ù/é getting files: ù/é 2/2 (100.00%) 1 branch to branch? source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/branches/branch?@5 converting: 4/6 revisions (66.67%) reparent to file://*/svn-repo/branches/branch%C3%A9 (glob) scanning paths: /branches/branché 0/1 (0.00%) 0 branch to branch?e source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/branches/branch?e@6 converting: 5/6 revisions (83.33%) reparent to file://*/svn-repo/branches/branch%C3%A9e (glob) scanning paths: /branches/branchée 0/1 (0.00%) reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/branches/branch%C3%A9e (glob) reparent to file://*/svn-repo (glob) reparent to file://*/svn-repo/branches/branch%C3%A9e (glob) updating tags .hgtags run hg sink post-conversion action $ cd A-hg $ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Check tags are in UTF-8 $ python -c "print '\n'.join([('%r' % l) for l in file('.hgtags', 'rb').readlines()])" '221c3fdaf24df5f14c0a64c597581e2eacfb47bb branch\xc3\xa9e\n' '7a40952c2db29cf00d9e31df3749e98d8a4bdcbf branch\xc3\xa9\n' $ cd ..