Sat, 12 Jul 2014 02:23:17 -0700 log: make --patch --follow work inside a subdirectory stable
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 02:23:17 -0700] rev 21876
log: make --patch --follow work inside a subdirectory Previously, the 'patch' code for hg log --patch --follow would try to resolve patterns relative to the repository root rather than the current working directory. Fix that by using match.files instead of pats, as done elsewhere nearby.
Sat, 12 Jul 2014 20:07:24 +0900 mergetools: add --nofork option to gvimdiff.diffargs for extdiff
Yuya Nishihara <yuya@tcha.org> [Sat, 12 Jul 2014 20:07:24 +0900] rev 21875
mergetools: add --nofork option to gvimdiff.diffargs for extdiff Without --nofork, temporary files are removed immediately before gvimdiff starts. "-d -g -O" are put just for consistency with gvimdiff.args.
Sat, 05 Jul 2014 16:32:28 +0300 contrib/vagrant: use Vagrant for running tests on virtual machine
anatoly techtonik <techtonik@gmail.com> [Sat, 05 Jul 2014 16:32:28 +0300] rev 21874
contrib/vagrant: use Vagrant for running tests on virtual machine $ cd contrib/vagrant $ vagrant up $ vagrant ssh -c ./run-tests.sh Repository is shared at /hgshared in guest machine.
Mon, 14 Jul 2014 18:53:03 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 14 Jul 2014 18:53:03 -0500] rev 21873
merge with stable
Sat, 12 Jul 2014 20:44:00 -0700 log: allow revset for --follow to be lazily evaluated
Siddharth Agarwal <sid0@fb.com> [Sat, 12 Jul 2014 20:44:00 -0700] rev 21872
log: allow revset for --follow to be lazily evaluated It is unclear to me why evaluation was forced. For a repository with over 700,000 commits, 'hg log -f' drops from 1.2 seconds to 0.2 seconds.
Mon, 14 Jul 2014 15:42:31 -0700 parsers: remove unused getintat function
Siddharth Agarwal <sid0@fb.com> [Mon, 14 Jul 2014 15:42:31 -0700] rev 21871
parsers: remove unused getintat function Warning detected by clang.
Mon, 14 Jul 2014 17:55:31 -0500 revset: maintain ordering when subtracting from a baseset (issue4289)
Matt Mackall <mpm@selenic.com> [Mon, 14 Jul 2014 17:55:31 -0500] rev 21870
revset: maintain ordering when subtracting from a baseset (issue4289)
Tue, 15 Jul 2014 00:59:09 +0900 cmdutil: separate building commit text from 'commitforceeditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Jul 2014 00:59:09 +0900] rev 21869
cmdutil: separate building commit text from 'commitforceeditor' This separation makes it easier to extend/hook building commit text from the specified context. This patch uses 'committext' instead of 'edittext' for names of newly added variable and function, because the former is more purpose specific than the latter, even though 'edittext' in 'buildcommittext' is left as it is to reduce amount of diff.
Mon, 14 Jul 2014 23:33:59 +0900 convert: detect removal of ".gitmodules" at git source revisions correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 14 Jul 2014 23:33:59 +0900] rev 21868
convert: detect removal of ".gitmodules" at git source revisions correctly Before this patch, all operations applied on ".gitmodules" at git source revisions are treated as modification, even if they are actually removal of it. If removal of ".gitmodules" is treated as modification unexpectedly, "hg convert" is aborted by the exception raised in "retrievegitmodules()" for ".gitmodules" at the git source revision removing it, because that revision doesn't have any information of ".gitmodules". This patch detects removal of ".gitmodules" at git source revisions correctly. If ".gitmodules" is removed at the git source revision, this patch records "hex(nullid)" as the contents hash value for ".hgsub" and ".hgsubstate" at the destination revision. This patch makes "getfile()" raise IOError also for ".hgstatus" and ".hgsubstate" if the contents hash value is "hex(nullid)", and this tells removal of ".hgstatus" and ".hgsubstate" at the destination revision to "localrepository.commitctx()" correctly. For files other than ".hgstatus" and ".hgsubstate", checking the contents hash value in "getfile()" may be redundant, because "catfile()" for them also does so. But this patch chooses writing it only once at the beginning of "getfile()", to avoid writing same code twice both for ".hgsub" and ".hgsubstate" separately.
Mon, 14 Jul 2014 12:44:45 -0500 templates: escape NUL bytes in jsonescape (issue4303) stable
Matt Mackall <mpm@selenic.com> [Mon, 14 Jul 2014 12:44:45 -0500] rev 21867
templates: escape NUL bytes in jsonescape (issue4303) It's currently possible for various fields to contain NUL bytes, which are disallowed in JSON.
Sat, 12 Jul 2014 10:52:58 -0700 localrepo: document localrepo.hook()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Jul 2014 10:52:58 -0700] rev 21866
localrepo: document localrepo.hook()
Sun, 06 Jul 2014 02:56:41 +0900 filemerge: use 'util.ellipsis' to trim custom conflict markers correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21865
filemerge: use 'util.ellipsis' to trim custom conflict markers correctly Before this patch, filemerge slices byte sequence directly to trim conflict markers, but this may cause: - splitting at intermediate multi-byte sequence - incorrect calculation of column width (length of byte sequence is different from columns in display in many cases) This patch uses 'util.ellipsis' to trim custom conflict markers correctly, even if multi-byte characters are used in them.
Sun, 06 Jul 2014 02:56:41 +0900 filemerge: use only the first line of the generated conflict marker for safety
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21864
filemerge: use only the first line of the generated conflict marker for safety Before this patch, with careless configuration (missing '|firstline' filtering for '{desc}' keyword, for example), '[ui] mergemarkertemplate' can make conflict markers multiple lines. For ordinary users, advantage of allowing '[ui] mergemarkertemplate' to generate multiple lines for customizing seems to be less than advantage of disallowing it for safety. This patch uses only the first line of the conflict marker generated from '[ui] mergemarkertemplate' configuration for safety.
Sun, 06 Jul 2014 02:56:41 +0900 progress: use 'encoding.colwidth' to get column width of items correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21863
progress: use 'encoding.colwidth' to get column width of items correctly Before this patch, 'progress' extension applies 'len' on byte sequence to get column width of it, but it causes incorrect result, when length of byte sequence and columns in display are different from each other in multi-byte characters. This patch uses 'encoding.colwidth' to get column width of items in output line correctly, even if it contains multi-byte characters.
Sun, 06 Jul 2014 02:56:41 +0900 progress: use 'encoding.trim' to trim items in output line correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21862
progress: use 'encoding.trim' to trim items in output line correctly Before this patch, 'progress' extension trims items in output line by directly slicing byte sequence, but it may split at intermediate multi-byte sequence. This patch uses 'encoding.trim' to trim items in output line correctly, even if it contains multi-byte characters.
Sun, 06 Jul 2014 02:56:41 +0900 encoding: add 'leftside' argument into 'trim' to switch trimming side
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21861
encoding: add 'leftside' argument into 'trim' to switch trimming side
Sun, 06 Jul 2014 02:56:41 +0900 progress: use 'encoding.colwidth' to get column width of output line correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21860
progress: use 'encoding.colwidth' to get column width of output line correctly Before this patch, 'progress' extension applies 'len' on byte sequence to get column width of it, but it causes incorrect result, when length of byte sequence and columns in display are different from each other in multi-byte characters. This patch uses 'encoding.colwidth' to get column width of output line correctly, even if it contains multi-byte characters.
Sun, 06 Jul 2014 02:56:41 +0900 progress: use 'encoding.trim' to trim output line correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21859
progress: use 'encoding.trim' to trim output line correctly Before this patch, 'progress' extension trims output line by directly slicing byte sequence, but it may split at intermediate multi-byte sequence. This patch uses 'encoding.trim' to trim output line correctly, even if it contains multi-byte characters. "rm -f loop.pyc" before changing "loop.py" in "test-progress.t" ensures that re-compilation of "loop.py", even if "loop.py" and "loop.pyc" have same timestamp in seconds.
Sun, 06 Jul 2014 02:56:41 +0900 histedit: use 'util.ellipsis' to trim description of each changesets
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21858
histedit: use 'util.ellipsis' to trim description of each changesets Before this patch, trimming description of each changesets in histedit may split at intermediate multi-byte sequence. This patch uses 'util.ellipsis' to trim description of each changesets instead of directly slicing byte sequence. Even though 'util.ellipsis' adds '...' as ellipsis when specified string is trimmed (= this changes result of trimming), this patch uses it, because: - it can be used without any additional 'import', and - ellipsis seems to be better than just trimming, for usability
Sun, 06 Jul 2014 02:56:41 +0900 util: replace 'ellipsis' implementation by 'encoding.trim'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21857
util: replace 'ellipsis' implementation by 'encoding.trim' Before this patch, 'util.ellipsis' tried to avoid splitting at intermediate multi-byte sequence, but its implementation was incorrect. Internal function '_ellipsis' trims specified unicode sequence not at most maxlength 'columns in display', but at most maxlength number of 'unicode characters'. def _ellipsis(text, maxlength): if len(text) <= maxlength: return text, False else: return "%s..." % (text[:maxlength - 3]), True In many encodings, number of unicode characters can be different from columns in display. This patch replaces 'ellipsis' implementation by 'encoding.trim', which can trim string at most maxlength columns in display correctly, even though specified string contains multi-byte characters. '_ellipsis' is removed in this patch, because it is referred only from 'ellipsis'.
Sun, 06 Jul 2014 02:56:41 +0900 encoding: add 'trim' to trim multi-byte characters at most specified columns
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 06 Jul 2014 02:56:41 +0900] rev 21856
encoding: add 'trim' to trim multi-byte characters at most specified columns Newly added 'trim' is used to trim multi-byte characters at most specified columns correctly: directly slicing byte sequence should be replaced with 'encoding.trim', because the former may split at intermediate multi-byte sequence. Slicing unicode sequence ('uslice') and concatenation with ellipsis ('concat') are defined as function, to make enhancement in subsequent patch easier.
Thu, 03 Jul 2014 10:48:37 +0100 bugzilla: stop trying to cache setup across hook invocation stable
Jim Hague <jim.hague@acm.org> [Thu, 03 Jul 2014 10:48:37 +0100] rev 21855
bugzilla: stop trying to cache setup across hook invocation In the context of standalone Hg receiving a set of incoming changes, it makes sense for the Bugzilla module to cache basic setup to avoid reconnecting to Bugzilla for each change. After processing the changes, Hg will exit and so the connection is short-lived. But this doesn't work too well when used from a long-lived environment such as hgweb or Kallithea where, for example, the connection can time out. So take the simple approach, abandon the cache and do the basic setup on each call. This fixes current problems with Kallithea.
Fri, 11 Jul 2014 18:04:51 -0500 strip: drop -b/--backup option (BC)
Matt Mackall <mpm@selenic.com> [Fri, 11 Jul 2014 18:04:51 -0500] rev 21854
strip: drop -b/--backup option (BC) This option had very limited utility and counterintuitive behavior and collided unfortunately with the much later -B option. Normally we would no-op such a feature so as to avoid annoying existing scripts. However, we have to weigh that against the silent misbehavior that results when users mistakenly intended to use -B: because -b takes no arg, the bookmark gets interpreted as a normal revision, and gets stripped without removing the associated bookmark, while also not backing up the revision in question. A no-op behavior or warning would only remove the latter half of the misadventure. The only users I can find of this feature were using it in error and have since stopped. The few (if any) remaining users of this feature would be better served by --no-backup.
Thu, 07 Nov 2013 17:24:14 -0800 purge: add options for deleting only files or only directories
Ben Kehoe <benk@berkeley.edu> [Thu, 07 Nov 2013 17:24:14 -0800] rev 21853
purge: add options for deleting only files or only directories
Fri, 20 Jun 2014 16:15:38 +0900 shelve: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 16:15:38 +0900] rev 21852
shelve: accept '--edit' like other commands creating new changeset After this patch, users can invoke editor for the commit message by '--edit' option regardless of '--message'.
Fri, 20 Jun 2014 16:15:38 +0900 shelve: refactor option combination check to easily add new ones
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 20 Jun 2014 16:15:38 +0900] rev 21851
shelve: refactor option combination check to easily add new ones Before this patch, the name of a newly added option had to be added into each string that was passed to the "checkopt()" internal function: these are white-space-separated list of un-acceptable option names (= "black list" for the specified "opt"). This new option had to be added into multiple strings because each option could belong to only one action of "create", "cleanup", "delete" or "list". In addition to this redundancy, each string passed to "checkopt()" was already too long to include a new one. This patch refactors option combination check to make it easier to add a new option in a subsequent patch. New "checkopt()" only takes one action ("cleanup", "delete" or "list"), and checks whether all explicitly activated options are allowed for it or not (if specified action is activated in "opts"). The "date" entry is listed in "allowables", but commented out, because: - "date" shouldn't be checked for test checking "date" causes unexpected failure of "test-shelve.t", because "run-test.py" puts "[default] shelve = --date '0 0'" into hgrc. - explicitly listing it can advertise that ignoring it is intentional This patch doesn't choose "white list" for the specified "opt", to avoid treating global options.
Wed, 09 Jul 2014 12:30:12 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 09 Jul 2014 12:30:12 -0500] rev 21850
merge with stable
Tue, 08 Jul 2014 22:57:54 -0400 test-extension: add check for 'hg version -v' listing enabled extensions
Augie Fackler <raf@durin42.com> [Tue, 08 Jul 2014 22:57:54 -0400] rev 21849
test-extension: add check for 'hg version -v' listing enabled extensions
Tue, 10 Jun 2014 13:44:37 +0300 version: show enabled extensions (issue4209)
anatoly techtonik <techtonik@gmail.com> [Tue, 10 Jun 2014 13:44:37 +0300] rev 21848
version: show enabled extensions (issue4209) This code is based by hg-versions extension (GPLv2) by Markus Zapke-Gruendemann <info@keimlink.de> http://mercurial.selenic.com/wiki/VersionsExtension
Tue, 08 Jul 2014 16:24:23 -0700 strip: remove bookmarks after strip succeed (issue4295)
David Soria Parra <davidsp@fb.com> [Tue, 08 Jul 2014 16:24:23 -0700] rev 21847
strip: remove bookmarks after strip succeed (issue4295) In case we have revs to strip, delete the bookmark after the strip succeeds, not beforehand as we might still abort due to dirty working directory, etc.
Thu, 12 Jun 2014 18:02:23 -0700 templater: introduce word function
Ryan McElroy <rmcelroy@fb.com> [Thu, 12 Jun 2014 18:02:23 -0700] rev 21846
templater: introduce word function This function allows returning only the nth "word" from a string. By default a string is split as by Python's split() function default, but an optional third parameter can also override what string the string is split by.
Thu, 03 Jul 2014 23:01:37 -0500 committablectx: move __contains__ into workingctx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 03 Jul 2014 23:01:37 -0500] rev 21845
committablectx: move __contains__ into workingctx This was mistakenly moved from workingctx to committablectx in 9d56a3359011. Since the method is querying the dirstate, the only logical place is for it to reside is in workingctx.
Wed, 02 Jul 2014 15:24:43 -0500 memctx: explicitly set substate to None
Sean Farley <sean.michael.farley@gmail.com> [Wed, 02 Jul 2014 15:24:43 -0500] rev 21844
memctx: explicitly set substate to None In d2743be1bb06, memctx was changed to inherit from committablectx, this in turn added the 'substate' property to memctx. It turns out that the newcommitphase method tested for this property: def newcommitphase(ui, ctx): commitphase = phases.newcommitphase(ui) substate = getattr(ctx, "substate", None) if not substate: return commitphase Currently, memctx isn't ready to handle substates, nor removed files, so we explicitly must set substate=None to get the old behavior back. In the future, we can decide how memctx should play with substate. For now, this fixes third-party extensions and some internal code dealing with subrepos.
Tue, 08 Jul 2014 14:45:55 -0500 bookmarks: avoid deleting primary bookmarks on rebase stable
Matt Mackall <mpm@selenic.com> [Tue, 08 Jul 2014 14:45:55 -0500] rev 21843
bookmarks: avoid deleting primary bookmarks on rebase Prior to this, doing "hg rebase -s @foo -d @" would delete @, which is obviously wrong: a primary bookmark should never be automatically deleted. This change blocks the deletion, but doesn't yet properly clean up the divergence: @ should replace @foo.
Thu, 03 Jul 2014 10:56:03 +0100 bugzilla: correct config documentation error stable
Jim Hague <jim.hague@acm.org> [Thu, 03 Jul 2014 10:56:03 +0100] rev 21842
bugzilla: correct config documentation error The config documentation specifies the wrong access method in the XMLRPC+email configuration.
Sun, 06 Jul 2014 15:43:26 -0400 Merge with crew.
Augie Fackler <raf@durin42.com> [Sun, 06 Jul 2014 15:43:26 -0400] rev 21841
Merge with crew.
Sun, 06 Jul 2014 15:39:01 -0400 Merge with stable.
Augie Fackler <raf@durin42.com> [Sun, 06 Jul 2014 15:39:01 -0400] rev 21840
Merge with stable.
Sat, 05 Jul 2014 07:31:08 -0700 setup: fixed for Pythons which don't have a CFLAGS stable
Alex Gaynor <alex.gaynor@gmail.com> [Sat, 05 Jul 2014 07:31:08 -0700] rev 21839
setup: fixed for Pythons which don't have a CFLAGS Specifically this is observed to happen on the PyPy one gets from homebrew
Thu, 03 Jul 2014 19:05:04 +0200 util.h: declare dirstateTupleType variable instead of defining it
André Sintzoff <andre.sintzoff@gmail.com> [Thu, 03 Jul 2014 19:05:04 +0200] rev 21838
util.h: declare dirstateTupleType variable instead of defining it The definition is already in parsers.c This patch avoids, at least on Mac OS X 10.6.8, build issue since e250b8300e6e
Fri, 13 Jun 2014 15:59:18 -0700 test-context: add test for performing a diff on a memctx
Sean Farley <sean.michael.farley@gmail.com> [Fri, 13 Jun 2014 15:59:18 -0700] rev 21837
test-context: add test for performing a diff on a memctx We now see the first result of all that refactoring of memctx: we can now diff against a memctx.
Fri, 13 Jun 2014 15:56:11 -0700 test-context: add test for memctx status
Sean Farley <sean.michael.farley@gmail.com> [Fri, 13 Jun 2014 15:56:11 -0700] rev 21836
test-context: add test for memctx status
Thu, 29 May 2014 16:12:59 -0500 memctx: add _manifest implementation that computes the filenode
Sean Farley <sean.michael.farley@gmail.com> [Thu, 29 May 2014 16:12:59 -0500] rev 21835
memctx: add _manifest implementation that computes the filenode This is an initial implementation of having a manifest for memctx that computes the hash in the same way that filenodes are computed elsewhere.
Tue, 29 Apr 2014 16:43:59 -0500 basectx: pass raw context objects to patch.diff
Sean Farley <sean.michael.farley@gmail.com> [Tue, 29 Apr 2014 16:43:59 -0500] rev 21834
basectx: pass raw context objects to patch.diff
Wed, 14 Aug 2013 13:10:27 -0500 patch: use ctx.node() instead of bare node variable
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 13:10:27 -0500] rev 21833
patch: use ctx.node() instead of bare node variable Future patches will allow patch.diff to take a basectx so node1 (and node2) could make hexfunc error out. Instead, we'll call the node function on the context object directly.
Wed, 02 Jul 2014 00:01:13 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 02 Jul 2014 00:01:13 -0500] rev 21832
merge with stable
Tue, 01 Jul 2014 23:32:18 -0500 Added signature for changeset 2d8cd3d0e83c stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Jul 2014 23:32:18 -0500] rev 21831
Added signature for changeset 2d8cd3d0e83c
Tue, 01 Jul 2014 23:32:11 -0500 Added tag 3.0.2 for changeset 2d8cd3d0e83c stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Jul 2014 23:32:11 -0500] rev 21830
Added tag 3.0.2 for changeset 2d8cd3d0e83c
Tue, 01 Jul 2014 23:27:32 -0500 merge with i18n stable 3.0.2
Matt Mackall <mpm@selenic.com> [Tue, 01 Jul 2014 23:27:32 -0500] rev 21829
merge with i18n
Mon, 30 Jun 2014 18:52:57 -0300 i18n-pt_BR: synchronized with a4b67bf1f0a5 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 30 Jun 2014 18:52:57 -0300] rev 21828
i18n-pt_BR: synchronized with a4b67bf1f0a5
Mon, 30 Jun 2014 19:09:01 +0900 i18n-ja: synchronized with a4b67bf1f0a5 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 30 Jun 2014 19:09:01 +0900] rev 21827
i18n-ja: synchronized with a4b67bf1f0a5
Sat, 07 Jun 2014 15:23:12 -0400 rebase: fix bug that caused transitive copy records to disappear (issue4192) stable
Augie Fackler <raf@durin42.com> [Sat, 07 Jun 2014 15:23:12 -0400] rev 21826
rebase: fix bug that caused transitive copy records to disappear (issue4192) The defect was that copies were always duplicated against the target revision, rather than the first parent of the revision being rebased. This produced nominally correct results if changes were rebased one at a time (or with --collapse), but was wrong if we rebased a sequence of changesets which contained a sequence of copies.
Sat, 07 Jun 2014 15:14:36 -0400 cmdutil: add copy-filtering support to duplicatecopies stable
Augie Fackler <raf@durin42.com> [Sat, 07 Jun 2014 15:14:36 -0400] rev 21825
cmdutil: add copy-filtering support to duplicatecopies In order to fix issue 4192 we need to be able to skip some copies while doing duplicatecopies.
Tue, 01 Jul 2014 19:54:48 -0500 dispatch: handle empty IOError args
Matt Mackall <mpm@selenic.com> [Tue, 01 Jul 2014 19:54:48 -0500] rev 21824
dispatch: handle empty IOError args We occasionally throw bare IOError objects (especially in convert), don't choke on them.
Sun, 29 Jun 2014 13:52:35 +0200 repoview: do not crash when localtags refers to non existing revisions stable
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 29 Jun 2014 13:52:35 +0200] rev 21823
repoview: do not crash when localtags refers to non existing revisions This fixes a crash that may happen when using mercurial 3.0.x. The _gethiddenblockers function assumed that the output of tags.readlocaltags() was a dict mapping tags to of valid nodes. However this was not necessarily the case. When a repository had obsolete revisions and had local tag pointing to a non existing revision was found, many mercurial commands would crash. This revision fixes the problem by removing any tags from the output of tags.readlocaltags() which point to invalid nodes. We may want to add a warning when this happens (although it might be annoying to get that warning for every command, possibly even more than once per command). A test for this problem has been added to test-obsolete.t. Without this fix the test would output: $ hg tags abort: 00changelog.i@3816541e5485: no node! [255] Instead of: $ hg tags tiptag 2:3816541e5485 tip 2:3816541e5485 visible 0:193e9254ce7e
Thu, 12 Jun 2014 18:07:21 -0700 templater: add symbol to error
Ryan McElroy <rmcelroy@fb.com> [Thu, 12 Jun 2014 18:07:21 -0700] rev 21822
templater: add symbol to error This patch makes it easier to debug writing templater functions by telling the user exactly what was sent to the templater.
Thu, 12 Jun 2014 17:53:37 -0700 templater: introduce startswith function
Ryan McElroy <rmcelroy@fb.com> [Thu, 12 Jun 2014 17:53:37 -0700] rev 21821
templater: introduce startswith function This function returns a string only if it starts with a given string. It is particularly useful when combined with splitlines and/or used with conditionals that fail when empty strings are passed in to take action based on the contents of a line.
Thu, 12 Jun 2014 17:45:41 -0700 templatefilter: add splitlines function
Ryan McElroy <rmcelroy@fb.com> [Thu, 12 Jun 2014 17:45:41 -0700] rev 21820
templatefilter: add splitlines function This is useful for applying changes to each line, and it's especially powerful when used in conjunction with conditionals to modify lines based on content.
Thu, 01 May 2014 19:57:25 +0900 serve: tidy up indent level of repository not found message
Yuya Nishihara <yuya@tcha.org> [Thu, 01 May 2014 19:57:25 +0900] rev 21819
serve: tidy up indent level of repository not found message
Thu, 01 May 2014 19:54:43 +0900 serve: inline checkrepo() that is used only when --stdio is specified
Yuya Nishihara <yuya@tcha.org> [Thu, 01 May 2014 19:54:43 +0900] rev 21818
serve: inline checkrepo() that is used only when --stdio is specified Since e811b93f2cb1, --cmdserver is allowed to start without repository, so checkrepo() function is meaningless.
Sat, 28 Jun 2014 13:02:44 +0900 serve: make sure to print "listening at" message immediately
Yuya Nishihara <yuya@tcha.org> [Sat, 28 Jun 2014 13:02:44 +0900] rev 21817
serve: make sure to print "listening at" message immediately If stdout is piped, status message won't be flushed until client connects to the server and access log is written to stdout. It seems bad idea to queue start-up banner of server process.
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 +30000 tip