##// END OF EJS Templates
tests: add tests for poorly behaving HTTP server...
tests: add tests for poorly behaving HTTP server I've spent several hours over the past few weeks investigating networking failures involving hg.mozilla.org. As part of this, it has become clear that the Mercurial client's error handling when it encounters network failures is far from robust. To prove this is true, I've devised a battery of tests simulating various network failures, notably premature connection closes. To achieve this, I've implemented an extension that monkeypatches the built-in HTTP server and hooks in at the socket level and allows various events to occur based on config options. For example, you can refuse to accept() a client socket or you can close() the socket after N bytes have been sent or received. The latter effectively simulates an unexpected connection drop (and these occur all the time in the real world). The new test file launches servers exhibiting various "bad" behaviors and points a client at them. As the many TODO comments in the test call attention to, Mercurial often displays unhelpful errors when network-related failures occur. This makes it difficult for users to understand what's going on and difficult for server administrators to pinpoint root causes without packet tracing. Upcoming patches will attempt to fix these error handling deficiencies.

File last commit:

r27514:311edddd default
r32001:c85f19c6 default
Show More
phases.txt
100 lines | 3.0 KiB | text/plain | TextLexer
Matt Mackall
help: add phases topic
r15996 What are phases?
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 ================
Matt Mackall
help: add phases topic
r15996
Phases are a system for tracking which changesets have been or should
be shared. This helps prevent common mistakes when modifying history
(for instance, with the mq or rebase extensions).
Each changeset in a repository is in one of the following phases:
- public : changeset is visible on a public server
- draft : changeset is not yet published
- secret : changeset should not be pushed, pulled, or cloned
These phases are ordered (public < draft < secret) and no changeset
can be in a lower phase than its ancestors. For instance, if a
changeset is public, all its ancestors are also public. Lastly,
Johan Samyn
help: add verb to sentence in phases.txt
r16244 changeset phases should only be changed towards the public phase.
Matt Mackall
help: add phases topic
r15996
How are phases managed?
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 =======================
Matt Mackall
help: add phases topic
r15996
For the most part, phases should work transparently. By default, a
changeset is created in the draft phase and is moved into the public
phase when it is pushed to another repository.
Once changesets become public, extensions like mq and rebase will
refuse to operate on them to prevent creating duplicate changesets.
Phases can also be manually manipulated with the :hg:`phase` command
if needed. See :hg:`help -v phase` for examples.
timeless
phases: mention how to make secret commits in help
r27514 To make yours commits secret by default, put this in your
configuration file::
[phases]
new-commit = secret
Matt Mackall
help: add phases topic
r15996 Phases and servers
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 ==================
Matt Mackall
help: add phases topic
r15996
Normally, all servers are ``publishing`` by default. This means::
- all draft changesets that are pulled or cloned appear in phase
public on the client
- all draft changesets that are pushed appear as public on both
client and server
- secret changesets are neither pushed, pulled, or cloned
.. note::
Simon Heimberg
help: remove last occurrences of ".. note::" without two newlines...
r20532
Matt Mackall
help: add phases topic
r15996 Pulling a draft changeset from a publishing server does not mark it
as public on the server side due to the read-only nature of pull.
Sometimes it may be desirable to push and pull changesets in the draft
phase to share unfinished work. This can be done by setting a
repository to disable publishing in its configuration file::
[phases]
Matt Mackall
help: fix publish option spelling in phases topic
r16000 publish = False
Wagner Bruna
help/phases: remove trailing whitespace
r15998
Jordi Gutiérrez Hermoso
doc: reword "config file" to "configuration file"...
r19295 See :hg:`help config` for more information on configuration files.
Matt Mackall
help: add phases topic
r15996
.. note::
Simon Heimberg
help: remove last occurrences of ".. note::" without two newlines...
r20532
Matt Mackall
help: add phases topic
r15996 Servers running older versions of Mercurial are treated as
publishing.
Pierre-Yves David
phases: add a formal note that hash of secret changeset may leak out...
r20299 .. note::
Simon Heimberg
help: remove last occurrences of ".. note::" without two newlines...
r20532
Pierre-Yves David
phases: add a formal note that hash of secret changeset may leak out...
r20299 Changesets in secret phase are not exchanged with the server. This
applies to their content: file names, file contents, and changeset
metadata. For technical reasons, the identifier (e.g. d825e4025e39)
of the secret changeset may be communicated to the server.
Matt Mackall
help: add examples to phases topic
r16011 Examples
FUJIWARA Katsunori
doc: unify section level between help topics...
r17267 ========
Matt Mackall
help: add examples to phases topic
r16011
- list changesets in draft or secret phase::
hg log -r "not public()"
- change all secret changesets to draft::
hg phase --draft "secret()"
- forcibly move the current changeset and descendants from public to draft::
hg phase --force --draft .
- show a list of changeset revision and phase::
hg log --template "{rev} {phase}\n"
Matt Mackall
phases: add resync example to help topic
r16041 - resynchronize draft changesets relative to a remote repository::
FUJIWARA Katsunori
doc: use double quotation mark to quote arguments in examples for Windows users...
r19959 hg phase -fd "outgoing(URL)"
Matt Mackall
phases: add resync example to help topic
r16041
Matt Mackall
help: add examples to phases topic
r16011 See :hg:`help phase` for more information on manually manipulating phases.