Sun, 07 Aug 2016 16:36:08 +0900 revset: do not partial-match operator and function names in optimize()
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Aug 2016 16:36:08 +0900] rev 29898
revset: do not partial-match operator and function names in optimize() It was error-prone, and actually there was a typo, s/ancestorspec/ancestor/.
Sun, 07 Aug 2016 14:13:27 +0900 revset: remove false condition to process 'negate' operator
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Aug 2016 14:13:27 +0900] rev 29897
revset: remove false condition to process 'negate' operator 'negate' is mapped to 'string' at the above clause.
Sun, 07 Aug 2016 15:01:42 +0900 revset: make optimize() reject unknown operators
Yuya Nishihara <yuya@tcha.org> [Sun, 07 Aug 2016 15:01:42 +0900] rev 29896
revset: make optimize() reject unknown operators This should have caught the bug of 'keyvalue' operator fixed at 5004ef47f437. The catch-all pattern is useless since optimize() should be aware of all known operators.
Thu, 01 Sep 2016 22:06:42 +0200 help: show content for explicitly disabled extension (issue5228)
liscju <piotr.listkiewicz@gmail.com> [Thu, 01 Sep 2016 22:06:42 +0200] rev 29895
help: show content for explicitly disabled extension (issue5228)
Fri, 02 Sep 2016 10:18:56 +0200 obsolete: fix minor module documentation issues
liscju <piotr.listkiewicz@gmail.com> [Fri, 02 Sep 2016 10:18:56 +0200] rev 29894
obsolete: fix minor module documentation issues
Fri, 26 Aug 2016 23:31:17 +0900 debugextensions: hide "ships-with-hg-core" magic string (BC)
Yuya Nishihara <yuya@tcha.org> [Fri, 26 Aug 2016 23:31:17 +0900] rev 29893
debugextensions: hide "ships-with-hg-core" magic string (BC) Since we have "bundled" flag, we no longer need to rephrase "ships-with-hg-core" to show as "internal".
Wed, 31 Aug 2016 23:22:07 +0900 debugextensions: show ships-with-hg-core state as a separate field
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Aug 2016 23:22:07 +0900] rev 29892
debugextensions: show ships-with-hg-core state as a separate field This is less magical than rephrasing ships-with-hg-core as internal, and we can distinguish "internal" liar. "tested with: internal" will be hidden by the next patch.
Wed, 31 Aug 2016 23:36:37 +0900 test-debugextensions: add dummy extension to make ifcontains() test more solid
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Aug 2016 23:36:37 +0900] rev 29891
test-debugextensions: add dummy extension to make ifcontains() test more solid If testedwith were a string, ifcontains("3.2", testedwith) would match "3.2.1". New test added to cover that.
Thu, 01 Sep 2016 02:29:46 +0530 py3: remove use of *L syntax
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Sep 2016 02:29:46 +0530] rev 29890
py3: remove use of *L syntax The int in Python 3 behaves as long so no need of L's in py3. Moreover we dont need long here.
Tue, 30 Aug 2016 09:22:53 -0700 util: rename checkcase() to fscasesensitive() (API)
Martin von Zweigbergk <martinvonz@google.com> [Tue, 30 Aug 2016 09:22:53 -0700] rev 29889
util: rename checkcase() to fscasesensitive() (API) I always read the name "checkcase(path)" as "do we need to check for case folding at this path", but it's actually (I think) meant to be read "check if the file system cares about case at this path". I'm clearly not the only one confused by this as the dirstate has this property: def _checkcase(self): return not util.checkcase(self._join('.hg')) Maybe we should even inverse the function and call it fscasefolding() since that's what all callers care about?
Mon, 29 Aug 2016 17:48:14 -0700 manifest: call m1.load and m2.load before writing a subtree
Durham Goode <durham@fb.com> [Mon, 29 Aug 2016 17:48:14 -0700] rev 29888
manifest: call m1.load and m2.load before writing a subtree As part of refactoring the manifest, certain test cases started failing because writesubtrees was called with p1 and p2 manifests that had not been loaded (so accessing m1._dirs resulted in an empty set). Let's call _load on these before attempting to access _dirs. This was caught by tests when future patches were applied.
Tue, 30 Aug 2016 13:13:50 -0400 histedit: correct output of error when 'base' is from the edit list
Augie Fackler <augie@google.com> [Tue, 30 Aug 2016 13:13:50 -0400] rev 29887
histedit: correct output of error when 'base' is from the edit list This was made more obvious by marmoute's recent rearrangement of this code.
Tue, 30 Aug 2016 13:33:48 -0400 py3: split check of pygments-using files from the rest of the tree
Augie Fackler <augie@google.com> [Tue, 30 Aug 2016 13:33:48 -0400] rev 29886
py3: split check of pygments-using files from the rest of the tree If we don't do this, people without pygments installed in their Python 3 environment silently stop checking test-check-py3-compat, which isn't really what we wanted. This preserves stability of the test output while still letting anyone with a recent-enough Python 3 run the majority of the Python 3 compat checking test.
Fri, 26 Aug 2016 23:38:52 +0900 version: change "place" field of extension to "bundled" flag
Yuya Nishihara <yuya@tcha.org> [Fri, 26 Aug 2016 23:38:52 +0900] rev 29885
version: change "place" field of extension to "bundled" flag The name "place" sounds odd. We can simply expose raw boolean values instead of switching external/internal literals.
Sat, 27 Aug 2016 00:00:28 +0900 extensions: use ismoduleinternal() thoroughly
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Aug 2016 00:00:28 +0900] rev 29884
extensions: use ismoduleinternal() thoroughly "ships-with-hg-core" would be long enough to typo.
Tue, 30 Aug 2016 09:25:00 -0700 lock: show more detail for new-style locks in lock waiting message (issue4752)
Mark Ignacio <mignacio@fb.com> [Tue, 30 Aug 2016 09:25:00 -0700] rev 29883
lock: show more detail for new-style locks in lock waiting message (issue4752) Improve the lock waiting warning message by explicitly saying that a host and process are holding the lock. This nudges confused new users in the direction of investigating the other process instead of removing the lock.
Mon, 29 Aug 2016 00:00:05 +0900 formatter: add context manager interface for convenience
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Aug 2016 00:00:05 +0900] rev 29882
formatter: add context manager interface for convenience And port "hg files" to test it. As you can see, extra indent is necessary to port to this API. I don't think we should switch every fm.formatter() call to "with" statement.
Fri, 26 Aug 2016 21:06:31 +0200 histedit: remove now unused 'constraints' related code
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 21:06:31 +0200] rev 29881
histedit: remove now unused 'constraints' related code Now that the one action that need different logic handle that using inheritance and overriding, we can remove that code.
Fri, 26 Aug 2016 21:00:33 +0200 histedt: use inheritance to override the constraints in 'base'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 21:00:33 +0200] rev 29880
histedt: use inheritance to override the constraints in 'base' All actions but one actually have the same constraints when it comes to validate the 'action.node' value. So we actually just add this code to a method that can be overwritten in the one action where it matters. The now unused 'contraints' related enum and class attribute will be cleaned up in the next changeset.
Fri, 26 Aug 2016 20:54:52 +0200 histedit: move constraint verification to the 'action.verify' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 20:54:52 +0200] rev 29879
histedit: move constraint verification to the 'action.verify' method Action has a method dedicated to verifying its validity. So we move code related to constrains into that method. This requires a bit more context to the 'verify' method in the same fashion we were passing the 'prev' argument. This is an extra step before we can simplify the constraint handling code further.
Fri, 26 Aug 2016 20:54:32 +0200 histedit: directly use node in 'verifyactions'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 20:54:32 +0200] rev 29878
histedit: directly use node in 'verifyactions' It does not seem useful to convert to hex: it is an extra step and they are longer strings. So we stick to node for the logic. We only convert to short hex for error when needed. As a nice side effect this remove the explicit constant usage in'[12:]'. This will also help moving the code around later as we just have to access action.node.
Fri, 26 Aug 2016 20:42:18 +0200 histedit: temporarily shorten name of 'constraints' variable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 20:42:18 +0200] rev 29877
histedit: temporarily shorten name of 'constraints' variable An upcoming changeset will make the line where this variable is used slightly too long. Other later changesets will clean that up further and makes the variable unnecessary, so this is only temporary and it does seems useful to put anything more complicate in place.
Fri, 26 Aug 2016 20:38:37 +0200 histedit: drop the 'nodetoverify' local variable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 20:38:37 +0200] rev 29876
histedit: drop the 'nodetoverify' local variable We can just use 'action.node'.
Fri, 26 Aug 2016 20:34:58 +0200 histedit: make 'constraints' a class attribute instead of a method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 20:34:58 +0200] rev 29875
histedit: make 'constraints' a class attribute instead of a method There does not seem to be a reason for this to be a method. So we initialise the class attribute once and for all at creation time and drop the instance method.
Fri, 26 Aug 2016 20:31:33 +0200 histedit: drop the 'nodetoverify' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 26 Aug 2016 20:31:33 +0200] rev 29874
histedit: drop the 'nodetoverify' method That method is just returning self.node and is never overridden. We just use the attribute directly instead and get rid of the method. This is the beginning of series to simplify and unify verification of constraints for actions.
Mon, 29 Aug 2016 22:59:39 +0900 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Aug 2016 22:59:39 +0900] rev 29873
test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected Danek Duvall found that gpg-connect-agent of GnuPG 2.0 never starts gpg-agent daemon. The 2.1 way is documented as "gpg-coonect-agent /bye" [1], which appears to be different from the 2.0 way [2]. [1]: https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html [2]: https://www.gnupg.org/documentation/manuals/gnupg-2.0/Invoking-GPG_002dAGENT.html Since "gpg-agent --daemon" of GnuPG 2.1 never prints environment variables, "eval $(gpg-agent --daemon)" would be valid only for GnuPG < 2.1, and we'll need a different workaround for 2.0. I have no 2.0 environment, I won't implement it.
Fri, 26 Aug 2016 00:16:51 +0000 rebase: properly calculate total commits to rebase (issue5347)
timeless <timeless@mozdev.org> [Fri, 26 Aug 2016 00:16:51 +0000] rev 29872
rebase: properly calculate total commits to rebase (issue5347) Before this, predecessor commits were being included in the count
Sun, 28 Aug 2016 17:51:32 -0700 mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com> [Sun, 28 Aug 2016 17:51:32 -0700] rev 29871
mpatch: add setup_mpatch_cffi.py This file got dropped when the corresponding setup.py changes were made.
Wed, 24 Aug 2016 03:59:19 +0200 journal: rename on disk files to 'namejournal'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 24 Aug 2016 03:59:19 +0200] rev 29870
journal: rename on disk files to 'namejournal' The 'journal' naming is already used by the transaction journal. Having an unrelated group of file with such a close naming is confusing and error prone. We rename the file used by the 'journal' extension to use 'namejournal' as the extension track the location of various 'names'.
Thu, 25 Aug 2016 23:13:36 +0000 tests: guard demandimport segment of test-extension.t
timeless <timeless@mozdev.org> [Thu, 25 Aug 2016 23:13:36 +0000] rev 29869
tests: guard demandimport segment of test-extension.t
Thu, 25 Aug 2016 22:03:51 +0000 tests: skip demandimport if disabled
timeless <timeless@mozdev.org> [Thu, 25 Aug 2016 22:03:51 +0000] rev 29868
tests: skip demandimport if disabled demandimport and setuptools and decorator (from ironpython) and pygments leads to lots of fail. If demandimport is disabled we should skip testing it...
Thu, 25 Aug 2016 22:30:35 +0000 hghave: add demandimport checking
timeless <timeless@mozdev.org> [Thu, 25 Aug 2016 22:30:35 +0000] rev 29867
hghave: add demandimport checking
Thu, 25 Aug 2016 22:51:39 +0000 hghave: make bzr checks stricter
timeless <timeless@mozdev.org> [Thu, 25 Aug 2016 22:51:39 +0000] rev 29866
hghave: make bzr checks stricter My bzr does not have bzrlib.revisionspec.RevisionSpec, and thus tests were failing because convert refused to believe in bzr, but hghave without this change thought it was available.
Mon, 22 Aug 2016 19:50:21 -0700 help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Aug 2016 19:50:21 -0700] rev 29865
help: document wire protocol commands
Mon, 22 Aug 2016 19:49:59 -0700 help: document wire protocol "handshake" protocol
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Aug 2016 19:49:59 -0700] rev 29864
help: document wire protocol "handshake" protocol There isn't a formal handshake protocol in the wire protocol. But clients almost certainly need to perform particular actions before they can communicate with a server optimally. So document what that is so people understand what's going on at connection establishment time.
Mon, 22 Aug 2016 19:48:31 -0700 help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Aug 2016 19:48:31 -0700] rev 29863
help: document wire protocol capabilities All capabilities from the history of the project are now documented.
Fri, 02 Sep 2016 20:15:37 +0000 crecord: properly handle files with No newline at eof (issue5268) stable
timeless <timeless@mozdev.org> [Fri, 02 Sep 2016 20:15:37 +0000] rev 29862
crecord: properly handle files with No newline at eof (issue5268) Yes, this bug was a single character with the wrong case...
Fri, 02 Sep 2016 15:20:59 +0100 annotate: pre-calculate the "needed" dictionary (issue5360) stable
Jun Wu <quark@fb.com> [Fri, 02 Sep 2016 15:20:59 +0100] rev 29861
annotate: pre-calculate the "needed" dictionary (issue5360) The "needed" dict is used as a reference counter to free items in the giant "hist" dict. However, currently it is not very accurate and can lead to dropping "hist" items unnecessarily, for example, with the following DAG, -3- / \ 0--1--2--4-- The current algorithm will visit and calculate rev 1 twice, undesired. And it tries to be smart by clearing rev 1's parents: "pcache[1] = []" at the time hist[1] being accessed (note: hist[1] needs to be used twice, by rev 2 and rev 3). It can result in incorrect results if p1 of rev 4 deletes chunks belonging to rev 0. However, simply removing "needed" is not okay, because it will consume 10x memory: # without any change % HGRCPATH= lrun ./hg annotate mercurial/commands.py -r d130a38 3>&2 [1] MEMORY 49074176 CPUTIME 9.213 REALTIME 9.270 # with "needed" removed MEMORY 637673472 CPUTIME 8.164 REALTIME 8.249 This patch moves "needed" (and "pcache") calculation to a separate DFS to address the issue. It improves perf and fixes issue5360 by correctly reusing hist, while maintaining low memory usage. Some additional attempt has been made to further reduce memory usage, like changing "pcache[f] = []" to "del pcache[f]". Therefore the result can be both faster and lower memory usage: # with this patch applied MEMORY 47575040 CPUTIME 7.870 REALTIME 7.926 [1]: lrun is a lightweight sandbox built on Linux cgroup and namespace. It's used to measure CPU and memory usage here. Source code is available at github.com/quark-zju/lrun.
Mon, 22 Aug 2016 19:47:34 -0700 help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Aug 2016 19:47:34 -0700] rev 29860
help: document wire protocol transport protocols The HTTP and SSH transport protocols are documented. This includes how commands and arguments are serialized as well as response types.
Mon, 22 Aug 2016 19:46:39 -0700 help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Aug 2016 19:46:39 -0700] rev 29859
help: internals topic for wire protocol The Mercurial wire protocol is under-documented. This includes a lack of source docstrings and comments as well as pages on the official wiki. This patch adds the beginnings of "internals" documentation on the wire protocol. The documentation should have nearly complete coverage on the lower-level parts of the protocol, such as the different transport mechanims, how commands and arguments are sent, capabilities, and, of course, the commands themselves. As part of writing this documentation, I discovered a number of deficiencies in the protocol and bugs in the implementation. I've started sending patches for some of the issues. I hope to send a lot more. This patch starts with the scaffolding for a new internals page.
Thu, 18 Aug 2016 15:13:56 +0900 grep: add formatter support
Yuya Nishihara <yuya@tcha.org> [Thu, 18 Aug 2016 15:13:56 +0900] rev 29858
grep: add formatter support Several fields are renamed to be consistent with the annotate command, which doesn't mean the last call for the name unification [1]. Actually, I'd rather rename line_number to linenumber, linenum, lineno or line, but I want to port the grep command to formatter first. [1]: https://www.mercurial-scm.org/wiki/GenericTemplatingPlan#Dictionary I don't have any better name for the list of matched/unmatched texts, so they are just called as "texts".
Thu, 18 Aug 2016 14:52:06 +0900 grep: build list of all columns regardless of display options
Yuya Nishihara <yuya@tcha.org> [Thu, 18 Aug 2016 14:52:06 +0900] rev 29857
grep: build list of all columns regardless of display options These columns should always be available in JSON or template outputs. The "change" column is excluded because it has no useful data unless --all is specified.
Thu, 18 Aug 2016 14:23:29 +0900 grep: build list of columns without "grep." label prefix
Yuya Nishihara <yuya@tcha.org> [Thu, 18 Aug 2016 14:23:29 +0900] rev 29856
grep: build list of columns without "grep." label prefix Prepares for formatter support. We need field names without "grep.".
Thu, 18 Aug 2016 14:09:49 +0900 grep: factor out function that prints matched line with labels
Yuya Nishihara <yuya@tcha.org> [Thu, 18 Aug 2016 14:09:49 +0900] rev 29855
grep: factor out function that prints matched line with labels Prepares for formatter support.
Thu, 18 Aug 2016 14:03:25 +0900 grep: refactor loop that yields matched text with label
Yuya Nishihara <yuya@tcha.org> [Thu, 18 Aug 2016 14:03:25 +0900] rev 29854
grep: refactor loop that yields matched text with label As preparation for formatter support, this and the next patch split linestate.__iter__() into two functions, line scanner and displayer. New code uses regexp.search(str, pos) in place of regexp.search(substr), which appears to fix a bug of highlighting.
Thu, 01 Sep 2016 14:01:43 -0500 Added signature for changeset ccd436f7db6d stable
Kevin Bullock <kbullock@ringworld.org> [Thu, 01 Sep 2016 14:01:43 -0500] rev 29853
Added signature for changeset ccd436f7db6d
Thu, 01 Sep 2016 14:01:37 -0500 Added tag 3.9.1 for changeset ccd436f7db6d stable
Kevin Bullock <kbullock@ringworld.org> [Thu, 01 Sep 2016 14:01:37 -0500] rev 29852
Added tag 3.9.1 for changeset ccd436f7db6d
Thu, 01 Sep 2016 13:16:55 -0500 bundle2: localize handleoutput remote prompts stable 3.9.1
Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> [Thu, 01 Sep 2016 13:16:55 -0500] rev 29851
bundle2: localize handleoutput remote prompts Code archaeology suggests that there was no good reason for this not to be localized. 'remote: ' is already localized elsewhere.
Wed, 31 Aug 2016 13:58:33 -0300 i18n-pt_BR: synchronized with a12d13eac513 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 31 Aug 2016 13:58:33 -0300] rev 29850
i18n-pt_BR: synchronized with a12d13eac513
Tue, 05 Jul 2016 09:37:07 +0200 files: change documentation to match its behaviour (issue5276)
liscju <piotr.listkiewicz@gmail.com> [Tue, 05 Jul 2016 09:37:07 +0200] rev 29849
files: change documentation to match its behaviour (issue5276) Documentation gave the usage pattern as '[OPTION]... [PATTERN]...' when the command match given files as relpaths by default.
Wed, 24 Aug 2016 17:43:45 -0700 templater: add template path to __base__ search
Matt Mackall <mpm@selenic.com> [Wed, 24 Aug 2016 17:43:45 -0700] rev 29848
templater: add template path to __base__ search This does a fall-back check for style files or directories that are in Mercurial's template path for user convenience. We intentionally don't use this for the built-in coal style because we don't want the style to mysteriously break if the working directory just happens to have a file named "paper".
Thu, 25 Aug 2016 19:53:14 -0700 bundle2: fail faster when interrupted stable
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 25 Aug 2016 19:53:14 -0700] rev 29847
bundle2: fail faster when interrupted Before this patch, bundle2 application attempted to consume remaining bundle2 part data when the process is interrupted (SIGINT) or when sys.exit is called (translated into a SystemExit exception). This meant that if one of these occurred when applying a say 1 GB changegroup bundle2 part being downloaded over a network, it may take Mercurial *several minutes* to terminate after a SIGINT because the process is waiting on the network to stream megabytes of data. This is not a great user experience and a regression from bundle1. Furthermore, many process supervisors tend to only give processes a finite amount of time to exit after delivering SIGINT: if processes take too long to self-terminate, a SIGKILL is issued and Mercurial has no opportunity to clean up. This would mean orphaned locks and transactions. Not good. This patch changes the bundle2 application behavior to fail faster when an interrupt or system exit is requested. It does so by not catching BaseException (which includes KeyboardInterrupt and SystemExit) and by explicitly checking for these conditions in yet another handler which would also seek to the end of the current bundle2 part on failure. The end result of this patch is that SIGINT is now reacted to significantly faster: the active transaction is rolled back immediately without waiting for incoming bundle2 data to be consumed. This restores the pre-bundle2 behavior and makes Mercurial treat signals with the urgency they deserve.
Tue, 23 Aug 2016 16:40:08 -0400 blackbox: also log alias expansions
Augie Fackler <augie@google.com> [Tue, 23 Aug 2016 16:40:08 -0400] rev 29846
blackbox: also log alias expansions This should be extremely useful for helping users debug without having to see their complete configuration. Shell aliases do not get their expansion logged, because we don't look and see if we're in a repo before we dive into the execution of a shell alias. As a result, the ui object doesn't know where to log.
Thu, 25 Aug 2016 01:06:32 -0400 test-clonebundles: accept another error string here
Augie Fackler <augie@google.com> [Thu, 25 Aug 2016 01:06:32 -0400] rev 29845
test-clonebundles: accept another error string here This is what happens if you run the test in a FreeBSD Jail, rather than "connection refused".
Thu, 25 Aug 2016 01:26:39 -0400 tests: guard test-archive-symlink with unziplinks check
Augie Fackler <augie@google.com> [Thu, 25 Aug 2016 01:26:39 -0400] rev 29844
tests: guard test-archive-symlink with unziplinks check This fixes the test on FreeBSD, where the stock unzip doesn't understand symlinks.
Thu, 25 Aug 2016 01:25:52 -0400 hghave: add a check for unzip(1) that understands symlinks
Augie Fackler <augie@google.com> [Thu, 25 Aug 2016 01:25:52 -0400] rev 29843
hghave: add a check for unzip(1) that understands symlinks unzip(1) from the FreeBSD base system does not understand symlinks, so test-archive-symlinks is busted.
Thu, 25 Aug 2016 01:00:54 -0400 test-https: drop two spurious --traceback flags
Augie Fackler <augie@google.com> [Thu, 25 Aug 2016 01:00:54 -0400] rev 29842
test-https: drop two spurious --traceback flags These make test failures scarier than they are.
Tue, 23 Aug 2016 11:26:08 -0400 extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com> [Tue, 23 Aug 2016 11:26:08 -0400] rev 29841
extensions: change magic "shipped with hg" string I've caught multiple extensions in the wild lying about being 'internal', so it's time to move the goalposts on people. Goalpost moving will continue until third party extensions stop trying to defeat the system.
Thu, 25 Aug 2016 01:00:26 -0400 version: add formatter support
Yuya Nishihara <yuya@tcha.org> [Thu, 25 Aug 2016 01:00:26 -0400] rev 29840
version: add formatter support The license message isn't exported, which I don't think is useful and I couldn't find a way to restructure it for JSON or template outputs.
Tue, 16 Aug 2016 16:09:12 +0900 version: factor out mapping of internal/external labels
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Aug 2016 16:09:12 +0900] rev 29839
version: factor out mapping of internal/external labels Prepares for formatter support, where translation should be disabled conditionally.
Tue, 16 Aug 2016 16:03:09 +0900 version: always build list of extension versions
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Aug 2016 16:03:09 +0900] rev 29838
version: always build list of extension versions This patch just moves "if ui.verbose:" to the inner loop, as preparation for formatter support.
Sun, 13 Mar 2016 19:59:39 +0900 formatter: add fm.nested(field) to either write or build sub items
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Mar 2016 19:59:39 +0900] rev 29837
formatter: add fm.nested(field) to either write or build sub items We sometimes need to build nested items by formatter, but there was no convenient way other than building and putting them manually by fm.data(): exts = [] for n, v in extensions: fm.plain('%s %s\n' % (n, v)) exts.append({'name': n, 'ver': v}) fm.data(extensions=exts) This should work for simple cases, but doing this would make it harder to change the underlying data type for better templating support. So this patch provides fm.nested(field), which returns new nested formatter (or self if items aren't structured and just written to ui.) A nested formatter stores items which will later be rendered by the parent formatter. fn = fm.nested('extensions') for n, v in extensions: fn.startitem() fn.write('name ver', '%s %s\n', n, v) fn.end() Nested items are directly exported to a template for now: {extensions % "{name} {ver}\n"} There's no {extensions} nor {join(extensions, sep)} yet. I have a plan for them by extending fm.nested() API, but I want to revisit it after trying out this API in the real world.
Mon, 15 Aug 2016 13:51:14 +0900 formatter: factor out format*() functions to separate classes
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Aug 2016 13:51:14 +0900] rev 29836
formatter: factor out format*() functions to separate classes New converter classes will be reused by a nested formatter. See the next patch for details. This change is also good in that the default values are defined uniquely by the baseformatter.
Wed, 24 Aug 2016 11:24:07 +0100 crecord: restore SIGWINCH handler before return
Jun Wu <quark@fb.com> [Wed, 24 Aug 2016 11:24:07 +0100] rev 29835
crecord: restore SIGWINCH handler before return Previously, the SIGWINCH handler does not get cleared and if the commit message editor also needs SIGWINCH handling (like vim), the two SIGWINCH handlers (the editor's, ours) will have a race. And we may erase the editor's screen content. This patch restores SIGWINCH handler to address the above issue.
(0) -10000 -3000 -1000 -300 -100 -64 +64 +100 +300 +1000 +3000 +10000 tip