Wed, 11 Nov 2015 20:07:15 -0500 commands: inline definition of localrepo.parents() and drop the method (API)
Augie Fackler <augie@google.com> [Wed, 11 Nov 2015 20:07:15 -0500] rev 27167
commands: inline definition of localrepo.parents() and drop the method (API) localrepo.parents() has relatively few users, and most of those were actually implicitly looking at the wctx, which is now made explicit via repo[None].
Wed, 11 Nov 2015 20:02:05 -0500 localrepo: document nodebookmarks
Augie Fackler <augie@google.com> [Wed, 11 Nov 2015 20:02:05 -0500] rev 27166
localrepo: document nodebookmarks
Wed, 11 Nov 2015 19:47:49 -0500 localrepo: remove clone method by hoisting into hg.py
Augie Fackler <augie@google.com> [Wed, 11 Nov 2015 19:47:49 -0500] rev 27165
localrepo: remove clone method by hoisting into hg.py hg.py was the only remaining caller of localrepo.clone(), so it's time to move some more behavior out of localrepo.
Tue, 01 Dec 2015 09:48:38 -0800 filemerge: default regular prompts to 'leave unresolved' (BC)
Siddharth Agarwal <sid0@fb.com> [Tue, 01 Dec 2015 09:48:38 -0800] rev 27164
filemerge: default regular prompts to 'leave unresolved' (BC) It makes far more sense to leave these conflicts unresolved and kick back to the user than to just assume that the local version be chosen. There are almost certainly buggy scripts and applications using Mercurial in the wild that do merges or rebases non-interactively, and then assume that if the operation succeeded there's nothing the user needs to pay attention to.
Mon, 30 Nov 2015 13:43:55 -0800 filemerge: add a 'leave unresolved' option to change/delete prompts
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 13:43:55 -0800] rev 27163
filemerge: add a 'leave unresolved' option to change/delete prompts We're going to make this option the default in an upcoming patch.
Mon, 30 Nov 2015 11:17:18 -0800 filemerge: add a 'leave unresolved' option to regular prompts
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 11:17:18 -0800] rev 27162
filemerge: add a 'leave unresolved' option to regular prompts 'Regular' here means anything that isn't a change/delete prompt. We'll add this option to change/delete prompts in a subsequent patch.
Wed, 25 Nov 2015 14:25:26 -0800 filemerge: add debug output for whether this is a change/delete conflict
Siddharth Agarwal <sid0@fb.com> [Wed, 25 Nov 2015 14:25:26 -0800] rev 27161
filemerge: add debug output for whether this is a change/delete conflict Just like binary and symlink conflicts, change/delete conflicts influence the tool picked.
Sat, 28 Nov 2015 17:06:29 +0800 webcommands: test that fctx is not None in filediff()
Anton Shestakov <av6@dwimlabs.net> [Sat, 28 Nov 2015 17:06:29 +0800] rev 27160
webcommands: test that fctx is not None in filediff() A block of code above this one already says "if fctx is not None", and it's also what this code actually intends to check, so let's be specific as PEP-8 recommends.
Sat, 28 Nov 2015 16:46:31 +0800 webcommands: stop using ersatz if-else ternary operator for rename variable
Anton Shestakov <av6@dwimlabs.net> [Sat, 28 Nov 2015 16:46:31 +0800] rev 27159
webcommands: stop using ersatz if-else ternary operator for rename variable 6ddc86eedc3b didn't remove it, let's do it now. Placing the added lines into the already existing "if fctx is not None" block also makes webcommands.comparison() look a bit more like webcommands.filediff(), which eases possible future refactoring. And fctx is not None only when path in ctx, so logically it's equivalent.
Sat, 28 Nov 2015 16:02:22 +0800 webcommands: get correct parents when comparing a removed file (issue4962)
Anton Shestakov <av6@dwimlabs.net> [Sat, 28 Nov 2015 16:02:22 +0800] rev 27158
webcommands: get correct parents when comparing a removed file (issue4962) When comparing a file that was removed at the current revision, parents used to show grandparents instead, due to how fctx was "shifted" from the current revision to its p1. Let's not do that. The fix is pretty much copied from webcommands.filediff().
Mon, 30 Nov 2015 16:38:29 -0800 repair: use bookmarks.recordchange instead of bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Nov 2015 16:38:29 -0800] rev 27157
repair: use bookmarks.recordchange instead of bookmarks.write Before this patch we were using the deprecated bookmarks.write api. This patch replaces the call to bookmarks.write by a call to bookmarks.recordchange. We move the bookmark code above the code removing the undo file because with bookmarks.recordchange we have to create a transaction that would create an undo file.
Mon, 30 Nov 2015 16:37:42 -0800 commit: add amend mode for commit -i
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Nov 2015 16:37:42 -0800] rev 27156
commit: add amend mode for commit -i When I moved crecord into core, I didn't include the toggleAmend function (to switch from commit to amend mode). I did it because it would have made it more difficult to use record and crecord interchangably. This patch reintroduces the amend mode for commit -i as well as two tests to verify the behavior of the function.
Mon, 30 Nov 2015 16:35:21 -0800 commit: add a way to return more information from the chunkselector
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Nov 2015 16:35:21 -0800] rev 27155
commit: add a way to return more information from the chunkselector Before this patch, the chunkselector for record or crecord was used to return the list of hunks that were selected by the user. The goal of this series is to reintroduce the toggle amend feature for crecord. To do so, we need to be able to return more than just the selected hunks from the chunkselector but also the information: is amend mode toggled. This patch adds a new return value for chunkselectors that will be used to implement the toggle amend feature in crecord.
Sat, 21 Nov 2015 17:40:26 +0200 histedit: edit with custom filename
Mykola Nikishov <mn@mn.com.ua> [Sat, 21 Nov 2015 17:40:26 +0200] rev 27154
histedit: edit with custom filename For instance, Emacs allows to open file with special features enabled (AKA mode) based on the path/name of the file [1]. For such cases, use 'hg-histedit-XXX.txt' as filename pattern. [1] https://www.gnu.org/software/emacs/manual/html_node/emacs/Choosing-Modes.html
Sat, 21 Nov 2015 22:04:09 +0200 ui: allow open editor with custom filename
Mykola Nikishov <mn@mn.com.ua> [Sat, 21 Nov 2015 22:04:09 +0200] rev 27153
ui: allow open editor with custom filename By default, editor will use temp file named after hard-coded pattern 'hg-editor-XXX.txt' which makes it impossible for extensions to use another filename if desired. Now the middle part of the pattern ('editor') can be changed by setting extra['prefix'].
Mon, 30 Nov 2015 20:45:07 +0000 help: make help deprecated mention the extension
timeless <timeless@mozdev.org> [Mon, 30 Nov 2015 20:45:07 +0000] rev 27152
help: make help deprecated mention the extension before this, you got an empty list of extensions, which was unhelpful
Mon, 30 Nov 2015 20:44:22 +0000 help: make listexts less confusing for deprecated exts
timeless <timeless@mozdev.org> [Mon, 30 Nov 2015 20:44:22 +0000] rev 27151
help: make listexts less confusing for deprecated exts Return an empty array instead of a heading and no items
Sun, 29 Nov 2015 06:51:23 +0000 patchbomb: rename email function
timeless <timeless@mozdev.org> [Sun, 29 Nov 2015 06:51:23 +0000] rev 27150
patchbomb: rename email function I see no reason for the function not to be email ...
Sun, 29 Nov 2015 06:51:23 +0000 graphlog: rename glog function
timeless <timeless@mozdev.org> [Sun, 29 Nov 2015 06:51:23 +0000] rev 27149
graphlog: rename glog function I see no reason for the function not to be glog ...
Sat, 28 Nov 2015 04:11:57 -0500 commit: preserve extra when amending with commit --amend
Mike Edgar <adgar@google.com> [Sat, 28 Nov 2015 04:11:57 -0500] rev 27148
commit: preserve extra when amending with commit --amend The new extra propagation needs to be accounted for in cmdutil.amend, when checking for a no-changes fast-path.
Sat, 28 Nov 2015 04:11:38 -0500 graft: copy extra (except branch) when copying changesets
Mike Edgar <adgar@google.com> [Sat, 28 Nov 2015 04:11:38 -0500] rev 27147
graft: copy extra (except branch) when copying changesets
Sat, 28 Nov 2015 04:11:14 -0500 rebase: propagate extra dict from rebase source changeset
Mike Edgar <adgar@google.com> [Sat, 28 Nov 2015 04:11:14 -0500] rev 27146
rebase: propagate extra dict from rebase source changeset This corrects extra propagation for the rebase command and the shelve command.
Wed, 25 Nov 2015 18:26:48 +0100 histedit: add examples
Mathias De Maré <mathias.demare@gmail.com> [Wed, 25 Nov 2015 18:26:48 +0100] rev 27145
histedit: add examples
Wed, 25 Nov 2015 18:10:59 +0100 commands: add examples for 'addremove'
Mathias De Maré <mathias.demare@gmail.com> [Wed, 25 Nov 2015 18:10:59 +0100] rev 27144
commands: add examples for 'addremove'
Wed, 25 Nov 2015 18:10:31 +0100 commands: add example for 'hg add'
Mathias De Maré <mathias.demare@gmail.com> [Wed, 25 Nov 2015 18:10:31 +0100] rev 27143
commands: add example for 'hg add'
Tue, 24 Nov 2015 15:16:25 -0800 extensions: refuse to load extensions if minimum hg version not met
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 24 Nov 2015 15:16:25 -0800] rev 27142
extensions: refuse to load extensions if minimum hg version not met As the author of several 3rd party extensions, I frequently see bug reports from users attempting to run my extension with an old version of Mercurial that I no longer support in my extension. Oftentimes, the extension will import just fine. But as soon as we run extsetup(), reposetup(), or get into the guts of a wrapped function, we encounter an exception and abort. Today, Mercurial will print a message about extensions that don't have a "testedwith" declaring explicit compatibility with the current version. The existing mechanism is a good start. But it isn't as robust as I would like. Specifically, Mercurial assumes compatibility by default. This means extension authors must perform compatibility checking in their extsetup() or we wait and see if we encounter an abort at runtime. And, compatibility checking can involve a lot of code and lots of error checking. It's a lot of effort for extension authors. Oftentimes, extension authors know which versions of Mercurial there extension works on and more importantly where it is broken. This patch introduces a magic "minimumhgversion" attribute in extensions. When found, the extension loading mechanism will compare the declared version against the current Mercurial version. If the extension explicitly states we require a newer Mercurial version, a warning is printed and the extension isn't loaded beyond importing the Python module. This causes a graceful failure while alerting the user of the compatibility issue. I would be receptive to the idea of making the failure more fatal. However, care would need to be taken to not criple every hg command. e.g. the user may use `hg config` to fix the hgrc and if we aborted trying to run that, the user would effectively be locked out of `hg`! A potential future improvement to this functionality would be to catch ImportError for the extension/module and parse the source code for "minimumhgversion = 'XXX'" and do similar checking. This way we could give more information about why the extension failed to load.
Wed, 25 Nov 2015 00:39:05 +0000 run-tests: add --slowtimeout and use it for slow tests
timeless <timeless@mozdev.org> [Wed, 25 Nov 2015 00:39:05 +0000] rev 27141
run-tests: add --slowtimeout and use it for slow tests
Sat, 31 Oct 2015 22:17:05 +0900 serve: unify cmdutil.service() calls of commandserver and hgweb
Yuya Nishihara <yuya@tcha.org> [Sat, 31 Oct 2015 22:17:05 +0900] rev 27140
serve: unify cmdutil.service() calls of commandserver and hgweb
Sat, 31 Oct 2015 22:15:16 +0900 hgweb: extract factory function of httpservice object
Yuya Nishihara <yuya@tcha.org> [Sat, 31 Oct 2015 22:15:16 +0900] rev 27139
hgweb: extract factory function of httpservice object The next patch will merge the cmdutil.service() calls of both commandserver and hgweb. Before doing it, this patch wipes out the code specific to hgweb from commands.serve().
Sat, 31 Oct 2015 21:57:45 +0900 hgweb: move httpservice object from commands module
Yuya Nishihara <yuya@tcha.org> [Sat, 31 Oct 2015 21:57:45 +0900] rev 27138
hgweb: move httpservice object from commands module This avoids the deep import of hgweb.server at the commands module.
Wed, 25 Nov 2015 14:25:33 -0800 merge: move almost all change/delete conflicts to resolve phase (BC) (API)
Siddharth Agarwal <sid0@fb.com> [Wed, 25 Nov 2015 14:25:33 -0800] rev 27137
merge: move almost all change/delete conflicts to resolve phase (BC) (API) We have finally laid all the groundwork to make this happen. The only change/delete conflicts that haven't been moved are .hgsubstate conflicts. Those are trickier to deal with and well outside the scope of this series. We add comprehensive testing not just for the initial selections but also for re-resolves and all possible dirstate transitions caused by merge tools. That testing managed to shake out several bugs in the way we were handling dirstate transitions. The other test changes are because we now treat change/delete conflicts as proper merges, and increment the 'merged' counter rather than the 'updated' counter. I believe this is the right approach here. For third-party extensions, if they're interacting with filemerge code they might have to deal with an absentfilectx rather than a regular filectx. Still to come: - add a 'leave unresolved' option to merges - change the default for non-interactive change/delete conflicts to be 'leave unresolved' - add debug output to go alongside debug outputs for binary and symlink file merges
Wed, 25 Nov 2015 14:26:46 -0800 test-merge-changedelete.t: print out debugmergestate
Siddharth Agarwal <sid0@fb.com> [Wed, 25 Nov 2015 14:26:46 -0800] rev 27136
test-merge-changedelete.t: print out debugmergestate We're going to use this to verify the merge state in upcoming patches.
Tue, 24 Nov 2015 18:26:21 -0800 debugmergestate: also recognize change/delete conflicts in the merge state
Siddharth Agarwal <sid0@fb.com> [Tue, 24 Nov 2015 18:26:21 -0800] rev 27135
debugmergestate: also recognize change/delete conflicts in the merge state We're going to use this for tests in upcoming patches.
Mon, 30 Nov 2015 10:26:37 -0800 debugmergestate: print out null nodes as 'null'
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 10:26:37 -0800] rev 27134
debugmergestate: print out null nodes as 'null' This is so much easier to read than a long string of zeroes, and we're going to have a lot more of these nodes once change/delete conflicts are part of the merge state.
Tue, 24 Nov 2015 15:03:00 -0800 test-merge-force.t: check .orig files separately
Siddharth Agarwal <sid0@fb.com> [Tue, 24 Nov 2015 15:03:00 -0800] rev 27133
test-merge-force.t: check .orig files separately We're going to soon compare the output of all the non-orig files before and after a resolve, and this makes that more convenient. The .orig files are obviously going to differ between the two.
Tue, 24 Nov 2015 15:26:51 -0800 merge.recordupdates: mark 'a' files as added unconditionally
Siddharth Agarwal <sid0@fb.com> [Tue, 24 Nov 2015 15:26:51 -0800] rev 27132
merge.recordupdates: mark 'a' files as added unconditionally See the previous patch for why we do this.
Mon, 30 Nov 2015 10:19:39 -0800 merge: add a new action type representing files to add/mark as modified
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 10:19:39 -0800] rev 27131
merge: add a new action type representing files to add/mark as modified This is somewhat different from the currently existing 'a' action, for the following case: - dirty working copy, with file 'fa' added and 'fm' modified - hg merge --force with a rev that neither has 'fa' nor 'fm' - for the change/delete conflicts we pick 'changed' for both 'fa' and 'fm'. In this case 'branchmerge' is true, but we need to distinguish between 'fa', which should ultimately be marked added, and 'fm', which should be marked modified. Our current strategy is to just not touch the dirstate at all. That works for now, but won't work once we move change/delete conflicts to the resolve phase. In that case we may perform repeated re-resolves, some of which might mark the file removed or remove the file from the dirstate. We'll need to re-add the file to the dirstate, and we need to be able to figure out whether we mark the file added or modified. That is what the new 'am' action lets us do.
Mon, 30 Nov 2015 10:03:21 -0800 mergestate: add a cached property accessor for the local context
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 10:03:21 -0800] rev 27130
mergestate: add a cached property accessor for the local context This is going to be useful in an upcoming patch. We make this a public accessor because this is also going to be useful for custom merge drivers.
Mon, 30 Nov 2015 10:05:09 -0800 mergestate: raise exception if otherctx is accessed but _other isn't set
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 10:05:09 -0800] rev 27129
mergestate: raise exception if otherctx is accessed but _other isn't set We don't want to inadvertently return the workingctx (self._repo[None]).
Mon, 30 Nov 2015 18:47:33 +0000 pager: improve help for --pager=
timeless <timeless@mozdev.org> [Mon, 30 Nov 2015 18:47:33 +0000] rev 27128
pager: improve help for --pager= try to clarify how to enable/disable the pager
Tue, 24 Nov 2015 21:17:26 -0800 setup: remove unused py_modules argument to setup()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 24 Nov 2015 21:17:26 -0800] rev 27127
setup: remove unused py_modules argument to setup() It is never populated and is useless clutter.
Mon, 23 Nov 2015 13:45:56 -0800 test-merge-changedelete.t: add resolve --list output
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Nov 2015 13:45:56 -0800] rev 27126
test-merge-changedelete.t: add resolve --list output We're going to move change/delete conflicts to the resolve phase, and the resolve --list output is one of the things that will be important to test.
Mon, 23 Nov 2015 13:43:14 -0800 test-merge-changedelete.t: add a file with regular merge conflicts
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Nov 2015 13:43:14 -0800] rev 27125
test-merge-changedelete.t: add a file with regular merge conflicts In upcoming patches we're going to move change/delete conflicts to the resolve phase -- it will be important to see how regular conflicts interact with change/delete ones.
Tue, 24 Nov 2015 10:58:35 -0800 filemerge: in ':prompt', use ':fail' tool rather than returning directly
Siddharth Agarwal <sid0@fb.com> [Tue, 24 Nov 2015 10:58:35 -0800] rev 27124
filemerge: in ':prompt', use ':fail' tool rather than returning directly The ':fail' tool now knows to write out the changed side for change/delete conflicts. This has no impact right now but will make things better when we move change/delete conflicts in here.
Tue, 24 Nov 2015 10:57:01 -0800 filemerge: in ':fail' tool, write out other side if local side is deleted
Siddharth Agarwal <sid0@fb.com> [Tue, 24 Nov 2015 10:57:01 -0800] rev 27123
filemerge: in ':fail' tool, write out other side if local side is deleted We do this because we don't want to modify the dirstate for failures, and don't just want to leave the file missing from disk. Plus it's more useful for the user if the changed side is written out -- it is easier to delete a file than to get it back via hg revert.
Mon, 23 Nov 2015 18:03:25 -0800 mergestate: explicitly forget 'dc' conflicts where the deleted side is picked
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Nov 2015 18:03:25 -0800] rev 27122
mergestate: explicitly forget 'dc' conflicts where the deleted side is picked Once we move change/delete conflicts into the resolve phase, a 'dc' file might first be resolved by picking the other side, then later be resolved by picking the local side. For this transition we want to make sure that the file goes back to not being in the dirstate. This has no impact on conflicts during the initial merge.
Mon, 23 Nov 2015 19:06:15 -0800 merge.applyupdates: add all actions returned from merge state
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Nov 2015 19:06:15 -0800] rev 27121
merge.applyupdates: add all actions returned from merge state At the moment this is a no-op (the only actions defined are 'r', 'a' and 'g'), but soon we're going to add other sorts of actions to the dictionary returned from mergestate.actions().
Fri, 27 Nov 2015 20:23:23 +0100 identify: refer to log to be able to view full hashes
Mathias De Maré <mathias.demare@gmail.com> [Fri, 27 Nov 2015 20:23:23 +0100] rev 27120
identify: refer to log to be able to view full hashes
Fri, 27 Nov 2015 20:23:02 +0100 log: add 'hg log' example for full hashes
Mathias De Maré <mathias.demare@gmail.com> [Fri, 27 Nov 2015 20:23:02 +0100] rev 27119
log: add 'hg log' example for full hashes
Fri, 02 Oct 2015 07:48:23 +0200 backout: add examples to clarify basic usage
Mathias De Maré <mathias.demare@gmail.com> [Fri, 02 Oct 2015 07:48:23 +0200] rev 27118
backout: add examples to clarify basic usage
Wed, 25 Nov 2015 06:10:54 +0000 gpg: rename sigcheck function
timeless <timeless@mozdev.org> [Wed, 25 Nov 2015 06:10:54 +0000] rev 27117
gpg: rename sigcheck function I see no reason for the function not to be sigcheck ...
Tue, 24 Nov 2015 18:40:16 -0500 extensions: properly mark progress as part of core
Augie Fackler <augie@google.com> [Tue, 24 Nov 2015 18:40:16 -0500] rev 27116
extensions: properly mark progress as part of core This should have been done as part of or as an immediate follow-up to f5c906878a47, but presumably this feature of extensions.py was forgotten at that time.
Fri, 27 Nov 2015 23:10:48 +0900 test-help: don't use progress extension for the test of argument parsing
Yuya Nishihara <yuya@tcha.org> [Fri, 27 Nov 2015 23:10:48 +0900] rev 27115
test-help: don't use progress extension for the test of argument parsing The next patch will remove the progress extension completely, so we have to pick another extension. The schemes is picked arbitrary. This test was introduced at 69da16b366ad.
Tue, 24 Nov 2015 22:31:56 +0000 hghave.py: fix matchoutput documentation
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 22:31:56 +0000] rev 27114
hghave.py: fix matchoutput documentation
Tue, 24 Nov 2015 14:23:46 -0800 dispatch: use versiontuple()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 24 Nov 2015 14:23:46 -0800] rev 27113
dispatch: use versiontuple() We have a new generic function for this. Use it.
Tue, 24 Nov 2015 14:23:51 -0800 util: add versiontuple() for returning parsed version information
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 24 Nov 2015 14:23:51 -0800] rev 27112
util: add versiontuple() for returning parsed version information We have similar code in dispatch.py. Another consumer is about to be created, so establish a generic function in an accessible location.
Tue, 24 Nov 2015 16:38:54 -0800 extensions: rename _ignore to _builtin, add descriptive comment
Bryan O'Sullivan <bos@serpentine.com> [Tue, 24 Nov 2015 16:38:54 -0800] rev 27111
extensions: rename _ignore to _builtin, add descriptive comment It was previously not at all obvious what this was for. We also change it to a set to avoid iterating over an admittedly small list repeatedly at startup time.
Sun, 22 Nov 2015 14:44:55 -0800 ui: avoid needless casting to a str
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Nov 2015 14:44:55 -0800] rev 27110
ui: avoid needless casting to a str In many cases, we don't need to cast to a str because the object will be cast when it is eventually written. As part of testing this, I added some code to raise exceptions when a non-str was passed in and wasn't able to trigger it. i.e. we're already passing str into this function everywhere, so the casting isn't necessary.
Tue, 24 Nov 2015 11:23:10 -0800 ui: remove labeled argument from popbuffer
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 24 Nov 2015 11:23:10 -0800] rev 27109
ui: remove labeled argument from popbuffer It was moved to pushbuffer and currently does nothing.
Sun, 22 Nov 2015 14:18:42 -0800 color: evaluate labels at write time
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Nov 2015 14:18:42 -0800] rev 27108
color: evaluate labels at write time Previously, we stored 2-tuples of text and label in a list and then evaluated the labels when the buffer was popped. After this patch, we evaluate the labels at write time and do a simple join when the buffer is popped. This patch appears to have no impact on performance, despite creating fewer 2-tuples and having fewer strings hanging around in memory.
Sun, 22 Nov 2015 14:13:25 -0800 cmdutil: pass labeled=True to pushbuffer()
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Nov 2015 14:13:25 -0800] rev 27107
cmdutil: pass labeled=True to pushbuffer() This doesn't yet change behavior because labeling is still performed at popbuffer time. Surprisingly, this is the only in-tree consumer that passes labeled=True.
Sun, 22 Nov 2015 14:10:48 -0800 ui: track label expansion when creating buffers
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Nov 2015 14:10:48 -0800] rev 27106
ui: track label expansion when creating buffers As part of profiling `hg log` performance, I noticed a lot of time is spent in buffered writes to ui instances. This patch starts a series that refactors buffered writes with the eventual intent to improve performance. Currently, labels are expanded when buffers are popped. This means we have to preserve the original text and the label until we render the final output. This is avoidable overhead and adds complexity since we're retaining state. This patch adds functionality to ui.pushbuffer() to declare whether label expansion should be active for the buffer. Labels are still evaluated during buffer pop. This will change in a subsequent patch. Since we'll need to access the "expand labels" flag on future write() operations, we prematurely optimize how the current value is stored to optimize for rapid retrieval.
Tue, 01 Dec 2015 20:18:28 -0600 Added signature for changeset 2d437a0f3355 stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Dec 2015 20:18:28 -0600] rev 27105
Added signature for changeset 2d437a0f3355
Tue, 01 Dec 2015 20:18:27 -0600 Added tag 3.6.2 for changeset 2d437a0f3355 stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Dec 2015 20:18:27 -0600] rev 27104
Added tag 3.6.2 for changeset 2d437a0f3355
Tue, 24 Nov 2015 18:13:25 -0800 docker: match more version of 'hg docker version' (issue4967) stable 3.6.2
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Nov 2015 18:13:25 -0800] rev 27103
docker: match more version of 'hg docker version' (issue4967) My version of docker (1.8.3) have a different formating for 'docker version' that broke the build script. We make the version matching more generic in to work with both version.
Mon, 30 Nov 2015 16:31:28 -0800 localrepo.commit: check all files for resolve state (issue4972) stable
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Nov 2015 16:31:28 -0800] rev 27102
localrepo.commit: check all files for resolve state (issue4972) Previously we were only checking modified files for their resolve state. But a file might be unresolved yet not in the modified state. Handle all such cases properly.
Tue, 24 Nov 2015 21:41:12 +0000 test-contrib-perf: add smoke tests for perf.py
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 21:41:12 +0000] rev 27101
test-contrib-perf: add smoke tests for perf.py
Tue, 24 Nov 2015 21:36:20 +0000 contrib/perf: perfparents handle filtered repos
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 21:36:20 +0000] rev 27100
contrib/perf: perfparents handle filtered repos
Tue, 24 Nov 2015 20:54:14 +0000 contrib/perf: perfparents handle tiny repos
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 20:54:14 +0000] rev 27099
contrib/perf: perfparents handle tiny repos refuse to run if there are not enough commits
Tue, 24 Nov 2015 21:44:16 +0000 contrib/perf: fix perfmergecalculate
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 21:44:16 +0000] rev 27098
contrib/perf: fix perfmergecalculate merge.calculateupdates requires an array of ancestors and followcopies
Tue, 24 Nov 2015 22:01:11 +0000 contrib/perf: fix perffncachewrite
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 22:01:11 +0000] rev 27097
contrib/perf: fix perffncachewrite fncache.write requires a transaction (and thus a lock)
Tue, 24 Nov 2015 20:05:15 +0000 contrib/perf: omit duplicated function
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 20:05:15 +0000] rev 27096
contrib/perf: omit duplicated function
Tue, 24 Nov 2015 20:08:21 +0000 contrib/perf: name functions to match decorators
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 20:08:21 +0000] rev 27095
contrib/perf: name functions to match decorators
Tue, 24 Nov 2015 22:26:43 +0000 hghave.py: remove execute bit
timeless <timeless@mozdev.org> [Tue, 24 Nov 2015 22:26:43 +0000] rev 27094
hghave.py: remove execute bit
Mon, 02 Nov 2015 17:33:18 +0000 format: create new repository as 'generaldelta' by default
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 02 Nov 2015 17:33:18 +0000] rev 27093
format: create new repository as 'generaldelta' by default Since we have pushed back the performance issue related to general delta behind another configuration (Still off by default), we can safely create new repository with general delta support. As client are compatible with it since Mercurial 1.9 (4.5 years ago) I do no expect any significant compatibility issues.
Sun, 22 Nov 2015 21:40:23 -0800 shelve: use colon instead of quotes in 'changes to' description
Siddharth Agarwal <sid0@fb.com> [Sun, 22 Nov 2015 21:40:23 -0800] rev 27092
shelve: use colon instead of quotes in 'changes to' description If detailed conflict markers are enabled and the closing quote gets truncated, editors will often screw syntax highlighting up from that point because they'll see an opening quote and think it's the beginning of a string. In tests, the hashes change because the commit messages of the shelved bundles also change.
Sun, 22 Nov 2015 21:58:28 -0800 merge.applyupdates: create absentfilectxes for change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Sun, 22 Nov 2015 21:58:28 -0800] rev 27091
merge.applyupdates: create absentfilectxes for change/delete conflicts At the moment no change/delete conflicts get to this point -- we're going to make that happen in an upcoming patch.
Sun, 22 Nov 2015 21:59:52 -0800 mergestate: add methods to queue files to remove, add or get
Siddharth Agarwal <sid0@fb.com> [Sun, 22 Nov 2015 21:59:52 -0800] rev 27090
mergestate: add methods to queue files to remove, add or get These are meant for use by custom merge drivers that might want to modify the dirstate. Dirstate internal consistency rules require that all removes happen before any adds -- this means that custom merge drivers shouldn't be modifying the dirstate directly.
Sun, 15 Nov 2015 21:27:22 -0800 resolve: record dirstate actions after performing resolutions
Siddharth Agarwal <sid0@fb.com> [Sun, 15 Nov 2015 21:27:22 -0800] rev 27089
resolve: record dirstate actions after performing resolutions Some resolutions might lead to pending actions we need to perform in the dirstate -- so perform them.
Fri, 20 Nov 2015 16:55:01 -0800 mergestate: add a way to record pending dirstate actions
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:55:01 -0800] rev 27088
mergestate: add a way to record pending dirstate actions We're going to use this in resolve in the next patch.
Sun, 15 Nov 2015 21:55:46 -0800 merge.recordupdates: don't require action keys to be present in dict
Siddharth Agarwal <sid0@fb.com> [Sun, 15 Nov 2015 21:55:46 -0800] rev 27087
merge.recordupdates: don't require action keys to be present in dict We're going to use this function for a much smaller set of actions in the next patch. It's easier to do this than to backfill the dict we pass in.
Mon, 23 Nov 2015 10:13:05 -0500 histedit: constant-ify the constraints list
Augie Fackler <augie@google.com> [Mon, 23 Nov 2015 10:13:05 -0500] rev 27086
histedit: constant-ify the constraints list Used a class as a namespace, and then wired up a classmethod to return all known constraints. I'm mostly happy with this, even though it's kind of weird for hg.
Tue, 17 Nov 2015 15:04:31 -0800 histedit: add an experimental base action
Mateusz Kwapich <mitrandir@fb.com> [Tue, 17 Nov 2015 15:04:31 -0800] rev 27085
histedit: add an experimental base action This is a first (very simple) version of the histedit base action. It works well in common usecases like rebasing the whole stack and spliting the stack. I don't see any obvious edge cases - but probably there is more than one. That's why I want to keep it behind experimental.histeditng config knob for now. I think on knob for all new histedit behaviors is better because we will test all of them together and testers will need to turn it on only once to get all new nice things.
Tue, 17 Nov 2015 17:53:52 -0800 histedit: add abortdirty function
Mateusz Kwapich <mitrandir@fb.com> [Tue, 17 Nov 2015 17:53:52 -0800] rev 27084
histedit: add abortdirty function Small helper function for aborting histedit when left with dirty working directory.
Thu, 12 Nov 2015 16:40:33 -0800 histedit: add forceother constraint
Mateusz Kwapich <mitrandir@fb.com> [Thu, 12 Nov 2015 16:40:33 -0800] rev 27083
histedit: add forceother constraint For the future 'base' action in histedit we need a verification constraint which will not allow using this action with changes that are currently edited.
Tue, 17 Nov 2015 16:37:26 -0800 histedit: make verification configurable
Mateusz Kwapich <mitrandir@fb.com> [Tue, 17 Nov 2015 16:37:26 -0800] rev 27082
histedit: make verification configurable Before we can add a 'base' action to histedit need to change verification so that action can specify which steps of verification should run for it. Also it's everything we need for the exec and stop actions implementation. I thought about baking verification into each histedit action (so each of them is responsible for verifying its constraints) but it felt wrong because: - every action would need to know its context (eg. the list of all other actions) - a lot of duplicated work will be added - each action will iterate through all others - the steps of the verification would need to be extracted and named anyway in order to be reused The verifyrules function grows too big now. I plan to refator it in one of the next series.
Fri, 13 Nov 2015 18:31:58 +0800 paper: show current revision on file log page
Anton Shestakov <av6@dwimlabs.net> [Fri, 13 Nov 2015 18:31:58 +0800] rev 27081
paper: show current revision on file log page Most of the pages in paper (and coal) style show the current revision and its branch, tags and bookmarks. Let's also show all this on file log page.
Fri, 20 Nov 2015 11:26:31 -0800 merge.applyupdates: extend action queues with ones returned from mergestate
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 11:26:31 -0800] rev 27080
merge.applyupdates: extend action queues with ones returned from mergestate These queues will always be empty at the moment -- we're going to fill them up in upcoming patches.
Fri, 20 Nov 2015 16:43:25 -0800 mergestate: add a method to compute actions to perform on dirstate
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:43:25 -0800] rev 27079
mergestate: add a method to compute actions to perform on dirstate We're going to use this to extend the action lists in merge.applyupdates. The somewhat funky return value is to make passing this dict directly into recordactions easier. We're going to exploit that in an upcoming patch.
Fri, 20 Nov 2015 16:37:39 -0800 merge.applyupdates: use counters from mergestate
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:37:39 -0800] rev 27078
merge.applyupdates: use counters from mergestate This eliminates a whole bunch of duplicate code and allows us to update the removed count for change/delete conflicts where the delete action was chosen.
Fri, 20 Nov 2015 16:18:51 -0800 mergestate: add a function to return the number of unresolved files
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:18:51 -0800] rev 27077
mergestate: add a function to return the number of unresolved files Note that unlike the other functions, this is based on the persistent mergestate.
Fri, 20 Nov 2015 16:17:54 -0800 mergestate: add a method to return updated/merged/removed counts
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:17:54 -0800] rev 27076
mergestate: add a method to return updated/merged/removed counts This will not only allow us to remove a bunch of duplicate code in applyupdates in an upcoming patch, it will also allow the resolve interface to be a lot simpler: it doesn't need to return the dirstate action to applyupdates.
Fri, 20 Nov 2015 16:32:47 -0800 mergestate._resolve: don't return the action any more
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:32:47 -0800] rev 27075
mergestate._resolve: don't return the action any more This is a partial backout of an earlier diff -- now that we're storing the results in a dict, we don't actually need this any more.
Fri, 20 Nov 2015 16:08:22 -0800 mergestate._resolve: store return code and action for each file
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 16:08:22 -0800] rev 27074
mergestate._resolve: store return code and action for each file We're going to need this to compute (a) updated/merged/unresolved counts, and (b) actions to perform on the dirstate.
Sat, 21 Nov 2015 15:43:04 -0800 revsetbenchmarks: support benchmarking changectx loading
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 15:43:04 -0800] rev 27073
revsetbenchmarks: support benchmarking changectx loading Many revset consumers construct changectx instances for each returned result. Add support for benchmarking this to our revset benchmark script. In the future, we might want to have some kind of special syntax in the parsed revset files to engage this mode automatically. This would enable us to load changectxs for revsets that do that in the code and would more accurately benchmark what's actually happening. For now, running all revsets with or without changectxs is sufficient.
Sat, 21 Nov 2015 15:39:18 -0800 perf: support obtaining contexts from perfrevset
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 15:39:18 -0800] rev 27072
perf: support obtaining contexts from perfrevset Previously, perfrevset called repo.revs(), which only returns integer revisions. Many revset consumers call repo.set(), which returns changectx instances. Or they obtain a context manually later. Since obtaining changectx instances when evaluating revsets is common, this patch adds support for benchmarking this use case. While we added an if conditional for every benchmark loop, it doesn't appear to matter since revset evaluation dwarfs the cost of a single if.
(0) -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 tip