Mercurial > hg
view tests/test-subrepo-svn @ 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 | 0bf79efeaa20 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" svn || exit 80 fix_path() { tr '\\' / } escapedwd=`pwd | fix_path` # SVN wants all paths to start with a slash. Unfortunately, # Windows ones don't. Handle that. expr "$escapedwd" : "\/" > /dev/null if [ $? -ne 0 ]; then escapedwd="/$escapedwd" fi escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"` filterpath="s|$escapedwd|/root|" filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /' filterexternal="s|Fetching external item into '.*/s/externals'|Fetching external item into 's/externals'|g" echo % create subversion repo SVNREPO="file://$escapedwd/svn-repo" WCROOT="`pwd`/svn-wc" svnadmin create svn-repo svn co "$SVNREPO" svn-wc cd svn-wc mkdir src echo alpha > src/alpha svn add src mkdir externals echo other > externals/other svn add externals svn ci -m 'Add alpha' svn up cat > extdef <<EOF externals -r1 $SVNREPO/externals EOF svn propset -F extdef svn:externals src svn ci -m 'Setting externals' cd .. echo % create hg repo mkdir sub cd sub hg init t cd t echo % first revision, no sub echo a > a hg ci -Am0 echo % add first svn sub with leading whitespaces echo "s = [svn] $SVNREPO/src" >> .hgsub svn co --quiet "$SVNREPO"/src s hg add .hgsub hg ci -m1 echo % debugsub hg debugsub | sed "$filterpath" echo echo % change file in svn and hg, commit echo a >> a echo alpha >> s/alpha hg commit -m 'Message!' | sed "$filterexternal" \ | sed 's:Sending.*s/alpha:Sending s/alpha:g' hg debugsub | sed "$filterpath" echo echo a > s/a echo % should be empty despite change to s/a hg st echo echo % add a commit from svn cd "$WCROOT"/src svn up echo xyz >> alpha svn propset svn:mime-type 'text/xml' alpha svn ci -m 'amend a from svn' cd ../../sub/t echo % this commit from hg will fail echo zzz >> s/alpha hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" svn revert -q s/alpha echo % this commit fails because of meta changes svn propset svn:mime-type 'text/html' s/alpha hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" svn revert -q s/alpha echo % this commit fails because of externals changes echo zzz > s/externals/other hg ci -m 'amend externals from hg' svn revert -q s/externals/other echo % this commit fails because of externals meta changes svn propset svn:mime-type 'text/html' s/externals/other hg ci -m 'amend externals from hg' svn revert -q s/externals/other echo echo % clone cd .. hg clone t tc | fix_path cd tc echo % debugsub in clone hg debugsub | sed "$filterpath" echo % verify subrepo is contained within the repo directory python -c "import os.path; print os.path.exists('s')"