Sun, 05 Mar 2017 16:20:07 -0800 dirstate: track updated files to improve write time
Durham Goode <durham@fb.com> [Sun, 05 Mar 2017 16:20:07 -0800] rev 31216
dirstate: track updated files to improve write time Previously, dirstate.write() would iterate over the entire dirstate to find any entries that needed to be marked 'lookup' (i.e. if they have the same timestamp as now). This was O(working copy) and slow in large repos. It was most visible when rebasing or histediting multiple commits, since it gets executed once per commit, even if the entire rebase/histedit is wrapped in a transaction. The fix is to track which files have been editted, and only check those to see if they need to be marked as 'lookup'. This saves 25% on histedit times in very large repositories. I tested this by adding temporary debug logic to verify that the old files processed in the loop matched the new files processed in the loop and running the test suite.
Mon, 06 Mar 2017 03:09:15 -0800 hook: give exthooks tags for blocking time
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:09:15 -0800] rev 31215
hook: give exthooks tags for blocking time The ui.system autogenerated tag isn't really useful - as they're named, let's use the name the user gave us.
Mon, 06 Mar 2017 03:19:40 -0800 filemerge: tag merge tool for blocked times
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:19:40 -0800] rev 31214
filemerge: tag merge tool for blocked times Merge tools can take a while - let's ensure that they're appropriately tagged
Mon, 06 Mar 2017 03:27:52 -0800 hgk: set a blocked tag when the user invokes view
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:27:52 -0800] rev 31213
hgk: set a blocked tag when the user invokes view
Mon, 06 Mar 2017 03:27:41 -0800 transplant: set a blockedtag when invoking external filter
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:27:41 -0800] rev 31212
transplant: set a blockedtag when invoking external filter
Mon, 06 Mar 2017 03:27:24 -0800 config: set blockedtag when invoking configuration edit
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:27:24 -0800] rev 31211
config: set blockedtag when invoking configuration edit
Mon, 06 Mar 2017 03:26:30 -0800 bisect: set a blockedtag when running the check command
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:26:30 -0800] rev 31210
bisect: set a blockedtag when running the check command So that the hg bisect data clearly shows the bisect command separately to the main data set.
Mon, 06 Mar 2017 03:25:44 -0800 dispatch: set a blockedtag when running an external alias
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:25:44 -0800] rev 31209
dispatch: set a blockedtag when running an external alias
Mon, 06 Mar 2017 03:25:29 -0800 patch: set a blockedtag when running an external filter
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:25:29 -0800] rev 31208
patch: set a blockedtag when running an external filter
Mon, 06 Mar 2017 03:25:09 -0800 sshpeer: set a blockedtag when starting ssh
Simon Farnsworth <simonfar@fb.com> [Mon, 06 Mar 2017 03:25:09 -0800] rev 31207
sshpeer: set a blockedtag when starting ssh So that the data is readable.
Mon, 06 Mar 2017 14:11:21 +0100 revert: always display hunks reversed when reverting to parent
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 14:11:21 +0100] rev 31206
revert: always display hunks reversed when reverting to parent When reverting to the parent of working directory, operation is "discard" so we want hunks to be presented in the same order as the diff (i.e. "reversed"). So we do not query the experimental.revertalternateinteractivemode option in this case and always set "reversehunks" to True.
Fri, 03 Mar 2017 14:08:20 +0100 fileset: add a 'status(...)' predicate to control evaluation context
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Mar 2017 14:08:20 +0100] rev 31205
fileset: add a 'status(...)' predicate to control evaluation context Same as 'revs', this predicate does not select files but switches the evaluation context. This allow to match file according arbitrary status call. We can now express the same query as 'hg status'. The API (two 'revsingle' class) have been picked instead of a single 'revs' revset for multiple reasons: * it is less confusing to express * it allow to express more query (eg: backward status, cross branch status)
Fri, 03 Mar 2017 14:08:06 +0100 fileset: allow to specify a basectx for status
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Mar 2017 14:08:06 +0100] rev 31204
fileset: allow to specify a basectx for status This will be used for a predicates that defines the status range of a match.
Fri, 03 Mar 2017 12:44:56 +0100 fileset: add revs(revs, fileset) to evaluate set in working directory
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Mar 2017 12:44:56 +0100] rev 31203
fileset: add revs(revs, fileset) to evaluate set in working directory Unlike other functions, "revs()" does not select files but switches the evaluation context. This allow to match file with property in another revision that the one currently evaluated. This changeset is based on work from Yuya Nishihara.
Sat, 24 Jan 2015 19:41:56 +0900 fileset: add function to switch revision where fileset will be evaluated
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Jan 2015 19:41:56 +0900] rev 31202
fileset: add function to switch revision where fileset will be evaluated If the subset isn't filtered yet, i.e. if fullmatchctx, the new subset is recalculated from scratch. Otherwise, it is narrowed by the existing subset.
Sat, 24 Jan 2015 19:13:39 +0900 fileset: extract function that builds status tuple only if necessary
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Jan 2015 19:13:39 +0900] rev 31201
fileset: extract function that builds status tuple only if necessary This function will be used to recalculate status when mctx.ctx is switched.
Sat, 24 Jan 2015 18:56:02 +0900 fileset: build initial subset in fullmatchctx class
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Jan 2015 18:56:02 +0900] rev 31200
fileset: build initial subset in fullmatchctx class
Tue, 24 Mar 2015 23:10:49 +0900 fileset: extract function that builds initial subset from ctx or status
Yuya Nishihara <yuya@tcha.org> [Tue, 24 Mar 2015 23:10:49 +0900] rev 31199
fileset: extract function that builds initial subset from ctx or status This function will be used to recalculate subset when mctx.ctx is switched.
Sat, 24 Jan 2015 19:55:14 +0900 fileset: add class to host special handling of initial subset
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Jan 2015 19:55:14 +0900] rev 31198
fileset: add class to host special handling of initial subset Future patches will add a function to switch mctx.ctx object so that we can forcibly evaluate a fileset expression in a specified revision. For example, new "revs()" function will be used to match predicate agains another revision $ hg revert 'set:revs(42, added())' fullmatchctx class is similar to revset.fullreposet. It will allow us to recalculate the subset only if it is not filtered yet.
Sat, 25 Feb 2017 18:41:00 +0900 patchbomb: add config knob to generate flags by template (issue5354)
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 18:41:00 +0900] rev 31197
patchbomb: add config knob to generate flags by template (issue5354) This can be used to flag patches by branch or topic automatically. Flags optionally given by --flag option are exported as {flags} template keyword, so you can add --flag V2.
Sat, 25 Feb 2017 18:35:34 +0900 patchbomb: pass around ui and revs that are needed for flag template
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 18:35:34 +0900] rev 31196
patchbomb: pass around ui and revs that are needed for flag template See the next patch for why.
Sat, 25 Feb 2017 18:28:04 +0900 patchbomb: build patch texts by _getpatchmsgs()
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 18:28:04 +0900] rev 31195
patchbomb: build patch texts by _getpatchmsgs() Now _getpatchmsgs() knows revision numbers, which allows us to generate flags by applying a template to changectx objects.
Sat, 25 Feb 2017 18:25:17 +0900 patchbomb: drop internal option for pbranch extension (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 18:25:17 +0900] rev 31194
patchbomb: drop internal option for pbranch extension (API) I want to move _getpatches() to _getpatchmsgs() to make sure each patch text is tied with the corresponding revision number. This helps adding templater support. IIRC, the pbranch extension doesn't work with the recent Mercurial versions, so the removal of this option wouldn't hurt.
Sat, 25 Feb 2017 18:16:41 +0900 patchbomb: factor out function that builds a prefix string to patch subject
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 18:16:41 +0900] rev 31193
patchbomb: factor out function that builds a prefix string to patch subject I'll add templating support.
Sun, 18 Jan 2015 18:04:44 +0900 formatter: add argument to change output file of non-plain formatter
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jan 2015 18:04:44 +0900] rev 31192
formatter: add argument to change output file of non-plain formatter This allows us to build data not written to the console. That would be doable by ui.pushbuffer()/popbuffer(), but changing the file object seems cleaner.
Fri, 03 Mar 2017 13:25:30 -0500 schemes: move re construction to module-level and python3-ify
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:25:30 -0500] rev 31191
schemes: move re construction to module-level and python3-ify This makes the schemes extension load correctly in Python 3.
Fri, 03 Mar 2017 13:29:50 -0500 dispatch: cope with sys.version being unicode on Python 3
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:29:50 -0500] rev 31190
dispatch: cope with sys.version being unicode on Python 3
Fri, 03 Mar 2017 13:29:25 -0500 dispatch: allow testedwith to be bytes or str
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:29:25 -0500] rev 31189
dispatch: allow testedwith to be bytes or str
Fri, 03 Mar 2017 14:09:14 -0500 ui: fix ui.traceback on Python 3
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 14:09:14 -0500] rev 31188
ui: fix ui.traceback on Python 3
Fri, 03 Mar 2017 14:08:24 -0500 ui: fix opts labeling on ui.warn et al for Python 3
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 14:08:24 -0500] rev 31187
ui: fix opts labeling on ui.warn et al for Python 3 This is a step towards fixing extension load warnings on Python 3. Note that I suspect there are still some bugs in this area and that things like color won't work, but the code at least executes and prints text to the console correctly now.
Fri, 03 Mar 2017 12:55:11 -0500 config: add sanity assert that files are opened as binary
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 12:55:11 -0500] rev 31186
config: add sanity assert that files are opened as binary This helps with some debugging in Python 3, and shouldn't hurt anything in Python 2. The unusual construction using getattr is done so that StringIO/BytesIO instances can be used as well as real files.
Mon, 06 Mar 2017 23:21:27 -0800 update: for "noconflict" updates, print "conflicting changes" on conflict
Martin von Zweigbergk <martinvonz@google.com> [Mon, 06 Mar 2017 23:21:27 -0800] rev 31185
update: for "noconflict" updates, print "conflicting changes" on conflict With experimental.updatecheck=noconflict, if the update is aborted because of conlicts, "uncommitted changes" is not quite accurate. Let's use "conflicting changes" instead. Also fix the hint to recomment --clean, not --merge, since that's what we do for other failed updates.
Mon, 06 Mar 2017 23:19:57 -0800 tests: fix test-update-branches to remove non-conflicting file
Martin von Zweigbergk <martinvonz@google.com> [Mon, 06 Mar 2017 23:19:57 -0800] rev 31184
tests: fix test-update-branches to remove non-conflicting file I was clearly very sloppy when I wrote the test case for experimental.updatecheck=noconflict. The test case that checks that one can move between commits with a removed file was deleting a file that was modified between the source and target commits, which resulted in a "change/delete" conflict. Since that is a conlict, the update correctly failed. Let's fix the test by removing a file that is not modified between the two commits.
Sat, 25 Feb 2017 17:08:42 +0900 branches: populate all template keywords in formatter
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 17:08:42 +0900] rev 31183
branches: populate all template keywords in formatter This is a usage example of fm.context().
Sat, 25 Feb 2017 17:00:07 +0900 formatter: add support for changeset templating
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 17:00:07 +0900] rev 31182
formatter: add support for changeset templating Some formatter-based commands provide fields that are identical to the ones defined in templatekw, but we had to specify them manually to support all changeset-based template keywords. This patch adds fm.context() that populates all templatekw. These keywords are available only in template output, so we still need to set important keywords via fm.data() if they should be available in e.g. JSON output. Currently fm.context() takes only 'ctx' argument. It will eventually be extended to take 'fctx' to support file-based keywords (e.g. {path}) seen in hgweb.
Sat, 25 Feb 2017 16:38:26 +0900 templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 16:38:26 +0900] rev 31181
templatekw: move defaulttmpl constant from changeset_templater These templates are used when rendering inner lists of some template keywords, so it makes sense to define them in templatekw. This allows us to reuse them to create a templateformatter knowing changectx.
Sat, 25 Feb 2017 22:04:30 +0900 formatter: drop filters argument from maketemplater()
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 22:04:30 +0900] rev 31180
formatter: drop filters argument from maketemplater() It's unused now. I want to keep the high-level API simple.
Sat, 25 Feb 2017 16:26:58 +0900 templater: port formatnode filter from changeset_templater
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 16:26:58 +0900] rev 31179
templater: port formatnode filter from changeset_templater This slightly reduces the difference between changeset_templater and formatter, and helps extending formatter to support changeset templating. New formatnode() is not a template filter, but a function since a filter cannot access to ui. And it's marked as DEPRECATED since I think it exists only for compatibility reasons.
Mon, 13 Feb 2017 00:05:55 -0800 update: allow setting default update check to "noconflict"
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Feb 2017 00:05:55 -0800] rev 31178
update: allow setting default update check to "noconflict" The new value allows update (linear or not) as long as they don't result in file merges. I'm hoping that this value can some day become the default.
Mon, 13 Feb 2017 16:03:05 -0800 update: add experimental config for default way of handling dirty wdir
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Feb 2017 16:03:05 -0800] rev 31177
update: add experimental config for default way of handling dirty wdir This allows the user to set e.g. experimental.updatecheck=abort to abort update if the working directory is dirty, but still be able to override the behavior with e.g. --merge when needed. I considered adding a --mergelinear option to get back the old behavior even when experimental.updatecheck=abort is set, but I couldn't see why anyone would prefer that over --merge. The default is read in hg.updatetotally(), which means it also applies to "hg pull -u" and "hg unbundle -u".
Mon, 13 Feb 2017 12:58:37 -0800 update: accept --merge to allow merging across topo branches (issue5125)
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Feb 2017 12:58:37 -0800] rev 31176
update: accept --merge to allow merging across topo branches (issue5125)
Mon, 27 Feb 2017 15:09:19 -0800 merge: combine the "merge" cases in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 15:09:19 -0800] rev 31175
merge: combine the "merge" cases in docstring table
Mon, 27 Feb 2017 15:07:01 -0800 merge: combine "dirty" cases in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 15:07:01 -0800] rev 31174
merge: combine "dirty" cases in docstring table
Mon, 27 Feb 2017 15:29:34 -0800 merge: clarify non-linear default updates in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 15:29:34 -0800] rev 31173
merge: clarify non-linear default updates in docstring table Non-linear updates won't happen by default, regardless of -c/-C.
Mon, 27 Feb 2017 15:02:36 -0800 merge: combine the two "can't happen" cases in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 15:02:36 -0800] rev 31172
merge: combine the two "can't happen" cases in docstring table
Mon, 27 Feb 2017 15:00:13 -0800 merge: move "incompatible options" case first in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 15:00:13 -0800] rev 31171
merge: move "incompatible options" case first in docstring table
Mon, 27 Feb 2017 14:58:53 -0800 merge: make "linear" an input in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 14:58:53 -0800] rev 31170
merge: make "linear" an input in docstring table Instead of having two ouputs, it seem simpler to have an addition input. This will allow further simplification.
Mon, 27 Feb 2017 14:33:17 -0800 merge: drop redundant column in docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 14:33:17 -0800] rev 31169
merge: drop redundant column in docstring table The "same" and "cross" columns now have the same values, so let's combine them into "non-linear".
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip