All users already use repo.local() to test for local, which is false
in the repository base class. statichttprepository never derived from
this class anyway.
- open pipe in binary mode
- don't start a pager if stdout is not a tty (this prevents test-ssh
from hanging if you set ui.usepager=True in run-tests.py)
Unix systems usually have a PAGER environment variable set.
If it is set, mercurial will use the pager application to display
output.
Two configuration variables are available to influence the behaviour of the
pager. ui.pager sets the pager application. The pager is
only used if ui.usepager is true. By default ui.usepager is disabled.
If we don't change any rwx bit in the last test, hg will skip the
calls to chmod since it'll assume they're not needed.
This might fix things on BSD systems.
This can make a difference when there are filters involved and
decode(encode(working-dir-data)) != working-dir-data
even though
encode(decode(repo-data)) == repo-data
An example is a working dir file that uses only \n when you're using
the win32text extension.
We encode the previous state as a negative file size (AFAICS, previous
versions of hg always have size == 0 when state == 'r').
We save the state of 'm'erged and dirty files, because they're the
two states that indicate that a file has to be committed on a merge
to correctly record per-file history.
The self patching of files when diffed with a backup is a bit peculiar to me.
It makes sense in mpatch, that's less clear in mercurial patching code. Let's
document and preserve it for now.
As mentioned in msg5349 in issue988, "hg update" doesn't take into account
uncommitted copies. To reproduce:
----------------
hg init repo
cd repo
touch foo
hg ci -Am 'add foo'
echo >> foo
hg ci -m 'change foo'
hg up -C 0
hg mv foo bar
HGMERGE=false thg --debug -y update
--------------------------
A similar problem happens with hg merge --force.
I'm attaching a possible patch.
The only non-obvious part is the use of sys.{__stderr__,__stdout__},
which is needed because sshserver overrides sys.stdout.
This makes a test that I added back in revision d71c96fd819f ineffective.