Eric Sumner <ericsumner@fb.com> [Thu, 05 Feb 2015 16:03:26 -0800] rev 24072
bundlerepo: keep track of the original bundle object
Bundlerepo should always close() the object that it receives from
exchange.readbundle(). When bundle2 support is added in a later diff,
self.bundle will be overwritten to be the changegroup part instead of the
entire bundle unpacker.
Eric Sumner <ericsumner@fb.com> [Thu, 05 Feb 2015 15:56:50 -0800] rev 24071
bundle2.unbundle20: add compressed() method
Bundlerepo uses the compressed() method to determine whether it should write
an uncompressed temporary file. Since we don't support compressed bundle2 files
at the moment, make this method return true.
Eric Sumner <ericsumner@fb.com> [Thu, 05 Feb 2015 15:52:57 -0800] rev 24070
bundle2.unpackermixin: default value for seek() whence parameter
The contract for seek() includes seeking to an offset from the beginning of the
file when whence is omitted; put this implementation in compliance.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 06 Feb 2015 23:40:46 +0100] rev 24069
windows: adjust doc string and comments of posixfile()
The doc string of osutil.posixfile includes (line 611):
"On error, this function may raise either a WindowsError or an IOError."
which is most likely correct, but does not fit for this function here anymore,
as we do fold WindowsError to IOError here specifically.
And this function is now a bit more than just an exception-wrapper, as it has
been expanded to additionally sanitize the unloved seek/tell behavior
of Windows.
(Self-disclosure: This patch is entirely untested at the time of its
publication, as I'm currently not using this version myself. I send it
in hopes that it will reduce potential future confusion. CC-ing Matt Harbison)
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 04 Feb 2015 14:11:45 -0800] rev 24068
color: support a different color mode when the pager is active
MSYS on Windows has a terminal that supports the "win32" color mode
(which "auto" properly detects for us). However, a popularily configured
pager in that environment (GNU less) only supports the "ansi" color
mode.
This patch teaches color about a new config option: pagermode. It
behaves like "mode" but is only consulted when the pager is active for
the current command. MSYS users can now set "pagermode = ansi" and get a
colorful experience that just works. Previously, MSYS users would have
to live without color when using GNU less as the pager, would have to
manually configure the pager to attend every command, or would have
gibberish if "ansi" was used without the pager.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 06 Feb 2015 12:09:09 -0800] rev 24067
pager: ensure wrapped dispatch._runcommand runs before color's
An upcoming patch will teach color to potentially act differently if the
pager is active. Since both extensions wrap the same function
(dispatch._runcommand) to change behavior, we must guarantee that
pager's wrapped function runs before color's so color may read the
breadcrumb left by pager.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 06 Feb 2015 12:07:56 -0800] rev 24066
pager: set an attribute on ui indicating that a pager is active
A subsequent patch will teach the color extension to do different things
depending on whether a pager is active. This patch leaves a breadcrumb
on the ui instance to allow it do that that.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 06 Feb 2015 12:07:32 -0800] rev 24065
extensions: support callbacks after another extension loads
An upcoming patch will introduce a dependency between the color and
pager extensions. To prepare for this, we teach extensions how to
register callbacks that can execute when another extension loads.
This patch is based on code provided by Matt Mackall. But significant
parts have changed (such as the ability to register multiple callbacks
and the change in behavior to always call a callback).
I believe that always firing the callback is a good practice. I think
the common use for this feature will be for extensions to say "run this
one-time setup code, after this other extension if possible." Always
running the callback will facilitate this.
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Feb 2015 21:53:39 +0900] rev 24064
log: fix --follow null parent not to include revision 0
If p1 is null, ':.' is translated as '0:null'. But rangeset can't handle null,
only revision 0 was visible. Because 'null' should not be listed implicitly,
"log --follow" (without -r) should be empty if p1 is null.
Test of "hg grep -f" is added for cmdutil.walkchangerevs().
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Feb 2015 00:22:20 +0900] rev 24063
cmdutil: have walkchangerevs utilize common function to build revs
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Feb 2015 00:15:35 +0900] rev 24062
log: extract common part from getgraphlogrevs() and getlogrevs()
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Feb 2015 00:06:47 +0900] rev 24061
graphlog: remove useless check for empty repo when --follow is specified
This prepares for extracting common part from getgraphlogrevs() and
getlogrevs(). getlogrevs() does not handle empty repo specially.
When it was added at
d74099ac2ac1, revs were build by old-style query, '.:0'.
So I think the purpose of "len(repo) > 0" was to handle the case of . = null.
Currently it isn't necessary for 'reverse(:.)', and it does not work if repo
is not empty but p1 is null.
$ hg up null
$ hg glog --follow -T '{rev}:{node|short}\n'
o 0:
0a04b987be5a
The subsequent patch will fix this problem, so drops the wrong version for now.
Yuya Nishihara <yuya@tcha.org> [Thu, 05 Feb 2015 23:49:18 +0900] rev 24060
graphlog: move comment and flag denoting revs might be unsorted
This prepares for extracting common part from getgraphlogrevs() and
getlogrevs(). "possiblyunsorted" exists only in getgraphlogrevs().
Yuya Nishihara <yuya@tcha.org> [Thu, 05 Feb 2015 23:14:44 +0900] rev 24059
graphlog: remove too early return from getgraphlogrevs() for empty repo
Even if repository is empty, null revision should exist.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jan 2015 22:22:09 -0800] rev 24058
trydiff: call util.binary in only one place
It's practically free to call util.binary on empty or None content. By
relying on that, we can replace the current four call sites by one.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jan 2015 21:35:57 -0800] rev 24057
trydiff: collect all lossiness checks in one place
By having all the checks for lossiness in one place, it becomes much
easier to get an overview of the conditions that lead to losedatafn()
being called. It also makes it obvious that it can not be called
multiple times for a single time (something that was rather tricky to
determine before).
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Jan 2015 21:03:57 -0800] rev 24056
trydiff: replace 'binarydiff' variable by 'binary' variable
It's not obvious, but every path in the 'if opts.git or losedatafn:'
block will have checked whether the file is binary [1]. Let's assign
the result of this check to a variable so we can simplify by checking
'binary and opts.git' in only one place instead of every place we
currently assign to 'binarydiff'.
[1] Except when deleting an empty file, but checking whether an empty
string is binary is very cheap anyway.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jan 2015 15:09:21 -0800] rev 24055
trydiff: rename 'op' to make it more specific
Rename the 'op' variable that can take values None/'copy'/'rename' to
'copyop' to make it a little more specific.
Anton Shestakov <engored@ya.ru> [Fri, 06 Feb 2015 15:52:55 +0800] rev 24054
hgweb: replace implicit <tbody> with explicit <thead> where appropriate
Some templates in paper style use <tbody> elements inside <table> to assign a
class to "body" part of that table (in this case, to make rows striped). The
problem is that the <tbody> is preceded by <tr> element, which browsers
understand as an implicit start of table body, so the following exlicit <tbody>
will actually be "nested", which is not valid.
Since that first <tr> contains table headers, wrapping it in <thead> is both
semantically correct and follows the advertised XHTML 1.1 doctype.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 31 Jan 2015 12:54:35 -0500] rev 24053
obsolete: drop the explicit seek to EOF after append mode open()
posixfile now handles this.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 31 Jan 2015 12:42:05 -0500] rev 24052
branchmap: backout
6bf93440a717
This is no longer needed now that posixfile handles seeking to EOF when it opens
a file in append mode.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 31 Jan 2015 12:39:44 -0500] rev 24051
windows: seek to the end of posixfile when opening in append mode
The position is implementation defined when opening in append mode,
and it seems like Linux sets it to EOF while Windows keeps it at zero.
This has caused problems in the past when a file is opened and tell()
is immediately called, such as
48c232873a54 and
6bf93440a717.
Since the only caller of osutil.posixfile is this windows module, this seems
like a better place to fix the issue than in osutil.c and pure.osutil.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 20 Nov 2014 12:15:12 -0800] rev 24050
context: use unfiltered repo for '.'
There is no reason to read obsolescence markers when doing a plain 'hg
status' without --rev. Use the unfiltered repo when initializing
context._rev to speed things up. This speeds up 'hg status' from
1.342s to 0.080s on my repo with ~110k markers.
Eric Sumner <ericsumner@fb.com> [Thu, 05 Feb 2015 14:09:08 -0800] rev 24049
check-commit: check capitalization in summary lines
At the moment, check-commit will complain about the topic being capitalized,
but not the summary that comes after it. This diff corrects that deficiency.
Eric Sumner <ericsumner@fb.com> [Thu, 05 Feb 2015 10:57:45 -0800] rev 24048
bundle2: seek in part iterator
When iterating over bundle2 parts, add a seek to the iterator so that
processing will continue normally even if the entire part isn't
consumed.
Eric Sumner <ericsumner@fb.com> [Thu, 05 Feb 2015 10:56:05 -0800] rev 24047
bundle2: now that we have a seek implementation, use it
Replace bare part.read() calls with part.seek(0, 2) since the return value is
being ignored. As this doesn't necessarily require building a string that
contains the rest of the part, the potential exists to reduce the memory
footprint of these operations.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 04 Feb 2015 22:25:35 -0800] rev 24046
obsolete: populate successors, precursors, children lazily
The precursors and children dictionaries are not used by many
commands. By making them lazily populated,
'hg log -r @~10::@ >/dev/null' is sped up from 0.564s to 0.440s on my
hg.hg repo with 73k markers.
Also make successors lazily populated, mostly for consistency with the
others.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 04 Feb 2015 22:40:48 -0800] rev 24045
obsolete: pass only new markers to _checkinvalidmarkers()
We will soon delay populating precursors until we have to. To prepare
for that, make _checkinvalidmarkers() scan for a nullid precursor in
the list of new markers instead of the (currently) cheaper 'if nullid
in precursors' check.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 20 Jan 2015 22:01:37 -0800] rev 24044
obsolete: extract helpers from _load()
In preparation for making the successors, precursors, and children
dictionaries lazily populated, break up _load() into one function for
adding markers to each dictionary.
Eric Sumner <ericsumner@fb.com> [Tue, 20 Jan 2015 17:38:42 -0800] rev 24043
test-gendoc: require gettext
If the gettext utilities aren't installed, there is no way to make the
translations. This causes the gettext client to fall back to the untranslated
message, which triggers "** NOTHING TRANSLATED **" errors and a test failure.