view tests/test-convert-cvs.out @ 12252:4481f8a93c7a stable

convert/darcs: handle non-ASCII metadata in darcs changelog (issue2354) Given a commit author or message with non-ASCII characters in a darcs repo, convert would raise a UnicodeEncodeError when adding changesets to the hg changelog. This happened because etree returns back unicode objects for any text it can't encode into ASCII. convert was passing these objects to changelog.add(), which would then attempt encoding.fromlocal() on them. This patch ensures converter_source.recode() is called on each piece of commit data returned by etree. (Also note that darcs is currently encoding agnostic and will print out whatever is in a patch's metadata byte-for-byte, even in the XML changelog.)
author Brodie Rao <brodie@bitheap.org>
date Fri, 10 Sep 2010 09:30:50 -0500
parents 84a09639d9f1
children
line wrap: on
line source

% create cvs repository
% create source directory
% import source directory
N src/a
N src/b/c

No conflicts created by this import

% checkout source directory
U src/a
U src/b/c
% commit a new revision changing b/c
checking in src/b/c,v
% convert fresh repo
initializing destination src-hg repository
connecting to cvsrepo
scanning source...
collecting CVS rlog
5 log entries
cvslog hook: 5 entries
creating changesets
3 changeset entries
cvschangesets hook: 3 changesets
sorting...
converting...
2 Initial revision
1 import
0 ci0
updating tags
a
c
c
% convert fresh repo with --filemap
initializing destination src-filemap repository
connecting to cvsrepo
scanning source...
collecting CVS rlog
5 log entries
cvslog hook: 5 entries
creating changesets
3 changeset entries
cvschangesets hook: 3 changesets
sorting...
converting...
2 Initial revision
1 import
filtering out empty revision
rolling back to revision 0 (undo commit)
0 ci0
updating tags
c
c
2 update tags files: .hgtags
1 ci0 files: b/c
0 Initial revision files: b/c
% convert full repository (issue1649)
U srcfull/src/a
U srcfull/src/b/c
CVS
CVSROOT
src
initializing destination srcfull-hg repository
connecting to cvsrepo
scanning source...
collecting CVS rlog
creating changesets
4 changeset entries
sorting...
converting...
updating tags
a
c
c
% commit new file revisions
checking in src/a,v
checking in src/b/c,v
% convert again
connecting to cvsrepo
scanning source...
collecting CVS rlog
7 log entries
cvslog hook: 7 entries
creating changesets
4 changeset entries
cvschangesets hook: 4 changesets
sorting...
converting...
0 ci1
a
a
c
c
c
% convert again with --filemap
connecting to cvsrepo
scanning source...
collecting CVS rlog
7 log entries
cvslog hook: 7 entries
creating changesets
4 changeset entries
cvschangesets hook: 4 changesets
sorting...
converting...
0 ci1
c
c
c
3 ci1 files: b/c
2 update tags files: .hgtags
1 ci0 files: b/c
0 Initial revision files: b/c
% commit branch
U b/c
T a
T b/c
checking in src/b/c,v
% convert again
connecting to cvsrepo
scanning source...
collecting CVS rlog
8 log entries
cvslog hook: 8 entries
creating changesets
5 changeset entries
cvschangesets hook: 5 changesets
sorting...
converting...
0 ci2
c
d
% convert again with --filemap
connecting to cvsrepo
scanning source...
collecting CVS rlog
8 log entries
cvslog hook: 8 entries
creating changesets
5 changeset entries
cvschangesets hook: 5 changesets
sorting...
converting...
0 ci2
c
d
4 ci2 files: b/c
3 ci1 files: b/c
2 update tags files: .hgtags
1 ci0 files: b/c
0 Initial revision files: b/c
% commit a new revision with funny log message
checking in src/a,v
% commit new file revisions with some fuzz
checking in src/a,v
checking in src/b/c,v
% convert again
connecting to cvsrepo
scanning source...
collecting CVS rlog
11 log entries
cvslog hook: 11 entries
creating changesets
8 changeset entries
cvschangesets hook: 8 changesets
sorting...
converting...
2 funny
1 fuzzy
0 fuzzy
o  8 (branch) fuzzy files: b/c
|
o  7 (branch) fuzzy files: a
|
o  6 (branch) funny
|  ----------------------------
|  log message files: a
o  5 (branch) ci2 files: b/c

o  4 () ci1 files: a b/c
|
o  3 () update tags files: .hgtags
|
o  2 () ci0 files: b/c
|
| o  1 (INITIAL) import files:
|/
o  0 () Initial revision files: a b/c

% testing debugcvsps
collecting CVS rlog
11 log entries
cvslog hook: 11 entries
creating changesets
10 changeset entries
cvschangesets hook: 10 changesets
---------------------
PatchSet 1 
Date:
Author:
Branch: HEAD
Tag: (none) 
Branchpoints: INITIAL 
Log:
Initial revision

Members: 
	a:INITIAL->1.1 

---------------------
PatchSet 2 
Date:
Author:
Branch: HEAD
Tag: (none) 
Branchpoints: INITIAL, branch 
Log:
Initial revision

Members: 
	b/c:INITIAL->1.1 

---------------------
PatchSet 3 
Date:
Author:
Branch: INITIAL
Tag: start 
Log:
import

Members: 
	a:1.1->1.1.1.1 
	b/c:1.1->1.1.1.1 

---------------------
PatchSet 4 
Date:
Author:
Branch: HEAD
Tag: (none) 
Log:
ci0

Members: 
	b/c:1.1->1.2 

---------------------
PatchSet 5 
Date:
Author:
Branch: HEAD
Tag: (none) 
Branchpoints: branch 
Log:
ci1

Members: 
	a:1.1->1.2 

---------------------
PatchSet 6 
Date:
Author:
Branch: HEAD
Tag: (none) 
Log:
ci1

Members: 
	b/c:1.2->1.3 

---------------------
PatchSet 7 
Date:
Author:
Branch: branch
Tag: (none) 
Log:
ci2

Members: 
	b/c:1.1->1.1.2.1 

---------------------
PatchSet 8 
Date:
Author:
Branch: branch
Tag: (none) 
Log:
funny
----------------------------
log message

Members: 
	a:1.2->1.2.2.1 

---------------------
PatchSet 9 
Date:
Author:
Branch: branch
Tag: (none) 
Log:
fuzzy

Members: 
	a:1.2.2.1->1.2.2.2 

---------------------
PatchSet 10 
Date:
Author:
Branch: branch
Tag: (none) 
Log:
fuzzy

Members: 
	b/c:1.1.2.1->1.1.2.2