Wed, 22 Jul 2015 10:19:17 +0800 highlight: produce correct markup when there's a blank line just before EOF stable
Anton Shestakov <av6@dwimlabs.net> [Wed, 22 Jul 2015 10:19:17 +0800] rev 25867
highlight: produce correct markup when there's a blank line just before EOF Due to how the colorized output from pygments was stripped of <pre> elements, when there was an empty line at the end of a file, highlight extension produced an incorrect markup (no closing tags from the fileline/annotateline template). It wasn't usually noticeable, because browsers were smart enough to see where the missing tags should've been, but in monoblue style it resulted in the last line having twice the normal height. Instead of awkwardly trying to strip outer <pre></pre> tags, let's make the formatter with nowrap=True, which should do what we need in pygments since at least 0.5 (2006-10-30). Example from monoblue style: Before: <div class="source"> <div style="font-family:monospace" class="parity0"> <pre><a class="linenr" href="#l1" id="l1"> 1</a> </pre> </div> <div style="font-family:monospace" class="parity1"> <pre><a class="linenr" href="#l2" id="l2"> 2</a> </div> Now: <div class="source"> <div style="font-family:monospace" class="parity0"> <pre><a class="linenr" href="#l1" id="l1"> 1</a> </pre> </div> <div style="font-family:monospace" class="parity1"> <pre><a class="linenr" href="#l2" id="l2"> 2</a> </pre> </div> </div> (Notice the missing </pre></div> now in place)
Mon, 20 Jul 2015 23:33:57 -0400 test-check-config: convert directory separators to '/' for MSYS stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 20 Jul 2015 23:33:57 -0400] rev 25866
test-check-config: convert directory separators to '/' for MSYS The output of the files command uses native separator. MSYS then seems to drop the '\' on Windows when invoking python: --- c:/Users/Matt/Projects/hg/tests/test-check-config-hg.t +++ c:/Users/Matt/Projects/hg/tests/test-check-config-hg.t.err @@ -6,22 +6,10 @@ $ hg files "set:(**.py or **.txt) - tests/**" | > xargs python contrib/check-config.py Traceback (most recent call last): File "contrib/check-config.py", line 93, in <module> sys.exit(main(sys.argv[1:])) File "contrib/check-config.py", line 24, in main for l in open(f): IOError: [Errno 2] No such file or directory: 'contriball-revsets.txt' [123]
Mon, 20 Jul 2015 22:48:42 -0400 test-subrepo: fix globs for Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 20 Jul 2015 22:48:42 -0400] rev 25865
test-subrepo: fix globs for Windows It looks like these changes originated with 2538b87660be. I'm not sure that it was intentional, but is seems harmless enough for an error message.
Mon, 20 Jul 2015 22:44:53 -0400 test-clone: fix globs for Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 20 Jul 2015 22:44:53 -0400] rev 25864
test-clone: fix globs for Windows
Mon, 20 Jul 2015 15:42:39 -0700 tests: diff -r on Solaris emits "Common subdirectories:" stable
Danek Duvall <danek.duvall@oracle.com> [Mon, 20 Jul 2015 15:42:39 -0700] rev 25863
tests: diff -r on Solaris emits "Common subdirectories:" When using the -r option to Solaris diff, any directores that compare identically are mentioned in the output. We don't really care about these directories for the purposes of this test, so ignore them.
Mon, 20 Jul 2015 15:39:15 -0700 tests: work around differing hunk headers between GNU and Solaris diff stable
Danek Duvall <danek.duvall@oracle.com> [Mon, 20 Jul 2015 15:39:15 -0700] rev 25862
tests: work around differing hunk headers between GNU and Solaris diff The hunk headers specifying what lines the hunk apply to differ. They're irrelevant to the test, so just eliminate them from the output.
Mon, 20 Jul 2015 15:33:20 -0700 tests: use egrep with regular expression branches for compatibility stable
Danek Duvall <danek.duvall@oracle.com> [Mon, 20 Jul 2015 15:33:20 -0700] rev 25861
tests: use egrep with regular expression branches for compatibility GNU grep allows you to use "a\|b" in a regular expression to match either "a" or "b", but at least Solaris grep does not; only egrep allows for that. And egrep considers "a+" to be "a{1,}" instead of an "a" and a literal plus sign, so escape that as well.
Mon, 20 Jul 2015 23:38:56 +0900 parsers: silence warning of implicit integer conversion issued by clang stable
Yuya Nishihara <yuya@tcha.org> [Mon, 20 Jul 2015 23:38:56 +0900] rev 25860
parsers: silence warning of implicit integer conversion issued by clang "-Wshorten-64-to-32" is enabled by default on Mac OS X. Because "len" should be represented in 32bit integer, this patch simply cast ssize_t to int.
Sun, 19 Jul 2015 15:27:28 +0900 tests: disable test of buffer overflow in parsers.c if --pure stable
Yuya Nishihara <yuya@tcha.org> [Sun, 19 Jul 2015 15:27:28 +0900] rev 25859
tests: disable test of buffer overflow in parsers.c if --pure It fails with AttributeError and there's no benefit to make it runnable with pure Python code.
Sun, 19 Jul 2015 18:11:18 +0200 win32: update Inno Setup script after the changes done in 95e042d77a5f stable
Pascal Quantin <pascal.quantin@gmail.com> [Sun, 19 Jul 2015 18:11:18 +0200] rev 25858
win32: update Inno Setup script after the changes done in 95e042d77a5f
Sat, 18 Jul 2015 17:33:59 -0500 Added signature for changeset 96a38d44ba09 stable
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 17:33:59 -0500] rev 25857
Added signature for changeset 96a38d44ba09
Sat, 18 Jul 2015 17:33:55 -0500 Added tag 3.5-rc for changeset 96a38d44ba09 stable
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 17:33:55 -0500] rev 25856
Added tag 3.5-rc for changeset 96a38d44ba09
Sat, 18 Jul 2015 17:32:38 -0500 merge with default for code freeze stable 3.5-rc
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 17:32:38 -0500] rev 25855
merge with default for code freeze
Fri, 26 Jun 2015 18:45:29 -0500 tests: add a check-config pass
Matt Mackall <mpm@selenic.com> [Fri, 26 Jun 2015 18:45:29 -0500] rev 25854
tests: add a check-config pass
Sat, 18 Jul 2015 14:18:31 -0500 hgweb: document web.certificates option
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 14:18:31 -0500] rev 25853
hgweb: document web.certificates option
Sat, 18 Jul 2015 14:17:46 -0500 shelve: make maxbackup doc check-config friendly
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 14:17:46 -0500] rev 25852
shelve: make maxbackup doc check-config friendly
Sat, 18 Jul 2015 14:17:17 -0500 share: make option docs more check-config friendly
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 14:17:17 -0500] rev 25851
share: make option docs more check-config friendly
Sat, 18 Jul 2015 14:16:36 -0500 perf: mark experimental option presleep
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 14:16:36 -0500] rev 25850
perf: mark experimental option presleep
Sat, 18 Jul 2015 14:16:07 -0500 check-config: don't continue prematurely
Matt Mackall <mpm@selenic.com> [Sat, 18 Jul 2015 14:16:07 -0500] rev 25849
check-config: don't continue prematurely The early check for section headers like ^``foo`` was missing actual options like ^``foo.bar``.
Thu, 25 Jun 2015 17:57:26 -0500 subrepo: mark internal-only option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:57:26 -0500] rev 25848
subrepo: mark internal-only option
Thu, 25 Jun 2015 17:56:54 -0500 progress: mark experimental option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:56:54 -0500] rev 25847
progress: mark experimental option
Thu, 25 Jun 2015 17:56:26 -0500 censor: mark experimental option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:56:26 -0500] rev 25846
censor: mark experimental option
Thu, 25 Jun 2015 17:56:06 -0500 bundle2: fix type of experimental option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:56:06 -0500] rev 25845
bundle2: fix type of experimental option
Thu, 25 Jun 2015 17:54:55 -0500 merge: make merge.preferancestor type and default consistent
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:54:55 -0500] rev 25844
merge: make merge.preferancestor type and default consistent (and mark it)
Thu, 25 Jun 2015 17:53:16 -0500 merge: mark ancient debugging option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:53:16 -0500] rev 25843
merge: mark ancient debugging option
Thu, 25 Jun 2015 17:52:20 -0500 email: fix config default value inconsistency
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:52:20 -0500] rev 25842
email: fix config default value inconsistency
Thu, 25 Jun 2015 17:51:32 -0500 bookmarks: mark internal-only option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:51:32 -0500] rev 25841
bookmarks: mark internal-only option
Thu, 25 Jun 2015 17:51:02 -0500 commit: mark internal-only option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:51:02 -0500] rev 25840
commit: mark internal-only option
Thu, 25 Jun 2015 17:50:27 -0500 localrepo: mark format options
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:50:27 -0500] rev 25839
localrepo: mark format options
Thu, 25 Jun 2015 17:49:11 -0500 formatter: mark developer options
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:49:11 -0500] rev 25838
formatter: mark developer options
Thu, 25 Jun 2015 17:48:43 -0500 http2: mark experimental and developer options
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:48:43 -0500] rev 25837
http2: mark experimental and developer options
Thu, 25 Jun 2015 17:47:32 -0500 bookmarks: mark internal-only config option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:47:32 -0500] rev 25836
bookmarks: mark internal-only config option
Thu, 25 Jun 2015 17:46:55 -0500 filemerge: mark internal-only config option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:46:55 -0500] rev 25835
filemerge: mark internal-only config option
Thu, 25 Jun 2015 17:46:29 -0500 profiler: mark developer-only config option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:46:29 -0500] rev 25834
profiler: mark developer-only config option
Thu, 25 Jun 2015 17:45:49 -0500 debugger: mark developer-only option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:45:49 -0500] rev 25833
debugger: mark developer-only option (and rearrange comment)
Thu, 25 Jun 2015 17:44:15 -0500 commandserver: mark developer-only logging option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:44:15 -0500] rev 25832
commandserver: mark developer-only logging option
Thu, 25 Jun 2015 17:43:52 -0500 generaldelta: mark experimental reordering option
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:43:52 -0500] rev 25831
generaldelta: mark experimental reordering option
Thu, 25 Jun 2015 17:43:24 -0500 bundlerepo: mark internal-only config variable
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:43:24 -0500] rev 25830
bundlerepo: mark internal-only config variable
Thu, 25 Jun 2015 17:42:45 -0500 win32text: mark deprecated extension option deprecated
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:42:45 -0500] rev 25829
win32text: mark deprecated extension option deprecated
Thu, 25 Jun 2015 17:42:09 -0500 transplant: mark some undocumented options deprecated
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:42:09 -0500] rev 25828
transplant: mark some undocumented options deprecated
Thu, 25 Jun 2015 17:41:40 -0500 mq: tweak config reading to make check-config happy
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:41:40 -0500] rev 25827
mq: tweak config reading to make check-config happy The not-really-a-bool handling here upsets the type checker.
Fri, 17 Jul 2015 13:41:07 -0500 patchbomb: make sure all users of smtp.verifycert agree on the default
Matt Mackall <mpm@selenic.com> [Fri, 17 Jul 2015 13:41:07 -0500] rev 25826
patchbomb: make sure all users of smtp.verifycert agree on the default
Thu, 25 Jun 2015 17:38:14 -0500 patchbomb: mark ancient option deprecated
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:38:14 -0500] rev 25825
patchbomb: mark ancient option deprecated This just exists for backwards compatibility with the earliest versions of patchbomb.
Thu, 25 Jun 2015 17:37:35 -0500 histedit: mark defaultrev option experimental
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:37:35 -0500] rev 25824
histedit: mark defaultrev option experimental
Sat, 18 Jul 2015 10:57:20 -0700 changegroup: compute seen files as changesets are added (issue4750)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 18 Jul 2015 10:57:20 -0700] rev 25823
changegroup: compute seen files as changesets are added (issue4750) Before this patch, addchangegroup() would walk the changelog and compute the set of seen files between applying changesets and applying manifests. When cloning large repositories such as mozilla-central, this consumed a non-trivial amount of time. On my MBP, this walk takes ~10s. On a dainty EC2 instance, this was measured to take ~125s! On the latter machine, this delay was enough for the Mercurial server to disconnect the client, thinking it had timed out, thus causing a clone to abort. This patch enables the changelog to compute the set of changed files as new revisions are added. By doing so, we: * avoid a potentially heavy computation between changelog and manifest processing by spreading the computation across all changelog additions * avoid extra reads from the changelog by operating on the data as it is added The downside of this is that the add revision callback does result in extra I/O. Before, we would perform a flush (and subsequent read to construct the full revision) when new delta chains were created. For changelogs, this is typically every 2-4 revisions. Using the callback guarantees there will be a flush after every added revision *and* an open + read of the changelog to obtain the full revision in order to read the added files. So, this increases the frequency of these operations by the average chain length. In the future, the revlog should be smart enough to know how to read revisions that haven't been flushed yet, thus eliminating this extra I/O. On my MBP, the total CPU times for an `hg unbundle` with a local mozilla-central gzip bundle containing 251,934 changesets and 211,065 files did not have a statistically significant change with this patch, holding steady around 360s. So, the increased revlog flushing did not have an effect. With this patch, there is no longer a visible pause between applying changeset and manifest data. Before, it sure felt like Mercurial was lethargic making this transition. Now, the transition is nearly instantaneous, giving the impression that Mercurial is faster. Of course, eliminating this pause means that the potential for network disconnect due to channel inactivity during the changelog walk is eliminated as well. And that is the impetus behind this change.
Sat, 18 Jul 2015 10:29:37 -0700 revlog: add support for a callback whenever revisions are added
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 18 Jul 2015 10:29:37 -0700] rev 25822
revlog: add support for a callback whenever revisions are added A subsequent patch will add a feature that performs iterative computation as changesets are added from a changegroup. To facilitate this type of processing in a generic manner, we add a mechanism for calling a function whenever a revision is added via revlog.addgroup(). There are potential performance concerns with this callback, as using it will flush the revlog after every revision is added.
Fri, 17 Jul 2015 13:44:01 -0700 crecord: throws error instead of crashing for large diffs
Laurent Charignon <lcharignon@fb.com> [Fri, 17 Jul 2015 13:44:01 -0700] rev 25821
crecord: throws error instead of crashing for large diffs Before this patch, crecord was crashing for large diffs (30k lines on my laptop). This patch catches the exception raised in that case and use the error reporting mechanism introduced in the previous patch for notifying the user of the issue. It is not possible to add a test for that for now as we don't yet have full blown ui tests for the curses interface.
Fri, 17 Jul 2015 13:41:17 -0700 crecord: add error reporting for failure in curses interface initialization
Laurent Charignon <lcharignon@fb.com> [Fri, 17 Jul 2015 13:41:17 -0700] rev 25820
crecord: add error reporting for failure in curses interface initialization Before this patch, we couldn't report to the user any error that occurred: - after we enabled the curses interface but - before the interface is set up and drawn This patch, provides a way to set errors that happens during the initialization of the interface and log them once the curses interface has been displayed.
Sun, 05 Jul 2015 12:15:54 +0900 revset: parse nullary ":" operator as "0:tip"
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 12:15:54 +0900] rev 25819
revset: parse nullary ":" operator as "0:tip" This is necessary for compatibility with the old-style parser that will be removed by future patches.
Mon, 06 Jul 2015 22:01:41 +0900 parser: take suffix action if no infix action is defined
Yuya Nishihara <yuya@tcha.org> [Mon, 06 Jul 2015 22:01:41 +0900] rev 25818
parser: take suffix action if no infix action is defined If no infix action is defined, a suffix action isn't ambiguous, so it should be taken no matter if the next token can be an operand. This is exactly the same flow as prefix/primary handling. This change has no effect now because all suffix tokens have infix actions.
Mon, 06 Jul 2015 21:55:55 +0900 parser: reorder infix/suffix handling to be similar to prefix/primary flow
Yuya Nishihara <yuya@tcha.org> [Mon, 06 Jul 2015 21:55:55 +0900] rev 25817
parser: reorder infix/suffix handling to be similar to prefix/primary flow It can be exactly the same flow as the prefix/primary handling. A suffix action is accepted only if the next token never starts new term.
Sun, 05 Jul 2015 12:09:27 +0900 parser: resolve ambiguity where both prefix and primary actions are defined
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 12:09:27 +0900] rev 25816
parser: resolve ambiguity where both prefix and primary actions are defined If both actions are defined, a primary-expression action is accepted only if the next token never starts new term. For example, parsed as primary expression: ":" # next token 'end' has no action "(:)" # next token ')' has no action ":+y" # next token '+' is infix operator parsed as prefix operator: ":y" # next token 'y' is primary expression ":-y" # next token '-' is prefix operator This is mostly the same resolution as the infix/suffix rules.
Sun, 05 Jul 2015 12:02:13 +0900 parser: separate actions for primary expression and prefix operator
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 12:02:13 +0900] rev 25815
parser: separate actions for primary expression and prefix operator This will allow us to define both a primary expression, ":", and a prefix operator, ":y". The ambiguity will be resolved by the next patch. Prefix actions in elements table are adjusted as follows: original prefix primary prefix ----------------- -------- ----------------- ("group", 1, ")") -> n/a ("group", 1, ")") ("negate", 19) -> n/a ("negate", 19) ("symbol",) -> "symbol" n/a
Fri, 17 Jul 2015 15:53:56 +0200 changelog: update read pending documentation
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 17 Jul 2015 15:53:56 +0200] rev 25814
changelog: update read pending documentation The pending index contains a full copy of the index + in-transaction data. We replace "extend" with "overwrite" to make this clearer.
Sun, 15 Jul 2012 12:43:10 -0400 extdiff: add support for subrepos
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Jul 2012 12:43:10 -0400] rev 25813
extdiff: add support for subrepos Git and svn subrepo support is incomplete, because they don't support archiving the working copy.
Wed, 11 Jul 2012 20:48:51 -0400 extdiff: use archiver to take snapshots of committed revisions
Matt Harbison <matt_harbison@yahoo.com> [Wed, 11 Jul 2012 20:48:51 -0400] rev 25812
extdiff: use archiver to take snapshots of committed revisions This is the last step before supporting extdiff -S. It maintains the existing behavior of diffing the largefile standins instead of the largefiles themselves. Note however that the standins are not updated immediately upon modification, so uncommitted largefile changes are ignored, as they previously were, even with the diff command.
Sat, 11 Jul 2015 23:26:33 -0400 largefiles: allow the archiving of largefiles to be disabled
Matt Harbison <matt_harbison@yahoo.com> [Sat, 11 Jul 2015 23:26:33 -0400] rev 25811
largefiles: allow the archiving of largefiles to be disabled There are currently no users of this, but it is a necessary step before converting extdiff to use archive. It may be useful to add an argument to extdiff in the future and allow largefiles to be diffed, but archiving largefiles can have significant overhead and may not be very diffable, so archiving them by default seems wrong. It is a mystery to me why the lfstatus attribute needs to be set on the unfiltered repo. However if it is set on the filtered repo instead (and the filtered repo is passed to the original command), the lfstatus attribute is False in the overrides for archival.archive() and hgsubrepo.archive() when invoking the archive command. This smells like the buggy status behavior (see 67d63ec85eb7, which was reverted in df463ca0adef). Neither the status nor summary commands have this weird behavior in their respective overrides.
Thu, 16 Jul 2015 23:36:08 +0900 parsers: fix buffer overflow by invalid parent revision read from revlog
Yuya Nishihara <yuya@tcha.org> [Thu, 16 Jul 2015 23:36:08 +0900] rev 25810
parsers: fix buffer overflow by invalid parent revision read from revlog If revlog file is corrupted, it can have parent pointing to invalid revision. So we should validate it before updating nothead[], phases[], seen[], etc. Otherwise it would cause segfault at best. We could use "rev" instead of "maxrev" as upper bound, but I think the explicit "maxrev" can clarify that we just want to avoid possible buffer overflow vulnerability.
Thu, 16 Jul 2015 11:12:15 -0700 histedit: mark temporary commits as obsolete when allowed to
Laurent Charignon <lcharignon@fb.com> [Thu, 16 Jul 2015 11:12:15 -0700] rev 25809
histedit: mark temporary commits as obsolete when allowed to Before this patch, we were stripping temporary commits at the end of a histedit whether it was successful or not. If we can create obs markers, we should create them instead of stripping because it is faster and safer.
Thu, 16 Jul 2015 11:17:37 -0700 histedit: minor refactoring of createmarkers check
Laurent Charignon <lcharignon@fb.com> [Thu, 16 Jul 2015 11:17:37 -0700] rev 25808
histedit: minor refactoring of createmarkers check We use a variable to store whether or not we can create obsolescence markers. It makes the patch series more readable as we are going to reuse this values in other places in the function.
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip