mirror of
https://github.com/facebook/sapling.git
synced 2024-12-29 08:02:24 +03:00
c190d283ec
Summary: The Python 3 email library internally stores the message as text, even though our input and requested output is bytes. Let's make our own wrapper around the parser to use ascii surrogateescape encoding so we can get the actual bytes out later and not get universal newlines. Based off the upstream 7b12a2d2eedc995405187cdf9a35736a14d60706, which is basically a copy of the BytesParser implementation (https://github.com/python/cpython/blob/3.8/Lib/email/parser.py) with newline=chr(10) added. Reviewed By: quark-zju Differential Revision: D23363965 fbshipit-source-id: 880f0642cce96edfdd22da5908c0b573887bed12
91 lines
2.3 KiB
Perl
91 lines
2.3 KiB
Perl
#chg-compatible
|
|
|
|
$ cat > patchtool.py <<EOF
|
|
> from __future__ import absolute_import, print_function
|
|
> import sys
|
|
> print('Using custom patch')
|
|
> if '--binary' in sys.argv:
|
|
> print('--binary found !')
|
|
> EOF
|
|
|
|
$ setconfig ui.patch="$PYTHON $TESTTMP/patchtool.py"
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
$ echo a > a
|
|
$ hg commit -Ama -d '1 0'
|
|
adding a
|
|
$ echo b >> a
|
|
$ hg commit -Amb -d '2 0'
|
|
$ cd ..
|
|
|
|
This test checks that:
|
|
- custom patch commands with arguments actually work
|
|
- patch code does not try to add weird arguments like
|
|
--binary when custom patch commands are used. For instance
|
|
--binary is added by default under win32.
|
|
|
|
check custom patch options are honored
|
|
|
|
$ hg --cwd a export -o ../a.diff tip
|
|
$ hg clone -r 0 a b
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
updating to branch default
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg --cwd b import -v ../a.diff
|
|
applying ../a.diff
|
|
Using custom patch
|
|
applied to working directory
|
|
|
|
Issue2417: hg import with # comments in description
|
|
|
|
Prepare source repo and patch:
|
|
|
|
$ rm $HGRCPATH
|
|
$ hg init c
|
|
$ cd c
|
|
$ printf "a\rc" > a
|
|
$ hg ci -A -m 0 a -d '0 0'
|
|
$ printf "a\rb\rc" > a
|
|
$ cat << eof > log
|
|
> first line which can't start with '# '
|
|
> # second line is a comment but that shouldn't be a problem.
|
|
> A patch marker like this was more problematic even after d7452292f9d3:
|
|
> # HG changeset patch
|
|
> # User lines looks like this - but it _is_ just a comment
|
|
> eof
|
|
$ hg ci -l log -d '0 0'
|
|
$ hg export -o p 1
|
|
$ cd ..
|
|
|
|
Clone and apply patch:
|
|
|
|
$ hg clone -r 0 c d
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
updating to branch default
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd d
|
|
$ hg import ../c/p
|
|
applying ../c/p
|
|
$ hg log -v -r 1
|
|
commit: cd0bde79c428
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
files: a
|
|
description:
|
|
first line which can't start with '# '
|
|
# second line is a comment but that shouldn't be a problem.
|
|
A patch marker like this was more problematic even after d7452292f9d3:
|
|
# HG changeset patch
|
|
# User lines looks like this - but it _is_ just a comment
|
|
|
|
|
|
$ cd ..
|