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.
Sat, 21 Nov 2015 11:07:30 -0800 localrepo: improve docstring for revset methods
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 11:07:30 -0800] rev 27071
localrepo: improve docstring for revset methods revs() doesn't return a list. Also document what its arguments do. Also clarify that set() is just a convenience wrapper around revs().
Sun, 22 Nov 2015 16:23:20 -0800 revlog: improve documentation
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 22 Nov 2015 16:23:20 -0800] rev 27070
revlog: improve documentation There are a lot of functions and variables doing similar things. Document the role and functionality of each to make it easier to grok.
Sat, 21 Nov 2015 22:28:01 -0800 demandimport: don't enable when running under PyPy
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 22:28:01 -0800] rev 27069
demandimport: don't enable when running under PyPy On demand importing doesn't work with PyPy for some reason. Don't honor requests to enable demand importing when running under PyPy.
Sat, 14 Nov 2015 17:14:14 -0800 ui.write: don't clear progress bar when writing to a buffer
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:14:14 -0800] rev 27068
ui.write: don't clear progress bar when writing to a buffer ui.write() has 2 modes: buffered and unbuffered. In buffered mode, we capture output before writing it. This is how changeset printing works, for example. Previously, we were potentially clearing the progress bar for every call to ui.write(). In buffered mode, this clearing was useless because the clearing function would be called again before actually writing the buffered data. This patch stops the useless calling of _progclear() unless we are actually writing data. During changeset printing with the default template, this removes ~6 function calls per changeset, making changeset printing slightly faster. before: 23.76s after: 23.35s delta: -0.41s (98.3% of original)
Sun, 22 Nov 2015 21:20:08 -0500 test-resolve: fix '--tool f' invocation for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Nov 2015 21:20:08 -0500] rev 27067
test-resolve: fix '--tool f' invocation for Windows Windows can't invoke a python script directly, so invoke sh.exe instead. According to sid0, the output changes are due to the fact that 'f' is no longer being passed all of the args that it was, but these changes aren't essential to the test [1]. [1] https://selenic.com/pipermail/mercurial-devel/2015-November/075768.html
Sat, 14 Nov 2015 17:30:10 -0800 util.datestr: use divmod()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:30:10 -0800] rev 27066
util.datestr: use divmod() We were computing the quotient and remainder of a division operation separately. The built-in divmod() function allows us to do this with a single function call. Do that.
Sat, 14 Nov 2015 17:44:01 -0800 cmdutil.changeset_printer: pass context into showpatch()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 14 Nov 2015 17:44:01 -0800] rev 27065
cmdutil.changeset_printer: pass context into showpatch() Before, we passed the node then subsequently performed a lookup on repo.changelog. We already has the context available, so just pass it in. This does result in a small performance win. But I doubt it will show up anywhere because diff[stat] calculation will dwarf the time spent to create a changectx. Still, we should be creating fewer changectx out of principle.
Sat, 21 Nov 2015 19:21:01 -0800 context: avoid extra parents lookups
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 19:21:01 -0800] rev 27064
context: avoid extra parents lookups Resolving parents requires reading from the changelog, which is a few attributes and function calls away. Parents lookup occurs surprisingly often. Micro optimizing the code to avoid redundant lookups of parents appears to make `hg log` on my Firefox repo a little faster: before: 24.91s after: 23.76s delta: -1.15s (95.4% of original)
Sat, 21 Nov 2015 19:04:12 -0800 context: optimize _parents()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 19:04:12 -0800] rev 27063
context: optimize _parents() This patch avoids some extra attribute lookups and list mutations. This micro-optimization seems to result in a minor speedup for `hg log` on my Firefox repo: before: 25.35s after: 24.91s delta: -0.44s (98% of original) Not the biggest gain. But every little bit helps.
Sun, 22 Nov 2015 13:05:21 -0500 test-histedit: $TESTTMP quoting fixes for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Nov 2015 13:05:21 -0500] rev 27062
test-histedit: $TESTTMP quoting fixes for Windows Without this, C:\path\to\test is converted into C:pathtotest. Since $TESTTMP appears in output, seems to work in some places without quotes, and is also used within a larger quote block (see test-rebase-collapse.t, ~line 160), I'm not sure what a check-code rule would look like (or even if it is feasible).
Sat, 21 Nov 2015 23:26:22 -0800 lsprof: support PyPy (issue4573)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 21 Nov 2015 23:26:22 -0800] rev 27061
lsprof: support PyPy (issue4573) PyPy's _lsprof module doesn't export a "profiler_entry" symbol. This patch treats the symbol as optional and falls back to verifying the attribute is present on the first entry in the collected data as part of validation. There is a chance not every entry will contain the requested sort attribute. But, this patch does unbust lsprof on PyPy for the hg commands I've tested, so I assume it is sufficient. It's certainly better than the ImportError we encountered before. As part of the import refactor, I snuck in the addition of absolute_import.
Wed, 11 Nov 2015 19:10:45 -0500 base85: clean up function definition style
Augie Fackler <augie@google.com> [Wed, 11 Nov 2015 19:10:45 -0500] rev 27060
base85: clean up function definition style Cleanup performed with clang-format.
Fri, 20 Nov 2015 14:06:31 -0800 rebase: use bookmarks.recordchange instead of bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 14:06:31 -0800] rev 27059
rebase: use bookmarks.recordchange instead of bookmarks.write Before this patch we were using the old api bookmarks.write instead of bookmarks.recordchange at the end of rebase operations. We move clearstatus within the transaction to make it easier for extensions that wrap transactions operations.
Fri, 20 Nov 2015 11:36:05 -0800 rebase: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 11:36:05 -0800] rev 27058
rebase: indentation change to make the next patch more legible We put the code to be indented in the next patch in a "if True:" block to make it easier to review.
(0) -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip