Matt Harbison <matt_harbison@yahoo.com> [Fri, 10 Apr 2015 22:30:19 -0400] rev 24716
hook: forcibly flush stderr for Windows test stability
There are a handful of SSH related test failures on Windows.
--- c:/Users/Matt/Projects/hg/tests/test-bundle2-exchange.t
+++ c:/Users/Matt/Projects/hg/tests/test-bundle2-exchange.t.err
@@ -305,16 +305,16 @@
remote: added 1 changesets with 1 changes to 1 files
remote: 1 new obsolescence markers
updating bookmark book_5fdd
+ pre-close-tip:
02de42196ebe draft book_02de
+ postclose-tip:
02de42196ebe draft book_02de
+ txnclose hook: HG_SOURCE=push-response HG_TXNNAME=push-response
+ ssh://user@dummy/other HG_URL=ssh://user@dummy/other
remote: pre-close-tip:
5fddd98957c8 draft book_5fdd
remote: pushkey: lock state after "bookmarks"
remote: lock: free
remote: wlock: free
remote: postclose-tip:
5fddd98957c8 draft book_5fdd
remote: txnclose hook: (env vars truncated)
- pre-close-tip:
02de42196ebe draft book_02de
- postclose-tip:
02de42196ebe draft book_02de
- txnclose hook: HG_SOURCE=push-response HG_TXNNAME=push-response
- ssh://user@dummy/other HG_URL=ssh://user@dummy/other
$ hg -R other log -G
o 6:
5fddd98957c8 draft Nicolas Dumazet <...> book_5fdd C
|
--- c:/Users/Matt/Projects/hg/tests/test-ssh.t
+++ c:/Users/Matt/Projects/hg/tests/test-ssh.t.err
@@ -438,12 +438,12 @@
$ hg push
pushing to ssh://user@dummy/remote
searching for changes
+ local stdout
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
- remote: KABOOM
- local stdout
+ remote: KABOOM\r (esc)
$ cd ..
What is happening is that no data is available in 'sshpeer.pipee' while the
command is executing. As the command completes, local output is printed, and
then sshpeer.cleanup() is called. When it calls 'self.pipeo.close()', the child
process is shutdown, flushing stderr.
As an experiment, I printed a line to stdout and another to stderr instead this
flush(). The stdout data was immediately available to the hg client, and none
of the stderr data was until the child exited. At that point, pipee has all of
the buffered data, and it is read out and printed before the pipe is closed in
sshpeer.cleanup(). This is probably a known issue, since ui.write_err()
mentions that stderr may be buffered, and also flushes stderr.
It would be nice if there was a more general fix (there is one more test that
fails), but I'm not sure what it is. I've seen (ancient) references [1] to
setvbuf() "crashing spectacularly" on some systems if any I/O has been done
already, so it seems worth avoiding.
https://sourceware.org/ml/gdb-patches/2013-08/msg00422.html
[1] https://groups.google.com/forum/#!msg/comp.lang.python/JT8LiYzYDEY/Qg9d1HwyjScJ
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Apr 2015 22:37:40 -0400] rev 24715
json: implement {fileannotate} template
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Apr 2015 22:26:53 -0400] rev 24714
json: implement {comparison} template
Similar to {filediff}, we abbreviate some property names to cut down on
string bloat.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Apr 2015 22:39:22 -0400] rev 24713
json: implement {filediff} template
Single letter properties are used to keep payload size down, as diff
representation can be quite large and longer property names can create a
lot of extra work for parsers.
Rename is not yet captured. This can be done in a follow-up.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 10 Apr 2015 22:34:12 -0400] rev 24712
hgweb: expose raw line numbers to templates
Surpringly, the templates didn't receive an unmodified version of the
line numbers. Expose it to make implementing the JSON templates easier.
In theory, we could post-process an existing template variable. But
extra string manipulation seems quite wasteful, especially on items that
could occur hundreds or even thousands of times in output.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 11 Apr 2015 11:54:09 -0400] rev 24711
revert: stop marking files clean after interactive revert (
issue4592)
The goal of 'hg revert --interactive' is usually to keep some change in the
revert file, so the files -must-not- be marked as clean. We want the status
logic to do its usual job here.
For unclear reasons (probably timing related), I was unable to build an automated
test that reproduced
issue4592 but manual testing shows this is fixed.
Augie Fackler <augie@google.com> [Sat, 11 Apr 2015 11:56:21 -0400] rev 24710
lazymanifest: prevent leak when updating an entry more than once
__setitem__ on the lazymanifest C type wasn't checking to see if a
line had previously been malloced before replacing it, leading to
leaks if files got updated multiple times in the course of a task.
I was able to reproduce the leak with this change to test-manifest.py:
diff --git a/tests/test-manifest.py b/tests/test-manifest.py
--- a/tests/test-manifest.py
+++ b/tests/test-manifest.py
@@ -456,6 +456,16 @@ class basemanifesttests(object):
['a/b/c/bar.txt', 'a/b/c/foo.txt', 'a/b/d/ten.txt'],
m2.keys())
+ def testManifestSetItem(self):
+ m = self.parsemanifest('')
+ for x in range(3):
+ m['file%d' % x] = BIN_HASH_1
+ for x in range(3):
+ m['file%d' % x] = BIN_HASH_2
+ import time
+ time.sleep(4)
+
+
along with the commands:
$ make local
$ PYTHONPATH=. SILENT_BE_NOISY=1 python tests/test-manifest.py testmanifestdict.testManifestSetItem &
$ sleep 4
$ leaks $(jobs -p | tee /dev/stderr | awk '{print $3}')
$ wait
in an interactive shell on OS X. As far as I can tell, it had to be an
interactive shell so that I could get the pid of the test run using
the jobs builtin. Prior to this change, I was leaking several strings,
and after this change leaks reports no leaks.
I thought there was a bug filed for this in bugzilla, but I can't find
it either in bugzilla or by searching my email.
Matt Mackall <mpm@selenic.com> [Mon, 13 Apr 2015 07:42:25 -0500] rev 24709
strip: properly clear resolve state with --keep (
issue4593)
Normal updates automatically clean up the resolve state, but strip
--keep does a "manual" update that bypasses the normal machinery. This
adds a mergestate reset.
Ryan McElroy <rmcelroy@fb.com> [Mon, 13 Apr 2015 20:53:05 -0700] rev 24708
revsets: more informative syntax error message
I came across a case where an internal command was using a revset that I didn't
immediately pass in and it was difficult to debug what was going wrong with the
revset. This prints out the revset and informs the user that the error is with
a rebset so it should be more obvious what and where the error is.
Ryan McElroy <rmcelroy@fb.com> [Mon, 13 Apr 2015 21:06:21 -0700] rev 24707
revsets: show current revset abort behavior
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Apr 2015 13:28:37 -0400] rev 24706
tests: move blackbox testing of tags to test-tags.t
We're going to refactor tags cache shortly. It is easier to test the
blackbox logging if these tests are in test-tags.t.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 13 Apr 2015 09:36:33 -0400] rev 24705
tests: move mock blackbox extension into own file
Having all blackbox log testing in test-blackbox.t isn't scalable. Move
the mock blackbox extension into its own file so we can start to move
blackbox logging into other tests.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 12 Apr 2015 14:59:31 -0400] rev 24704
shelve: acquire lock in the right order
Text book says that 'wlock' should be acquired before 'lock'.
Caught through developer warning.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 12 Apr 2015 14:54:53 -0400] rev 24703
check-commit: be more picky about detection of wrong bug tag
The check-commit script search for "bug" withing bracket and ask people to use
(issueXXXX) instead. The test was too wide and matching any "(+b+u+g"sequence.
Michael O'Connor <moconnor@janestreet.com> [Mon, 13 Apr 2015 09:54:36 -0400] rev 24702
discovery: don't compute allfuturecommon when it won't be used
In repos with many changesets, the computation of allfuturecommon
can take a significant amount of time. Since it's only used if
there's an obsstore, don't compute it otherwise.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Apr 2015 18:54:33 -0700] rev 24701
treemanifest: separate flags for trees in memory and trees on disk
When we start writing tree manifests with one manifest revlog per
directory, it will still be nice to be able to run tests using tree
manifests in memory but writing to a flat manifest to a single
revlog. Let's break the current '_usetreemanifest' flag on the revlog
into '_treeinmem' and '_treeondisk'. Both are populated from the same
config, but after this change, one can temporarily hard-code
_treeinmem=True to see that tests still pass.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Apr 2015 18:13:01 -0700] rev 24700
manifestdict: drop empty-string argument when creating empty manifest
manifestdict() creates an empty manifestdict, so let's consistently
use that instead of explicitly parsing an empty string (which does
result in an empty manifest).
Mike Hommey <mh@glandium.org> [Sun, 12 Apr 2015 06:51:13 -0700] rev 24699
lazymanifest: fix memory leak in lmiter_iterentriesnext() after
3d485727e45e
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 11 Apr 2015 12:26:54 -0400] rev 24698
revert: do not requires '--all' if '--interative' is present
The '--all' option have been introduced in
890e285c52a1 (August 2006), most
probably to prevent user shooting themselves in the foot. As the record process
will let you, view and select the set of files and change you want to revert, I
feel like the '--all' flag is superfluous in the '--interactive' case.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 09 Apr 2015 16:18:38 -0400] rev 24697
bundle2: drop the experimental hooks
The series at
e9ede9b4c2f8::
8e13cc0825f1 introduced generic transaction level
hooking. This makes the experimental bundle2 specific hooks redundant, we drop
them.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 10 Apr 2015 15:41:33 -0400] rev 24696
bundle2: advertise bundle2 by default
That way, any new server will be ready to accept bundle2 payload. The decision
for the client to use it is still off by default so this is not turning bundle2
everywhere.
We introduce a new kill switch for this in case stuff goes wrong.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Feb 2015 12:57:40 -0500] rev 24695
subrepo: convert the os.path references in git to vfs
There are a handful of os.path references in the free functions at the top of
the module that will be trickier to remove.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24694
subrepo: use vfs.removedirs instead of os.removedirs
This patch also removes useless composing absolute path by "repo.wjoin()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24693
vfs: add removedirs