Mercurial > hg
view tests/test-convert-hg-source @ 12717:89df79b3c011 stable
convert/darcs: support changelogs with bytes 0x7F-0xFF (issue2411)
This is a followup to 4481f8a93c7a, which only fixed the conversion of
patches with UTF-8 metadata.
This patch allows a changelog to have any bytes with values
0x7F-0xFF. It parses the XML changelog as Latin-1 and uses
converter_source.recode() to decode the data as UTF-8/Latin-1.
Caveats:
- Since the convert extension doesn't provide any way to specify the
source encoding, users are still limited to UTF-8 and Latin-1.
- etree will still complain if the changelog has bytes with values
0x00-0x19. XML only allows printable characters.
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Fri, 01 Oct 2010 10:15:04 -0500 |
parents | 314fc589b313 |
children | a2f11188e2d2 |
line wrap: on
line source
#!/bin/sh cat >> $HGRCPATH <<EOF [extensions] convert= [convert] hg.saverev=False EOF hg init orig cd orig echo foo > foo echo bar > bar hg ci -qAm 'add foo bar' -d '0 0' echo >> foo hg ci -m 'change foo' -d '1 0' hg up -qC 0 hg copy --after --force foo bar hg copy foo baz hg ci -m 'make bar and baz copies of foo' -d '2 0' hg merge hg ci -m 'merge local copy' -d '3 0' hg up -C 1 hg merge 2 hg ci -m 'merge remote copy' -d '4 0' chmod +x baz hg ci -m 'mark baz executable' -d '5 0' cd .. hg convert --datesort orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' cd new hg out ../orig cd .. echo '% check shamap LF and CRLF handling' cat > rewrite.py <<EOF import sys # Interlace LF and CRLF lines = [(l.rstrip() + ((i % 2) and '\n' or '\r\n')) for i, l in enumerate(file(sys.argv[1]))] file(sys.argv[1], 'wb').write(''.join(lines)) EOF python rewrite.py new/.hg/shamap cd orig hg up -qC 1 echo foo >> foo hg ci -qm 'change foo again' hg up -qC 2 echo foo >> foo hg ci -qm 'change foo again again' cd .. hg convert --datesort orig new 2>&1 | grep -v 'subversion python bindings could not be loaded' echo % init broken repository hg init broken cd broken echo a >> a echo b >> b hg ci -qAm init echo a >> a echo b >> b hg copy b c hg ci -qAm changeall hg up -qC 0 echo bc >> b hg ci -m changebagain HGMERGE=internal:local hg -q merge hg ci -m merge hg mv b d hg ci -m moveb echo % break it rm .hg/store/data/b.* cd .. hg --config convert.hg.ignoreerrors=True convert broken fixed hg -R fixed verify echo '% manifest -r 0' hg -R fixed manifest -r 0 echo '% manifest -r tip' hg -R fixed manifest -r tip true