Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:14:14 -0800] rev 27068
ui.write: don't clear progress bar when writing to a buffer
ui.write() has 2 modes: buffered and unbuffered. In buffered mode, we
capture output before writing it. This is how changeset printing works,
for example.
Previously, we were potentially clearing the progress bar for every
call to ui.write(). In buffered mode, this clearing was useless because
the clearing function would be called again before actually writing
the buffered data.
This patch stops the useless calling of _progclear() unless we are
actually writing data. During changeset printing with the default
template, this removes ~6 function calls per changeset, making
changeset printing slightly faster.
before: 23.76s
after: 23.35s
delta: -0.41s (98.3% of original)
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Nov 2015 21:20:08 -0500] rev 27067
test-resolve: fix '--tool f' invocation for Windows
Windows can't invoke a python script directly, so invoke sh.exe instead.
According to sid0, the output changes are due to the fact that 'f' is no longer
being passed all of the args that it was, but these changes aren't essential to
the test [1].
[1] https://selenic.com/pipermail/mercurial-devel/2015-November/075768.html
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:30:10 -0800] rev 27066
util.datestr: use divmod()
We were computing the quotient and remainder of a division operation
separately. The built-in divmod() function allows us to do this with
a single function call. Do that.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:44:01 -0800] rev 27065
cmdutil.changeset_printer: pass context into showpatch()
Before, we passed the node then subsequently performed a lookup on
repo.changelog. We already has the context available, so just pass it
in.
This does result in a small performance win. But I doubt it will show
up anywhere because diff[stat] calculation will dwarf the time spent
to create a changectx. Still, we should be creating fewer changectx
out of principle.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 19:21:01 -0800] rev 27064
context: avoid extra parents lookups
Resolving parents requires reading from the changelog, which is a few
attributes and function calls away. Parents lookup occurs surprisingly
often. Micro optimizing the code to avoid redundant lookups of parents
appears to make `hg log` on my Firefox repo a little faster:
before: 24.91s
after: 23.76s
delta: -1.15s (95.4% of original)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 19:04:12 -0800] rev 27063
context: optimize _parents()
This patch avoids some extra attribute lookups and list mutations.
This micro-optimization seems to result in a minor speedup for `hg log`
on my Firefox repo:
before: 25.35s
after: 24.91s
delta: -0.44s (98% of original)
Not the biggest gain. But every little bit helps.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Nov 2015 13:05:21 -0500] rev 27062
test-histedit: $TESTTMP quoting fixes for Windows
Without this, C:\path\to\test is converted into C:pathtotest.
Since $TESTTMP appears in output, seems to work in some places without quotes,
and is also used within a larger quote block (see test-rebase-collapse.t, ~line
160), I'm not sure what a check-code rule would look like (or even if it is
feasible).
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 23:26:22 -0800] rev 27061
lsprof: support PyPy (
issue4573)
PyPy's _lsprof module doesn't export a "profiler_entry" symbol. This
patch treats the symbol as optional and falls back to verifying the
attribute is present on the first entry in the collected data as
part of validation.
There is a chance not every entry will contain the requested sort
attribute. But, this patch does unbust lsprof on PyPy for the hg
commands I've tested, so I assume it is sufficient. It's certainly
better than the ImportError we encountered before.
As part of the import refactor, I snuck in the addition of
absolute_import.
Augie Fackler <augie@google.com> [Wed, 11 Nov 2015 19:10:45 -0500] rev 27060
base85: clean up function definition style
Cleanup performed with clang-format.
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 14:06:31 -0800] rev 27059
rebase: use bookmarks.recordchange instead of bookmarks.write
Before this patch we were using the old api bookmarks.write instead of
bookmarks.recordchange at the end of rebase operations.
We move clearstatus within the transaction to make it easier for extensions
that wrap transactions operations.
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 11:36:05 -0800] rev 27058
rebase: indentation change to make the next patch more legible
We put the code to be indented in the next patch in a "if True:" block to make
it easier to review.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 16:56:00 -0500] rev 27057
test-run-tests: conditionalize the $TESTDIR check for Windows separator
The variable uniformly uses '\' separators, so the straight equality check with
'/' separating the last component fails. It also doesn't like having the quote
appear in the middle of the string when testing.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Nov 2015 17:15:36 -0500] rev 27056
test-context: conditionalize the workingfilectx date printing for Windows
Starting with
13272104bb07, the output changed on Windows:
--- e:/Projects/hg/tests/test-context.py.out
+++ e:/Projects/hg/tests/test-context.py.err
@@ -1,4 +1,4 @@
-workingfilectx.date = (1000, 0)
+workingfilectx.date = (1000L, 0)
ASCII : Gr?ezi!
Latin-1 : Grⁿezi!
UTF-8 : Gr├╝ezi!
Since int and long are both 32 bit on Windows, this seems harmless in practice
other than the previous test failure.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 14:37:03 -0500] rev 27055
test-mq-qrefresh: drop single quoting of HGEDITOR value for Windows
This was failing with:
sh: $TESTTMP/checkvisibility.sh: No such file or directory
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 14:12:27 -0500] rev 27054
test-import: don't use printf to append an extension to $HGRCPATH
The extension was failing to load on Windows because $TESTTMP contains a path
component 'test', prefixed by a path separator '\'. That combination ends up
converted to "...<tab>est...".
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 13:44:27 -0500] rev 27053
test-ssh: stop quoting dummyssh invocation for Windows
The other invocations aren't quoted, and Windows doesn't like the single quotes:
diff --git a/tests/test-ssh.t b/tests/test-ssh.t
--- a/tests/test-ssh.t
+++ b/tests/test-ssh.t
@@ -520,20 +520,8 @@ remote hook failure is attributed to rem
$ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc
$ hg -q --config ui.ssh="python '$TESTDIR/dummyssh'" clone ssh://user@dummy/remote hookout
+ abort: no suitable response from remote hg!
+ [255]
$ cd hookout
+ $TESTTMP.sh: line 264: cd: hookout: No such file or directory
$ touch hookfailure
- $ hg -q commit -A -m 'remote hook failure'
....
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 13:46:36 -0800] rev 27052
strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Before this patch, strip was using repo._bookmarks.write.
This patch replaces this code with the recommended way of saving bookmarks
changes: repo._bookmarks.recordchange.
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 13:23:47 -0800] rev 27051
histedit: make use of bookmarks.recordchange instead of bookmarks.write
Before this patch we were using the old api bookmarks.write, this patches
replaces its usage by bookmarks.recordchange, the new api to record bookmark
changes.
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 17:40:13 -0800] rev 27050
largefiles: fall back to the original for change/delete conflicts
The largefiles merge code (currently) does not handle change/delete conflicts.
So fall back to regular filemerge in that case.
Making this code handle change/delete conflicts is left as an exercise for the
future.
Siddharth Agarwal <sid0@fb.com> [Sat, 14 Nov 2015 00:07:11 -0800] rev 27049
mergestate.add: store absentfilectxes as nullhex
This is the most natural way to represent these files. We also need to make
sure we don't try to store these files in the merge store.
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 01:14:15 -0800] rev 27048
mergestate._resolve: handle change/delete conflicts
We will represent a deleted file as 'nullhex' in the in-memory and on-disk
merge states. We need to be able to create absentfilectxes in that case, and
delete the file from disk rather than try to write it out.
Siddharth Agarwal <sid0@fb.com> [Sat, 14 Nov 2015 00:00:46 -0800] rev 27047
filemerge: don't try to copy files known to be absent
We set 'back' to None in this case, so we need to handle that as well.
Yuya Nishihara <yuya@tcha.org> [Sat, 31 Oct 2015 22:07:40 +0900] rev 27046
hgweb: use absolute_import
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 15:09:35 +0900] rev 27045
hgweb: import wsgicgi at top level
There should be no practical reason to delay the import of wsgicgi.
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 15:07:08 +0900] rev 27044
hgweb: import BaseHTTPServer as module at top level
This will avoid future warning spotted by the import checker.
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 14:23:23 +0900] rev 27043
hgweb: do not import hgweb_mod.hgweb and .makebreadcrumb as symbol
It will be enforced by the import checker.
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:57:43 -0800] rev 27042
filemerge: don't try using external tools on change/delete conflicts
This is mostly for completeness' sake -- the current code shouldn't get to this
point.
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:56:00 -0800] rev 27041
filemerge: don't attempt to premerge change/delete conflicts
This is mostly for completeness' sake -- at the moment we don't support any
tools for change/delete conflicts that would do a premerge.
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:58:05 -0800] rev 27040
filemerge._mergecheck: add check for change/delete conflicts
Merge tools that perform an actual 3-way merge can't handle change/delete
conflicts. This adds a check for that.
Siddharth Agarwal <sid0@fb.com> [Sun, 15 Nov 2015 21:40:15 -0800] rev 27039
filemerge._picktool: only pick from nomerge tools for change/delete conflicts
For --tool or HGMERGE, we could have either:
(a) proceeded with the particular tool, then failed the merge.
(b) chosen to prompt regardless.
We're explicitly choosing (b) here, because it's effectively what we've been
doing so far and helps maintain an easier-to-use interface.
However, in future patches we're going to change the default selection from
'pick changed version' to 'leave unresolved'. That fixes most of the brokenness
involved with choice (b).
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:52:26 -0800] rev 27038
filemerge: add support for change/delete conflicts to the ':prompt' tool
We haven't added the 'leave unresolved' option yet -- that will come in a
future patch.
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:41:50 -0800] rev 27037
filemerge: add support for change/delete conflicts to the ':other' merge tool
This, along with the previous patch to the :local merge tool, covers the full
matrix of change/delete conflicts.