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.
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.
Mon, 16 Nov 2015 16:56:00 -0500 test-run-tests: conditionalize the $TESTDIR check for Windows separator
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 16:56:00 -0500] rev 27057
test-run-tests: conditionalize the $TESTDIR check for Windows separator The variable uniformly uses '\' separators, so the straight equality check with '/' separating the last component fails. It also doesn't like having the quote appear in the middle of the string when testing.
Mon, 09 Nov 2015 17:15:36 -0500 test-context: conditionalize the workingfilectx date printing for Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 09 Nov 2015 17:15:36 -0500] rev 27056
test-context: conditionalize the workingfilectx date printing for Windows Starting with 13272104bb07, the output changed on Windows: --- e:/Projects/hg/tests/test-context.py.out +++ e:/Projects/hg/tests/test-context.py.err @@ -1,4 +1,4 @@ -workingfilectx.date = (1000, 0) +workingfilectx.date = (1000L, 0) ASCII : Gr?ezi! Latin-1 : Grⁿezi! UTF-8 : Gr├╝ezi! Since int and long are both 32 bit on Windows, this seems harmless in practice other than the previous test failure.
Mon, 16 Nov 2015 14:37:03 -0500 test-mq-qrefresh: drop single quoting of HGEDITOR value for Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 14:37:03 -0500] rev 27055
test-mq-qrefresh: drop single quoting of HGEDITOR value for Windows This was failing with: sh: $TESTTMP/checkvisibility.sh: No such file or directory
Mon, 16 Nov 2015 14:12:27 -0500 test-import: don't use printf to append an extension to $HGRCPATH
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 14:12:27 -0500] rev 27054
test-import: don't use printf to append an extension to $HGRCPATH The extension was failing to load on Windows because $TESTTMP contains a path component 'test', prefixed by a path separator '\'. That combination ends up converted to "...<tab>est...".
Mon, 16 Nov 2015 13:44:27 -0500 test-ssh: stop quoting dummyssh invocation for Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 16 Nov 2015 13:44:27 -0500] rev 27053
test-ssh: stop quoting dummyssh invocation for Windows The other invocations aren't quoted, and Windows doesn't like the single quotes: diff --git a/tests/test-ssh.t b/tests/test-ssh.t --- a/tests/test-ssh.t +++ b/tests/test-ssh.t @@ -520,20 +520,8 @@ remote hook failure is attributed to rem $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc $ hg -q --config ui.ssh="python '$TESTDIR/dummyssh'" clone ssh://user@dummy/remote hookout + abort: no suitable response from remote hg! + [255] $ cd hookout + $TESTTMP.sh: line 264: cd: hookout: No such file or directory $ touch hookfailure - $ hg -q commit -A -m 'remote hook failure' ....
Fri, 20 Nov 2015 13:46:36 -0800 strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 13:46:36 -0800] rev 27052
strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write Before this patch, strip was using repo._bookmarks.write. This patch replaces this code with the recommended way of saving bookmarks changes: repo._bookmarks.recordchange.
Fri, 20 Nov 2015 13:23:47 -0800 histedit: make use of bookmarks.recordchange instead of bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 13:23:47 -0800] rev 27051
histedit: make use of bookmarks.recordchange instead of bookmarks.write Before this patch we were using the old api bookmarks.write, this patches replaces its usage by bookmarks.recordchange, the new api to record bookmark changes.
Wed, 18 Nov 2015 17:40:13 -0800 largefiles: fall back to the original for change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 17:40:13 -0800] rev 27050
largefiles: fall back to the original for change/delete conflicts The largefiles merge code (currently) does not handle change/delete conflicts. So fall back to regular filemerge in that case. Making this code handle change/delete conflicts is left as an exercise for the future.
Sat, 14 Nov 2015 00:07:11 -0800 mergestate.add: store absentfilectxes as nullhex
Siddharth Agarwal <sid0@fb.com> [Sat, 14 Nov 2015 00:07:11 -0800] rev 27049
mergestate.add: store absentfilectxes as nullhex This is the most natural way to represent these files. We also need to make sure we don't try to store these files in the merge store.
Fri, 20 Nov 2015 01:14:15 -0800 mergestate._resolve: handle change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Nov 2015 01:14:15 -0800] rev 27048
mergestate._resolve: handle change/delete conflicts We will represent a deleted file as 'nullhex' in the in-memory and on-disk merge states. We need to be able to create absentfilectxes in that case, and delete the file from disk rather than try to write it out.
Sat, 14 Nov 2015 00:00:46 -0800 filemerge: don't try to copy files known to be absent
Siddharth Agarwal <sid0@fb.com> [Sat, 14 Nov 2015 00:00:46 -0800] rev 27047
filemerge: don't try to copy files known to be absent We set 'back' to None in this case, so we need to handle that as well.
Sat, 31 Oct 2015 22:07:40 +0900 hgweb: use absolute_import
Yuya Nishihara <yuya@tcha.org> [Sat, 31 Oct 2015 22:07:40 +0900] rev 27046
hgweb: use absolute_import
Sun, 01 Nov 2015 15:09:35 +0900 hgweb: import wsgicgi at top level
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 15:09:35 +0900] rev 27045
hgweb: import wsgicgi at top level There should be no practical reason to delay the import of wsgicgi.
Sun, 01 Nov 2015 15:07:08 +0900 hgweb: import BaseHTTPServer as module at top level
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 15:07:08 +0900] rev 27044
hgweb: import BaseHTTPServer as module at top level This will avoid future warning spotted by the import checker.
Sun, 01 Nov 2015 14:23:23 +0900 hgweb: do not import hgweb_mod.hgweb and .makebreadcrumb as symbol
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 14:23:23 +0900] rev 27043
hgweb: do not import hgweb_mod.hgweb and .makebreadcrumb as symbol It will be enforced by the import checker.
Fri, 13 Nov 2015 23:57:43 -0800 filemerge: don't try using external tools on change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:57:43 -0800] rev 27042
filemerge: don't try using external tools on change/delete conflicts This is mostly for completeness' sake -- the current code shouldn't get to this point.
Fri, 13 Nov 2015 23:56:00 -0800 filemerge: don't attempt to premerge change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:56:00 -0800] rev 27041
filemerge: don't attempt to premerge change/delete conflicts This is mostly for completeness' sake -- at the moment we don't support any tools for change/delete conflicts that would do a premerge.
Fri, 13 Nov 2015 23:58:05 -0800 filemerge._mergecheck: add check for change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:58:05 -0800] rev 27040
filemerge._mergecheck: add check for change/delete conflicts Merge tools that perform an actual 3-way merge can't handle change/delete conflicts. This adds a check for that.
Sun, 15 Nov 2015 21:40:15 -0800 filemerge._picktool: only pick from nomerge tools for change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Sun, 15 Nov 2015 21:40:15 -0800] rev 27039
filemerge._picktool: only pick from nomerge tools for change/delete conflicts For --tool or HGMERGE, we could have either: (a) proceeded with the particular tool, then failed the merge. (b) chosen to prompt regardless. We're explicitly choosing (b) here, because it's effectively what we've been doing so far and helps maintain an easier-to-use interface. However, in future patches we're going to change the default selection from 'pick changed version' to 'leave unresolved'. That fixes most of the brokenness involved with choice (b).
Fri, 13 Nov 2015 23:52:26 -0800 filemerge: add support for change/delete conflicts to the ':prompt' tool
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:52:26 -0800] rev 27038
filemerge: add support for change/delete conflicts to the ':prompt' tool We haven't added the 'leave unresolved' option yet -- that will come in a future patch.
Wed, 18 Nov 2015 15:41:50 -0800 filemerge: add support for change/delete conflicts to the ':other' merge tool
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:41:50 -0800] rev 27037
filemerge: add support for change/delete conflicts to the ':other' merge tool This, along with the previous patch to the :local merge tool, covers the full matrix of change/delete conflicts.
Wed, 18 Nov 2015 15:40:28 -0800 filemerge: add support for change/delete conflicts to the ':local' merge tool
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:40:28 -0800] rev 27036
filemerge: add support for change/delete conflicts to the ':local' merge tool This covers two of the four cases of change/delete conflicts -- in an upcoming patch we'll make :other cover the other two.
Thu, 19 Nov 2015 10:50:02 -0800 merge.mergestate: compute dirstate action
Siddharth Agarwal <sid0@fb.com> [Thu, 19 Nov 2015 10:50:02 -0800] rev 27035
merge.mergestate: compute dirstate action In upcoming patches we're going to queue these actions up to be applied to the dirstate at the end.
Wed, 18 Nov 2015 14:22:52 -0800 filemerge: return whether the file was deleted
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 14:22:52 -0800] rev 27034
filemerge: return whether the file was deleted This is required for change/delete conflict resolution -- see previous patches for more details.
Wed, 18 Nov 2015 13:55:31 -0800 filemerge: return whether the file is deleted from all other merge tools
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 13:55:31 -0800] rev 27033
filemerge: return whether the file is deleted from all other merge tools This is required for change/delete conflicts -- see the previous patch for more information.
Wed, 18 Nov 2015 13:52:28 -0800 filemerge: return whether the file is deleted for nomerge internal tools
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 13:52:28 -0800] rev 27032
filemerge: return whether the file is deleted for nomerge internal tools We're going to support the filemerge code resolving change/delete conflicts in upcoming patches. Some of these resolutions require that the dirstate be modified. Modifying the dirstate directly from in here would be (a) a pretty bad layering violation and (b) wrong because all dirstate removals should happen before adds. So in this and upcoming patches we're instead going to pass whether the file is deleted up to merge.mergestate, then in there figure out what dirstate action needs to be taken.
Wed, 18 Nov 2015 15:46:45 -0800 mergestate: allow storing and retrieving change/delete conflicts
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:46:45 -0800] rev 27031
mergestate: allow storing and retrieving change/delete conflicts We introduce a new record type, 'C', to indicate change/delete conflicts. This is a separate record type because older versions of Mercurial will not be able to handle these conflicts. We aren't actually storing any change/delete conflicts yet -- that will come in future patches.
Thu, 19 Nov 2015 12:50:10 +0530 strip: changing bookmark argument to be a list
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> [Thu, 19 Nov 2015 12:50:10 +0530] rev 27030
strip: changing bookmark argument to be a list Currently strip works with a single bookmark, the changes in this patch modifies the strip extension to accept a list of bookmarks
Sun, 15 Nov 2015 21:03:44 +0530 strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> [Sun, 15 Nov 2015 21:03:44 +0530] rev 27029
strip: strip a list of bookmarks Currently strip works with a single bookmark, the changes in this patch modifies the strip module to work with a list of bookmarks Building on this we can take a list of bookmarks as input and remove all of them in a single go
Wed, 18 Nov 2015 23:23:03 -0800 revset: speed up '_matchfiles'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 18 Nov 2015 23:23:03 -0800] rev 27028
revset: speed up '_matchfiles' File matching is done by applying the matcher to all elements in the 'file' field of all changesets in the repository. This requires to read/parse all changesets in the repository and do a lot of matching. However about 1/3 of the time of the function is used to create 'changectx' object and retrieve their 'file' field. This is far too much overhead so we are skipping the changectx layer and directly access the data from the changelog. This provide use significant speed up: repository: mozilla central 252524 revisions command: hg perfrevset '_matchfiles("p:browser")' Before: 15.899687s After: 10.011705s Slowdown is even more significant if you have a lot of namespace that slowdown lookup. The time is now spent with this approximate repartition: Matcher: 20% regexp matching: 10% changelog.read: 80% reading revision: 60% checking hash: 15% decompression: 15% reading chunk: 30% changelog parsing: 20% decoding to local: 10% The next easy win is probably to have more of the changelog stack implemented using the CPython api.
Wed, 18 Nov 2015 15:46:45 -0800 mergestate: handle additional record types specially
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:46:45 -0800] rev 27027
mergestate: handle additional record types specially This works around a bug in older Mercurial versions' handling of the v2 merge state. We also add a bunch of tests that make sure that (1) we correctly abort when the merge state has an unsupported record type (2) aborting the merge, rebase or histedit continues to work and clears out the merge state.
Wed, 18 Nov 2015 23:42:32 -0800 test-resolve.t: remove completely unnecessary line
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 23:42:32 -0800] rev 27026
test-resolve.t: remove completely unnecessary line I have no idea what I was thinking when I wrote this.
Wed, 18 Nov 2015 23:43:18 -0800 resolve: fix incorrect merge
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 23:43:18 -0800] rev 27025
resolve: fix incorrect merge The merge from stable into default was semantically incomplete -- a couple of changes in preceding code had to be rewritten here. This code only triggers for change/delete conflicts, so we can't test it yet. We will soon be able to do it, though.
Wed, 18 Nov 2015 20:55:32 +0100 fileset: add missing() predicate (issue4925)
liscju <piotr.listkiewicz@gmail.com> [Wed, 18 Nov 2015 20:55:32 +0100] rev 27024
fileset: add missing() predicate (issue4925) Help of status cmd defines status file of 'missing', what is called in fileset 'deleted'. To stay consistent this patch introduces missing() predicate which in fact is alias to 'deleted'.
Tue, 10 Nov 2015 17:22:40 +0800 webutil: make _siblings into an object with __iter__ and __len__
Anton Shestakov <av6@dwimlabs.net> [Tue, 10 Nov 2015 17:22:40 +0800] rev 27023
webutil: make _siblings into an object with __iter__ and __len__ _siblings is a helper that is used for displaying changeset parents and children in hgweb. Before, when it was a simple generator, it couldn't tell its length without being consumed, and that required a special case when preparing data for changeset template (see 9e1f4c65f5f5). Let's make it into a class (similar to templatekw._hybrid) that allows len(...) without side-effects.
Wed, 18 Nov 2015 16:39:30 -0800 mergestate: move binary format documentation into _readrecordsv2
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 16:39:30 -0800] rev 27022
mergestate: move binary format documentation into _readrecordsv2 This is too low-level to be the top-level documentation for mergestate. We're restricting the top-level documentation to only be about what consumers of the mergestate and anyone extending it need to care about.
Wed, 18 Nov 2015 15:11:23 -0800 unshelve: add support for custom merge tools
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:11:23 -0800] rev 27021
unshelve: add support for custom merge tools For parity with merge --tool, rebase --tool etc. rebase.rebase overwrites the tool in repo.ui, so we need to explicitly pass it down there too.
Wed, 18 Nov 2015 15:18:16 -0800 unshelve: shed spurious space
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:18:16 -0800] rev 27020
unshelve: shed spurious space
Wed, 18 Nov 2015 15:04:03 -0800 unshelve: add -k as short form of --keep
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Nov 2015 15:04:03 -0800] rev 27019
unshelve: add -k as short form of --keep For parity with strip -k, rebase -k, etc.
Sun, 01 Nov 2015 13:55:21 +0900 import-checker: allow symbol imports from hgweb.common and .request
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 13:55:21 +0900] rev 27018
import-checker: allow symbol imports from hgweb.common and .request This seems the convention of hgweb.
Thu, 19 Nov 2015 15:02:27 -0600 perf: un-bitrot perfstatus
Matt Mackall <mpm@selenic.com> [Thu, 19 Nov 2015 15:02:27 -0600] rev 27017
perf: un-bitrot perfstatus
Thu, 19 Nov 2015 13:15:17 -0600 util: drop statmtimesec
Matt Mackall <mpm@selenic.com> [Thu, 19 Nov 2015 13:15:17 -0600] rev 27016
util: drop statmtimesec We've globablly forced stat to return integer times which agrees with our extension code, so this is no longer needed. This speeds up status on mozilla-central substantially: $ hg perfstatus ! wall 0.190179 comb 0.180000 user 0.120000 sys 0.060000 (best of 53) $ hg perfstatus ! wall 0.275729 comb 0.270000 user 0.210000 sys 0.060000 (best of 36)
Thu, 19 Nov 2015 13:21:24 -0600 util: disable floating point stat times (issue4836)
Matt Mackall <mpm@selenic.com> [Thu, 19 Nov 2015 13:21:24 -0600] rev 27015
util: disable floating point stat times (issue4836) Alternate fix for this issue which avoids putting extra function calls and exception handling in the fast path. For almost all purposes, integer timestamps are preferable to Mercurial. It stores integer timestamps in the dirstate and would thus like to avoid doing any float/int comparisons or conversions. We will continue to have to deal with 1-second granularity on filesystems for quite some time, so this won't significantly hinder our capabilities. This has some impact on our file cache validation code in that it lowers timestamp resolution. But as we still have to deal with low-resolution filesystems, we're not relying on this anyway. An alternate approach is to use stat[ST_MTIME], which is guaranteed to be an integer. But since this support isn't already in our extension, we can't depend on it being available without adding a hard Python->C API dependency that's painful for people like yours truly who have bisect regularly and people without compilers.
Wed, 18 Nov 2015 15:58:06 -0800 rebase: refactoring to avoid repetition of expression
Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 15:58:06 -0800] rev 27014
rebase: refactoring to avoid repetition of expression This patch removes the repetition of "(revignored, revprecursor, revpruned)" and replaces its occurences with the more legible "revskipped".
Wed, 18 Nov 2015 16:06:00 -0800 rebase: remove an unused todo
Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 16:06:00 -0800] rev 27013
rebase: remove an unused todo Since we handled skipping obsolete revs when it is relevant, this todo is no longer useful. We replace the comment with two useful comments.
Wed, 18 Nov 2015 13:44:29 -0800 rebase: don't rebase obsolete commits with no successor
Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 13:44:29 -0800] rev 27012
rebase: don't rebase obsolete commits with no successor This patch avoids unnecessary conflicts to resolve during rebase for the users of changeset evolution. This patch modifies rebase to skip obsolete commits with no successor. It introduces a new rebase state 'revpruned' for these revisions that are being skipped and a new message to inform the user of what is happening. This feature is gated behind the config flag experimental.rebaseskipobsolete When an obsolete commit is skipped, the output is: note: not rebasing 7:360bbaa7d3ce "O", it has no successor
Wed, 18 Nov 2015 13:46:42 -0800 rebase: fix a typo in test-rebase-obsolete
Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 13:46:42 -0800] rev 27011
rebase: fix a typo in test-rebase-obsolete We had left a lonely single quote where it shouldn't be!
Wed, 18 Nov 2015 20:59:17 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 18 Nov 2015 20:59:17 -0600] rev 27010
merge with stable
Sun, 01 Nov 2015 14:43:25 +0900 hgweb: unify import style of error classes
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 14:43:25 +0900] rev 27009
hgweb: unify import style of error classes It will be enforced by the import checker.
Sun, 01 Nov 2015 14:00:14 +0900 hgweb: do not import templatefilters.revescape and websub as symbol
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 14:00:14 +0900] rev 27008
hgweb: do not import templatefilters.revescape and websub as symbol It will be enforced by the import checker.
Sun, 01 Nov 2015 13:58:32 +0900 hgweb: alias ui module as uimod
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 13:58:32 +0900] rev 27007
hgweb: alias ui module as uimod It will be enforced by the import checker.
Tue, 17 Nov 2015 14:23:26 -0800 mergestate.commit: factor out making the list of records
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:23:26 -0800] rev 27006
mergestate.commit: factor out making the list of records Will aid in testing.
Tue, 17 Nov 2015 14:04:56 -0800 mergestate: move _read() call to read constructor
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:04:56 -0800] rev 27005
mergestate: move _read() call to read constructor With this patch, mergestate.clean() will no longer abort when it encounters an unsupported merge type. However we hold off on testing it until backwards compatibility is in place.
Tue, 17 Nov 2015 14:22:30 -0800 debugmergestate: explain why we create mergestate objects directly
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:22:30 -0800] rev 27004
debugmergestate: explain why we create mergestate objects directly We would normally use the read() constructor, but in this case it's fine because - we implement our own reading layer, so the extra parsing done by read() is unnecessary - read() can raise an exception for unsupported merge state records, but here we'd like to handle that separately - debugmergestate needs to be privy to mergestate internals anyway
Wed, 11 Nov 2015 13:28:00 -0800 debugdirstate: convert keyword parameters to **opts
Christian Delahousse <cdelahousse@fb.com> [Wed, 11 Nov 2015 13:28:00 -0800] rev 27003
debugdirstate: convert keyword parameters to **opts Removes the named arguments and replaces them by accessing opts. This will be used in the next patch in the series because we'll be adding more flags to debugdirstate
Tue, 17 Nov 2015 18:01:21 -0800 convert: changed test's progress output format to ignore estimate
Christian Delahousse <cdelahousse@fb.com> [Tue, 17 Nov 2015 18:01:21 -0800] rev 27002
convert: changed test's progress output format to ignore estimate On my machine, whenever I run all test with a high -j value, test-convert-git.t would consistently fail by displaying an estimate. This patch removes that value from the output.
Tue, 17 Nov 2015 13:12:33 -0800 mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Tue, 17 Nov 2015 13:12:33 -0800] rev 27001
mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write Before this patch, mq was using repo._bookmarks.write. This patch replaces this code with the recommended way of saving bookmarks changes: repo._bookmarks.recordchange.
Tue, 17 Nov 2015 13:12:46 -0800 mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com> [Tue, 17 Nov 2015 13:12:46 -0800] rev 27000
mq: 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.
Tue, 17 Nov 2015 12:49:57 -0800 bookmarks: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Tue, 17 Nov 2015 12:49:57 -0800] rev 26999
bookmarks: use repo._bookmarks.recordchange instead of repo._bookmarks.write We move from the old api repo._bookmarks.write to the new api repo._bookmarks.recordchange.
Wed, 18 Nov 2015 01:36:58 -0800 localrepo: put bookmark move following commit in one transaction
Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 01:36:58 -0800] rev 26998
localrepo: put bookmark move following commit in one transaction Before this patch, making a commit on a local repo could move a bookmark and both operations would not be grouped as one transaction. This patch makes both operations part of one transaction. This is necessary to switch to the new api to save bookmarks repo._bookmarks.recordchange if we don't want to change the current behavior of rollback. Dirstate change happening after the commit is done is now part of the transaction mentioned above. This leads to a change in the expected output of several tests. The change to test-fncache happens because both lock are now released in the same finally clause. The lock release is made explicitly buggy in this test. Previously releasing lock would crash triggering release of wlock that crashes too. Now lock release crash does not directly result in the release of wlock. Instead wlock is released at garbage collection time and the error raised at that time "confuses" python.
Tue, 17 Nov 2015 15:43:21 -0800 test-resolve.t: switch to mergestate.read()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 15:43:21 -0800] rev 26997
test-resolve.t: switch to mergestate.read() See previous patches for why we're doing this.
Tue, 17 Nov 2015 13:58:50 -0800 localrepo.commit: switch to mergestate.read()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:58:50 -0800] rev 26996
localrepo.commit: switch to mergestate.read() See previous patches for why we're doing this.
Tue, 17 Nov 2015 13:57:38 -0800 fileset: switch to mergestate.read()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:57:38 -0800] rev 26995
fileset: switch to mergestate.read() See previous patches for why we're doing this.
Tue, 17 Nov 2015 14:20:55 -0800 commands.summary: switch to mergestate.read()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:20:55 -0800] rev 26994
commands.summary: switch to mergestate.read() See previous patch for why we're doing this. We do this with a bit of care -- it would be bad form for 'hg summary' to abort completely if we encounter an unsupported merge record. Instead just warn about that and continue with the rest of the summary.
Tue, 17 Nov 2015 13:56:46 -0800 commands.resolve: switch to mergestate.read()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:56:46 -0800] rev 26993
commands.resolve: switch to mergestate.read() See previous patches for why we're doing this.
Tue, 17 Nov 2015 13:56:10 -0800 shelve: switch to mergestate.read()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:56:10 -0800] rev 26992
shelve: switch to mergestate.read() See previous patches for why we're doing this.
Tue, 17 Nov 2015 13:55:30 -0800 mergestate: add a constructor that reads state from disk
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:55:30 -0800] rev 26991
mergestate: add a constructor that reads state from disk At the moment it's the same as just creating a new mergestate, but we'll soon move the _read call out of __init__ and in here.
Tue, 17 Nov 2015 17:04:53 -0800 merge.applyupdates: switch to mergestate.clean()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:04:53 -0800] rev 26990
merge.applyupdates: switch to mergestate.clean() See the previous patches for why we're doing this.
Tue, 17 Nov 2015 17:04:32 -0800 localrepo: switch to mergestate.clean()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:04:32 -0800] rev 26989
localrepo: switch to mergestate.clean() See the previous patches for why we're doing this.
Tue, 17 Nov 2015 17:02:35 -0800 strip: switch to mergestate.clean()
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:02:35 -0800] rev 26988
strip: switch to mergestate.clean() See the previous patches for why we're doing this.
Tue, 17 Nov 2015 17:00:54 -0800 mergestate: add a constructor that sets up a clean merge state
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:00:54 -0800] rev 26987
mergestate: add a constructor that sets up a clean merge state Eventually, we'll move the read call out of the constructor. This will: - avoid unnecessary reads when we're going to nuke the merge state anyway - avoid raising an exception if there's an unsupported merge record 'clean' seems like a good name for it because I wanted to avoid anything with the word 'new' in it, and 'reset' is more an action performed on a merge state than a way to get a new merge state. Thanks to Martin von Zweigbergk for feedback about naming this.
Tue, 17 Nov 2015 14:11:52 -0800 mergestate: raise structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:11:52 -0800] rev 26986
mergestate: raise structured exception for unsupported merge records We're going to catch this exception in 'hg summary' to print a better error message. This code is pretty untested, so there are no changes to test output. In upcoming patches we're going to test the output more thoroughly.
Tue, 17 Nov 2015 14:10:12 -0800 error: add a structured exception for unsupported merge records
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:10:12 -0800] rev 26985
error: add a structured exception for unsupported merge records We're going to use this in summary to print a better error message.
Tue, 17 Nov 2015 13:47:16 -0800 dirstate: back out 502b56a9e897
Bryan O'Sullivan <bos@serpentine.com> [Tue, 17 Nov 2015 13:47:16 -0800] rev 26984
dirstate: back out 502b56a9e897 Superseded by the parent of this commit.
Tue, 17 Nov 2015 13:47:14 -0800 osutil: make statfiles check for interrupts periodically
Bryan O'Sullivan <bos@serpentine.com> [Tue, 17 Nov 2015 13:47:14 -0800] rev 26983
osutil: make statfiles check for interrupts periodically This is a simpler and faster fix for issue4878 than the contortions performed in 502b56a9e897.
Tue, 17 Nov 2015 13:43:09 -0800 osutil: don't leak on statfiles error
Bryan O'Sullivan <bos@serpentine.com> [Tue, 17 Nov 2015 13:43:09 -0800] rev 26982
osutil: don't leak on statfiles error Found using the power of the mighty eyeball.
Thu, 12 Nov 2015 12:44:15 +0100 histedit: extracts _isdirtywc function
liscju <piotr.listkiewicz@gmail.com> [Thu, 12 Nov 2015 12:44:15 +0100] rev 26981
histedit: extracts _isdirtywc function Checking if working copy is dirty was done in few places, this patch extracts it in _isdirtywc procedure.
Mon, 16 Nov 2015 11:23:32 -0800 node: add 'nullhex', hex-encoded nullid
Siddharth Agarwal <sid0@fb.com> [Mon, 16 Nov 2015 11:23:32 -0800] rev 26980
node: add 'nullhex', hex-encoded nullid We're going to need this for upcoming changes, because the merge state stores nodes as hex strings.
Mon, 16 Nov 2015 11:45:35 -0800 filemerge: introduce class whose objects represent files not in a context
Siddharth Agarwal <sid0@fb.com> [Mon, 16 Nov 2015 11:45:35 -0800] rev 26979
filemerge: introduce class whose objects represent files not in a context Most code is going to barf at the return values here (particularly from data and size), so we restrict it to the filemerge code. This is already somewhat supported via: ctx.filectx(f, fileid=nullid) Indeed, for add/add conflicts (ancestor doesn't have the file) we use precisely that. However, that is broken in subtle ways: - The cmp() function in filectx returns False (identical) for such a filectx when compared to a zero-length file. - size() returns 0 rather than some sort of value indicating that the file isn't present. - data() returns '' rather than some sort of value indicating that the file isn't present. Given the relatively niche use of such filectxes, this seems to be the simplest way to fix all these issues.
Mon, 16 Nov 2015 11:27:27 -0800 filectx: add isabsent method
Siddharth Agarwal <sid0@fb.com> [Mon, 16 Nov 2015 11:27:27 -0800] rev 26978
filectx: add isabsent method This will indicate whether this filectx represents a file that is *not* in a changectx. This will be used by merge and filemerge code to know about when a conflict is a change/delete conflict. While this is kind of hacky, it is the least bad of all the alternatives. Other options considered but rejected include: - isinstance(fctx, ...) -- not very Pythonic, doesn't support duck typing - fctx.size() is None -- the 'size()' call on workingfilectxes causes a disk stat - fctx.filenode() == nullid -- the semantics around filenode are incredibly confusing. In particular, for workingfilectxes, filenode() is always None no matter whether the file is present on disk or in either parent. Having different behavior for None versus nullid in the merge code is just asking for pain. Thanks to Pierre-Yves David for early review feedback here.
Fri, 13 Nov 2015 22:37:51 -0800 filectx: allow custom comparators
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 22:37:51 -0800] rev 26977
filectx: allow custom comparators We're going to introduce other sorts of filectxes very soon, and we'd like the cmp method to function properly (i.e. commutatively) for them. The only way to make that happen is for this cmp method to call into that specialized one if that defines a custom comparator.
Fri, 13 Nov 2015 23:01:36 -0800 debugmergestate: print out record type for files
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:01:36 -0800] rev 26976
debugmergestate: print out record type for files We're going to add a separate record type for change/delete conflicts soon. We need to make sure they get stored with the correct record type so that older versions of Mercurial correctly abort when they see change/delete records.
Sun, 15 Nov 2015 22:45:20 -0800 merge.applyupdates: don't return early if merge driver's conclude failed
Siddharth Agarwal <sid0@fb.com> [Sun, 15 Nov 2015 22:45:20 -0800] rev 26975
merge.applyupdates: don't return early if merge driver's conclude failed Somewhat silly oversight -- this prevented the progress bar from being reset.
Mon, 16 Nov 2015 17:15:36 -0800 convert: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com> [Mon, 16 Nov 2015 17:15:36 -0800] rev 26974
convert: use repo._bookmarks.recordchange instead of repo._bookmarks.write Before this patch, convert was using repo._bookmarks.write, a deprecated API for saving bookmarks. This patch changes the use of repo._bookmarks.write to repo._bookmarks.recordchange.
Mon, 16 Nov 2015 17:14:15 -0800 convert: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com> [Mon, 16 Nov 2015 17:14:15 -0800] rev 26973
convert: 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 -120 +120 +1000 +3000 +10000 tip