##// END OF EJS Templates
pycompat: custom implementation of urllib.parse.quote()...
pycompat: custom implementation of urllib.parse.quote() urllib.parse.quote() accepts either str or bytes and returns str. There exists a urllib.parse.quote_from_bytes() which only accepts bytes. We should probably use that to retain strong typing and avoid surprises. In addition, since nearly all strings in Mercurial are bytes, we probably don't want quote() returning unicode. So, this patch implements a custom quote() that only accepts bytes and returns bytes. The quoted URL should only contain URL safe characters which is a strict subset of ASCII. So `.encode('ascii', 'strict')` should be safe.

File last commit:

r16913:f2719b38 default
r31400:fb1f7033 default
Show More
test-merge-symlinks.t
63 lines | 1.5 KiB | text/troff | Tads3Lexer
/ tests / test-merge-symlinks.t
$ cat > echo.py <<EOF
> #!/usr/bin/env python
> import os, sys
> try:
> import msvcrt
> msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
> msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
> except ImportError:
> pass
>
> for k in ('HG_FILE', 'HG_MY_ISLINK', 'HG_OTHER_ISLINK', 'HG_BASE_ISLINK'):
> print k, os.environ[k]
> EOF
Create 2 heads containing the same file, once as
a file, once as a link. Bundle was generated with:
# hg init t
# cd t
# echo a > a
# hg ci -qAm t0 -d '0 0'
# echo l > l
# hg ci -qAm t1 -d '1 0'
# hg up -C 0
# ln -s a l
# hg ci -qAm t2 -d '2 0'
# echo l2 > l2
# hg ci -qAm t3 -d '3 0'
$ hg init t
$ cd t
$ hg -q pull "$TESTDIR/bundles/test-merge-symlinks.hg"
$ hg up -C 3
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Merge them and display *_ISLINK vars
merge heads
$ hg merge --tool="python ../echo.py"
merging l
HG_FILE l
HG_MY_ISLINK 1
HG_OTHER_ISLINK 0
HG_BASE_ISLINK 0
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Test working directory symlink bit calculation wrt copies,
especially on non-supporting systems.
merge working directory
$ hg up -C 2
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg copy l l2
$ HGMERGE="python ../echo.py" hg up 3
merging l2
HG_FILE l2
HG_MY_ISLINK 1
HG_OTHER_ISLINK 0
HG_BASE_ISLINK 0
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ cd ..