The use of the patch name is dangerous when duplicate names exist.
In case of a duplicate name the second patch and all its dependancies
are merged into a single mercurial patch.
The patch identifier (hash) is always unique.
A HTTP client can indicate that it doesn't support (or doesn't want)
persistent connections by sending this header.
This not only makes the server more compliant with the RFC, but also
reduces the run time of test-http-proxy when run with python 2.3 from
~125s to ~5s (it doesn't affect it with python 2.4, which was already
~5s).
As e.g. test-http-proxy already takes quite some time (about a minute here)
and tests usually should clean up after themselves, the timeout should only be
hit in case of other problems.
first fix is to not store module objects in commands.external dict,
instead use module names for key into sys.modules. this prevents circular
reference during cleanup of aborted transaction.
second is to get name right during import of external module.
test timeout feature is needed for test with python 2.5 beta. if test
does not complete in time (30 seconds is default), it is killed.
some times daemon process used in test can be alive after the test
is killed by user or by timeout. tests now record daemon pids into
$DAEMON_PIDS and run-tests.py kills all living daemons after every test.
final little change is to add newline to end of pid file printed by
"hg serve", else "cat hg.pid >> $DAEMON_FILES" gives garbage.
this is wanted because some tests run python interpreter directly.
must use same python interpreter in tests as in main harness or problems
will happen because of e.g. different python abi if run-tests.py run
with python 2.5 but system python is 2.4.
fix is to see if system python is used and is named python. if no,
put symlink called python at front of shell search path.
The urllib2 differences between python 2.3 and 2.4 are hidden by
using keepalive.py, which also gives us support for persistent
connections.
Support for HTTPS is enabled only if there's a HTTPSHandler class in
urllib2.
It's not possible to have separate classes as handlers for HTTP and
HTTPS: to support persistent HTTPS connections, we need a class that
inherits from both keepalive.HTTPHandler and urllib2.HTTPSHandler. If
we try to pass (an instance of) this class and (an instance of) the
httphandler class to urllib2.build_opener, this function ends up getting
confused, since both classes are subclasses of the HTTPHandler default
handler, and raises an exception.
After the WSGI changes, even if a push over HTTP succeeds, apache
complains about "Premature end of script headers: hgwebdir.cgi" and
returns a "HTTP Error 500: Internal Server Error", making the local hg
abort.
The change to either of the files touched by this patch is enough to fix
this, but I think changing both is a more robust solution.
The rationale behind this is that such conversion implies a particular
situation in which all files in the repo are terminated by only LF. This
is documented nowhere and it bit me sharply when I upgraded.
Furthermore, it works on the assumption that a file containing no NULL
characters are actually a text file. Therefore it cannot guarantee that
no binary file will be harmed in the process.
Currently, if a file already contains CRLF line endings when it is
copied to the working dir from the repo, then the version in the working
dir will be corrupted by an extra CR.
I'm working on a patch that will turn this into a warning. But as a side
effect, committing such a file back will strip it from its CR.
In all case, unrequested data modification can occur under the feet of
the user, which is bad(tm), ihmo.
Sometimes there's a non-tip head waiting to be merged, especially after
pulling in remote changes while there were local modifications in the working
directory which had to be committed before 'hg merge' can work.
Rearranged the clone command a good bit to make sure it validates that
the source does exist and that the destination doesn't before doing anything.
Before I moved the source repo check it would create the destination
repository before it verified the source existed.
Moved the responsibility for creating the destination repo root directory
entirly into the localrepo class so that local to local cloning doesn't break.
This also simplifies the code a bit since it's no longer being done in both
clone and init.
Changed the names of the 'repo' and 'other' variables to 'dest_repo' and
'src_repo' to maintain my sanity.
Passes 82/83 tests. The only failure is the version number test, which I
suspect is supposed to fail since it comes from a generated file.
Many projects use inttypes.h, too. stdint.h isn't available everywhere, e.g.
on some versions of Solaris, while inttypes.h is available everywhere where
stdint.h is.