Tue, 24 Feb 2015 11:37:07 -0500 churn: deprecate -t option in favour of -T
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 24 Feb 2015 11:37:07 -0500] rev 24139
churn: deprecate -t option in favour of -T We use -T consistently elsewhere to refer to the --template option. The old -t option is now renamed to --oldtemplate so that -t still works. This has the benign side effect of introducing and immediately deprecating a new long option. We also test with both -t and -T options.
Tue, 24 Feb 2015 10:55:24 +0100 pull: print "pulling from foo" before accessing the other repo
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 24 Feb 2015 10:55:24 +0100] rev 24138
pull: print "pulling from foo" before accessing the other repo 1. This is consistent with pushing. 2. This allows to see the URL of the other repo in case accessing the repo fails, e.g. wrong ssh path or issues with the https certificate, without using --debug or showconfig paths. Additionally add test for this in the context of ssh with a wrong path.
Wed, 18 Feb 2015 16:45:16 -0800 error.LookupError: rename 'message' property to something else
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Feb 2015 16:45:16 -0800] rev 24137
error.LookupError: rename 'message' property to something else At least some installs of Python 2.6+ complain with: mercurial/error.py:26: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 This patch renames the property away from 'message' so that Python no longer complains.
Thu, 19 Feb 2015 19:32:06 +0800 hgweb: use introrev() for finding parents (issue4506)
Anton Shestakov <engored@ya.ru> [Thu, 19 Feb 2015 19:32:06 +0800] rev 24136
hgweb: use introrev() for finding parents (issue4506) The issue is titled "filtered revision 'XXX' (not in 'served' subset)" and that is the error message you sometimes get when trying to look at a file (/file or /annotate) in hgweb. For example: http://hg.intevation.org/mercurial/crew/file/90cf454edd70/mercurial/cmdutil.py This happens when a parent revision for a file is hidden, thus it is not 'served' and isn't accessible in hgweb by default. When hgweb tries to access such changeset, it produces the error and HTTP status code 404. Another detail is that the parents() function, that is used in multiple places in hgweb, sometimes returned changesets that were obsoleted by the current changeset for the file. For example, when using rebase with evolve and rebasing a divergent changeset that introduces a file on top of current branch. Or grafting a change and making the new grafted changeset obsolete the source (shown in the test case). The result is the same - the obsoleted changeset was mistakingly returned from parents(), even though it's not a parent and the only link to the new changeset is an obsoletion marker (and rebase/graft metadata? not sure it matters). The problem is fixed by using introrev() instead of linkrev() for finding parents. This prevents parents() function from returning unrelated obsolete changesets. The test case prepares a separate repo because (afaict) all other test cases never reuse file names, so there are no files that were changed in multiple changesets. So no previously available files have obsolete changesets in their history.
Sun, 08 Feb 2015 00:56:40 -0500 subrepo: drop unused pattern initialization in hgsubrepo revert
Matt Harbison <matt_harbison@yahoo.com> [Sun, 08 Feb 2015 00:56:40 -0500] rev 24135
subrepo: drop unused pattern initialization in hgsubrepo revert This passed an empty list to filerevert() if '--all' was specified, otherwise the set of modified files. But then filerevert() immediately switched this and reinitialized 'pats' to an empty list if '--all' was *not* specified.
Sat, 07 Feb 2015 21:47:28 -0500 revert: display full subrepo output with --dry-run
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Feb 2015 21:47:28 -0500] rev 24134
revert: display full subrepo output with --dry-run Since the point of --dry-run is to show what will happen, the output with and without it should agree. And since revert wasn't being called on subrepos with --dry-run before, revert in the subrepo had to be defanged in this case.
Sat, 07 Feb 2015 19:40:02 -0500 largefiles: don't warn when reverting a forgotten largefile
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Feb 2015 19:40:02 -0500] rev 24133
largefiles: don't warn when reverting a forgotten largefile Previously, when a largefile is forgotten and then reverted, a warning was issued: $ hg revert -R subrepo subrepo/large.txt file not managed: subrepo/large.txt (glob) This was purely cosmetic as the file itself actually was reverted. The problem was even with all of the matcher patching, the largefile pattern given on the command line wasn't converted to a standin because the standin was neither in ctx nor wctx. This causes the named largefile to be added to the 'names' dict in cmdutil.revert() in the repo walk at line 2550. The warning was printed out when the 'names' dict is iterated, because the file was specified exactly. Since core revert recurses into subrepos and largefiles only overrides the revert method in commands.py, it doesn't work properly when reverting a subrepo. However, it still will recurse into the subrepo and call the installed matcher method, so lfdirstate is reopened for the current repo level to prevent any new problems.
Fri, 06 Feb 2015 20:39:20 -0500 subrepo: annotate addremove with @annotatesubrepoerror
Matt Harbison <matt_harbison@yahoo.com> [Fri, 06 Feb 2015 20:39:20 -0500] rev 24132
subrepo: annotate addremove with @annotatesubrepoerror
Tue, 17 Feb 2015 19:59:26 -0800 histedit: don't recreate state object
Durham Goode <durham@fb.com> [Tue, 17 Feb 2015 19:59:26 -0800] rev 24131
histedit: don't recreate state object Previously, the histedit state object was being recreated during continue/abort. This meant that the locks that were held on the original state object were not available to actions, which meant actions could not release the lock on the repository (like an 'exec' action would need to do). This affected our internal extension that added the 'exec' action.
Sat, 10 Jan 2015 21:37:42 +0800 hgweb: clearly outline <tr> block in paper/changeset.tmpl
Anton Shestakov <engored@ya.ru> [Sat, 10 Jan 2015 21:37:42 +0800] rev 24130
hgweb: clearly outline <tr> block in paper/changeset.tmpl This particular <tr> block should use the style of its neighboring blocks, otherwise it's easy to think that the closing '</tr>' is missing.
Sat, 10 Jan 2015 19:58:28 +0800 hgweb: don't mix tabs and spaces in monoblue templates
Anton Shestakov <engored@ya.ru> [Sat, 10 Jan 2015 19:58:28 +0800] rev 24129
hgweb: don't mix tabs and spaces in monoblue templates
Sat, 10 Jan 2015 19:43:07 +0800 hgweb: remove unneeded escaping in gitweb/map and monoblue/map
Anton Shestakov <engored@ya.ru> [Sat, 10 Jan 2015 19:43:07 +0800] rev 24128
hgweb: remove unneeded escaping in gitweb/map and monoblue/map Elements in map files work slightly different from regular python strings, so escaping single quotes is not necessary. It is also demonstrated by the very same lines: '(current diff)'. I should've made this in 9e1f4c65f5f5, but here we go.
Wed, 11 Feb 2015 13:59:13 +0900 resolve: port to generic templater
Yuya Nishihara <yuya@tcha.org> [Wed, 11 Feb 2015 13:59:13 +0900] rev 24127
resolve: port to generic templater Test output changes because color labels are applied separately.
Wed, 11 Feb 2015 13:55:15 +0900 resolve: extract -l/--list operation from big loop
Yuya Nishihara <yuya@tcha.org> [Wed, 11 Feb 2015 13:55:15 +0900] rev 24126
resolve: extract -l/--list operation from big loop This prepares for porting to generic templater. repo.wlock() and ms.commit() should be unnecessary for "resolve -l".
Wed, 11 Feb 2015 13:47:43 +0900 resolve: silence warning of unknown pats for -l/--list (BC)
Yuya Nishihara <yuya@tcha.org> [Wed, 11 Feb 2015 13:47:43 +0900] rev 24125
resolve: silence warning of unknown pats for -l/--list (BC) It was introduced at 232de244ab6f to warn that "hg resolve" did nothing meaningful. The warning seems not good for "hg resolve -l" because it is rather like "hg status" or "hg files".
Mon, 09 Feb 2015 11:02:45 -0800 extensions: allow extending command synopsis and docstring
Ryan McElroy <rm@fb.com> [Mon, 09 Feb 2015 11:02:45 -0800] rev 24124
extensions: allow extending command synopsis and docstring Mercurial uses a synopsis string and the docstring of a command for the command's help output. Today there is no way for an extension that adds functionality to a command to extend either of these help strings. This patch enables appending to both the doctring and the synopsis, and adds a test for this functionality. Example usage is shown in the test and is also described in the docstring of extensions.wrapcommand().
Wed, 21 Jan 2015 17:11:37 -0500 revlog: _addrevision creates full-replace deltas based on censored revisions
Mike Edgar <adgar@google.com> [Wed, 21 Jan 2015 17:11:37 -0500] rev 24123
revlog: _addrevision creates full-replace deltas based on censored revisions A delta against a censored revision is either received through exchange and written blindly to a revlog, or it is created by the revlog itself. This change ensures the latter process creates deltas which fully replace all data in a censored base using a single patch operation. Recipients of a delta against a censored base will verify that the delta is in this full-replace format. Other recipients will use the delta as normal. For background and broader design of the censorship feature, see: http://mercurial.selenic.com/wiki/CensorPlan
Fri, 06 Feb 2015 01:38:16 +0000 revlog: special case expanding full-replacement deltas received by exchange
Mike Edgar <adgar@google.com> [Fri, 06 Feb 2015 01:38:16 +0000] rev 24122
revlog: special case expanding full-replacement deltas received by exchange When a delta received through exchange is added to a revlog, it will very often be expanded to a full text by applying the delta to its base. If that delta is of a particular form, we can avoid decoding the base revision. This avoids an exception if the base revision is censored. For background and broader design of the censorship feature, see: http://mercurial.selenic.com/wiki/CensorPlan
Tue, 10 Feb 2015 16:17:15 -0800 test-merge-tools: fix flaky test by avoiding debugsetparents
Martin von Zweigbergk <martinvonz@google.com> [Tue, 10 Feb 2015 16:17:15 -0800] rev 24121
test-merge-tools: fix flaky test by avoiding debugsetparents debugsetparents is a debug command and does not provide the same guarantees as non-debug commands do. In particular, when the user sets a different parent, any clean files will remain clean in the dirstate even though the new parent might have a different version of the file (so it should appear modified compared to the new parent). Let's instead achieve the same effect by updating to the new parent and reverting the contents back to what they were. This fix can be tested by passing '--config debug.dirstate.delaywrite=2' to the 'hg update' command in the beforemerge().
Fri, 06 Feb 2015 00:55:29 +0000 revlog: in addgroup, reject ill-formed deltas based on censored nodes
Mike Edgar <adgar@google.com> [Fri, 06 Feb 2015 00:55:29 +0000] rev 24120
revlog: in addgroup, reject ill-formed deltas based on censored nodes To ensure interoperability when clones disagree about which file nodes are censored, a restriction is made on deltas based on censored nodes. Any such delta must replace the full text of the base in a single patch. If the recipient of a delta considers the base to be censored and the delta is not in the expected form, the recipient must reject it, as it can't know if the source has also censored the base. For background and broader design of the censorship feature, see: http://mercurial.selenic.com/wiki/CensorPlan
Wed, 21 Jan 2015 16:35:09 -0500 mdiff: add helper for making deltas which replace the full text of a revision
Mike Edgar <adgar@google.com> [Wed, 21 Jan 2015 16:35:09 -0500] rev 24119
mdiff: add helper for making deltas which replace the full text of a revision This helper will be used initially for censor-aware delta generation. Deltas which replace the full contents of the base revision are guaranteed to apply correctly regardless of whether the delta recipient has censored the base. For background and broader design of the censorship feature, see: http://mercurial.selenic.com/wiki/CensorPlan
Fri, 23 Jan 2015 17:01:39 -0500 revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com> [Fri, 23 Jan 2015 17:01:39 -0500] rev 24118
revlog: add "iscensored()" to revlog public API The iscensored method will be used by the exchange layer to reject nonconforming deltas involving censored revisions (and to produce conforming deltas). For background and broader design of the censorship feature, see: http://mercurial.selenic.com/wiki/CensorPlan
Fri, 06 Feb 2015 01:44:24 +0000 filelog: allow censored files to contain padding data
Mike Edgar <adgar@google.com> [Fri, 06 Feb 2015 01:44:24 +0000] rev 24117
filelog: allow censored files to contain padding data To ensure delta compatibility, when a revision is censored, it is padded to match the original data in size. The previous check does not allow for padding because it was added before padding was found to be a requirement. For more background and design of the censorship feature, see: mercurial.selenic.com/wiki/CensorPlan
Thu, 08 Jan 2015 23:43:15 +0900 revset: drop factory that promotes spanset to fullreposet
Yuya Nishihara <yuya@tcha.org> [Thu, 08 Jan 2015 23:43:15 +0900] rev 24116
revset: drop factory that promotes spanset to fullreposet All callers use fullreposet where appropriate. Backed out changeset fbae659543cf
Thu, 08 Jan 2015 23:46:54 +0900 revset: specify fullreposet without using spanset factory
Yuya Nishihara <yuya@tcha.org> [Thu, 08 Jan 2015 23:46:54 +0900] rev 24115
revset: specify fullreposet without using spanset factory The factory function will be removed because the subsequent patches will make fullreposet(repo) not fully compatible with spanset(repo).
Mon, 02 Feb 2015 22:21:07 +0900 revset: make match function initiate query from full set by default
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Feb 2015 22:21:07 +0900] rev 24114
revset: make match function initiate query from full set by default This change is intended to avoid exposing the implementation detail to callers. I'm going to extend fullreposet to support "null" revision, so these mfunc calls will have to use fullreposet() instead of spanset().
Wed, 01 Oct 2014 20:26:33 -0400 localrepo: don't reintroduce pruned tag entries when tagging
Matt Harbison <matt_harbison@yahoo.com> [Wed, 01 Oct 2014 20:26:33 -0400] rev 24113
localrepo: don't reintroduce pruned tag entries when tagging If a commit and a followup tag commit are pruned, there are no references to it in any non obsolete version of .hgtags. Without this change however, the next time a tag is added to another branch, the obsolete references are appended in .hgtags before the new entries for the current tag command. The annotation to unfilter localrepo._tag() has been around since b3af182a1944. The log message for it mentions computing the tag cache though, so I'm not sure if this was misplaced? It looks like branchmap was aware of filtering then, and now tracks a cache per view.
Thu, 05 Feb 2015 13:10:07 -0800 histedit: switch state to store node instead of ctx
Mateusz Kwapich <mitrandir@fb.com> [Thu, 05 Feb 2015 13:10:07 -0800] rev 24112
histedit: switch state to store node instead of ctx Currently, if the node no longer exists, the state object fails to load and pukes with an exception. Changing the state object to only store the node allows callers to handle these cases. For instance, in bootstrapcontinue we can now detect that the node doesn't exist and exit gracefully. The alternative is to have the state object store something like None when the node doesn't exist, but then outside callers won't be able to access the old node for recovery (unless we store both the node and the ctx, but why bother). More importantly it allows us to detect this case when doing hg histedit --abort. Currently this situation results in both --continue and --abort being broken and the user has to rm .hg/histedit-state to unwedge their repo. (description by Durham Goode)
Fri, 30 Jan 2015 16:47:35 -0800 histedit: don't allow to strip nodes which are necessary to continue histedit
Mateusz Kwapich <mitrandir@fb.com> [Fri, 30 Jan 2015 16:47:35 -0800] rev 24111
histedit: don't allow to strip nodes which are necessary to continue histedit During histedit we don't want user to do any operation resulting in stripping nodes needed to continue history editing. This patch wraps the strip function to detect such situations.
Tue, 17 Feb 2015 23:20:55 -0800 subrepo: add tests for change/remove conflicts stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 17 Feb 2015 23:20:55 -0800] rev 24110
subrepo: add tests for change/remove conflicts There are currently no tests for change/remove conflicts of subrepos, and it's pretty broken. Add some tests demonstrating some of the breakages and fix the most obvious one (a KeyError when trying to look up a subrepo in the wrong context).
Thu, 12 Feb 2015 10:38:33 +0800 hgweb: recreate old DOM structure for css in monoblue style stable
Anton Shestakov <engored@ya.ru> [Thu, 12 Feb 2015 10:38:33 +0800] rev 24109
hgweb: recreate old DOM structure for css in monoblue style There's a "p.changeset-age span" css block in style-monoblue.css with quite a bit of rules, including position. They were all unused, since there weren't matching span element inside the p.changeset-age. The span was removed in b24e5a708fad (as it seemed meaningless at the time?) and since then relative changeset age text looked weird and broken. "age" class is used for calculating relative changeset age in javascript: all content of such element is replaced with human-friendly text (e.g. "yesterday"). So the new span gets the age class.
Wed, 11 Feb 2015 19:57:07 +0900 shellquote: fix missing quotes for empty string stable
Yuya Nishihara <yuya@tcha.org> [Wed, 11 Feb 2015 19:57:07 +0900] rev 24108
shellquote: fix missing quotes for empty string "hg kdiff3 -rREV" did not work because 1642eb429536 and 5edb387158a1 failed to handle empty argument.
(0) -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip