Sun, 12 Mar 2017 00:42:46 -0500 branchmap: stringify int in a portable way
Augie Fackler <augie@google.com> [Sun, 12 Mar 2017 00:42:46 -0500] rev 31348
branchmap: stringify int in a portable way We actually need a bytes in Python 3, and thanks to our nasty source loader this will portably do the right thing.
Sun, 12 Mar 2017 00:49:19 -0500 branchmap: don't use buffer() on Python 3
Augie Fackler <augie@google.com> [Sun, 12 Mar 2017 00:49:19 -0500] rev 31347
branchmap: don't use buffer() on Python 3 This is certainly slower than the Python 2 code, but it works, and we can revisit it later if it's a problem.
Sun, 12 Mar 2017 03:32:21 -0400 py3: use bytearray() instead of array('c', ...) constructions
Augie Fackler <augie@google.com> [Sun, 12 Mar 2017 03:32:21 -0400] rev 31346
py3: use bytearray() instead of array('c', ...) constructions Portable from 2.6-3.6.
Sat, 11 Mar 2017 20:58:26 -0500 summary: don't explicitly str() something we're about to %s
Augie Fackler <augie@google.com> [Sat, 11 Mar 2017 20:58:26 -0500] rev 31345
summary: don't explicitly str() something we're about to %s str() is wrong on Python 3 here, and %s implicitly calls str() anyway, so this was just extra dancing for no reason.
Sat, 11 Mar 2017 20:57:40 -0500 context: implement both __bytes__ and __str__ for Python 3
Augie Fackler <augie@google.com> [Sat, 11 Mar 2017 20:57:40 -0500] rev 31344
context: implement both __bytes__ and __str__ for Python 3 They're very similar, for obvious reasons.
Sat, 11 Mar 2017 20:57:04 -0500 context: work around `long` not existing on Python 3
Augie Fackler <augie@google.com> [Sat, 11 Mar 2017 20:57:04 -0500] rev 31343
context: work around `long` not existing on Python 3 I can't figure out what this branch is even trying to accomplish, and it was introduced in ac89a23ca814 which doesn't really shed any insight into why longs are treated differently from ints.
Sat, 11 Mar 2017 20:53:20 -0500 phases: explicitly evaluate list returned by map
Augie Fackler <augie@google.com> [Sat, 11 Mar 2017 20:53:20 -0500] rev 31342
phases: explicitly evaluate list returned by map On Python 3 map() returns a generator, which bool()s to true even if it had an empty input set. Work around this by using list() on the map() result.
Sat, 11 Mar 2017 20:51:09 -0500 ui: check for --debugger in sys.argv using r-string to avoid bytes on py3
Augie Fackler <augie@google.com> [Sat, 11 Mar 2017 20:51:09 -0500] rev 31341
ui: check for --debugger in sys.argv using r-string to avoid bytes on py3 Our source loader was errantly turning this --debugger into a bytes, which was then causing me to still get a pager when I was using the debugger on py3. That made life hard.
Sun, 12 Mar 2017 22:46:57 +0530 minirst: use bytes.strip instead of str.strip
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 12 Mar 2017 22:46:57 +0530] rev 31340
minirst: use bytes.strip instead of str.strip bytes.strip exists in Python 2.6 and Python 2.7 also.
Sun, 12 Mar 2017 22:27:53 +0530 smcposix: pass unicode as first argument to array.array
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 12 Mar 2017 22:27:53 +0530] rev 31339
smcposix: pass unicode as first argument to array.array This is an instance where we can safely convert the first argument, rest are the cases except one where we are using 'c' which is not there in Python 3. So that needs to be handled differently. This will help in making `hg help` run on Python 3.
Sun, 12 Mar 2017 07:35:13 +0530 util: pass encoding.[encoding|encodingmode] as unicodes
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 12 Mar 2017 07:35:13 +0530] rev 31338
util: pass encoding.[encoding|encodingmode] as unicodes We need to pass str to encode() and decode().
Wed, 08 Mar 2017 16:52:57 -0800 win32text: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:52:57 -0800] rev 31337
win32text: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:52:49 -0800 transplant: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:52:49 -0800] rev 31336
transplant: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:52:42 -0800 shelve: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:52:42 -0800] rev 31335
shelve: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:52:30 -0800 share: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:52:30 -0800] rev 31334
share: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:52:16 -0800 mq: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:52:16 -0800] rev 31333
mq: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:52:06 -0800 largefiles: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:52:06 -0800] rev 31332
largefiles: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:51:57 -0800 keyword: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:51:57 -0800] rev 31331
keyword: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:51:49 -0800 journal: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:51:49 -0800] rev 31330
journal: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:51:43 -0800 histedit: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:51:43 -0800] rev 31329
histedit: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:51:36 -0800 eol: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:51:36 -0800] rev 31328
eol: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:51:25 -0800 convert: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:51:25 -0800] rev 31327
convert: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:55 -0800 test-bundle2-remote-changegroup: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:55 -0800] rev 31326
test-bundle2-remote-changegroup: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:47 -0800 subrepo: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:47 -0800] rev 31325
subrepo: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:39 -0800 repair: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:39 -0800] rev 31324
repair: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:32 -0800 merge: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:32 -0800] rev 31323
merge: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:24 -0800 hg-mod: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:24 -0800] rev 31322
hg-mod: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:17 -0800 commands: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:17 -0800] rev 31321
commands: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Wed, 08 Mar 2017 16:53:09 -0800 cmdutil: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:53:09 -0800] rev 31320
cmdutil: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Fri, 05 Aug 2016 14:29:22 +0200 localrepo: directly use repo.vfs.join
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 14:29:22 +0200] rev 31319
localrepo: directly use repo.vfs.join The 'repo.join' method is about to be deprecated.
Sun, 12 Mar 2017 07:09:18 +0530 minirst: make encoding.encoding unicodes to pass into encode() and decode()
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 12 Mar 2017 07:09:18 +0530] rev 31318
minirst: make encoding.encoding unicodes to pass into encode() and decode()
Sun, 12 Mar 2017 06:59:37 +0530 minirst: make regular expressions bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 12 Mar 2017 06:59:37 +0530] rev 31317
minirst: make regular expressions bytes
Sat, 11 Mar 2017 17:14:02 -0800 setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 11 Mar 2017 17:14:02 -0800] rev 31316
setup: convert setupversion to unicode Something deep in the bowels of distutils expects "version" passed to setup() to be a str/unicode. So, convert the type. This still works on Python 2 because the string is ascii and an implicit coercion back to str/bytes should work without issue. If it does cause problems, we can always make the unicode conversion dependent on running Python 3. This change makes `python3.5 setup.py install` work.
Wed, 14 Jan 2015 01:15:26 +0100 util: add debugstacktrace depth limit
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 31315
util: add debugstacktrace depth limit Useful when you don't care about the start of the stack, but only want to see the last entries.
Fri, 16 Jan 2015 04:26:40 +0100 util: strip trailing newline from debugstacktrace message
Mads Kiilerich <madski@unity3d.com> [Fri, 16 Jan 2015 04:26:40 +0100] rev 31314
util: strip trailing newline from debugstacktrace message This makes the function more convenient to use as drop-in replacement for ui.write & co.
Fri, 16 Jan 2015 04:26:40 +0100 tests: rework util.debugstacktrace tests
Mads Kiilerich <madski@unity3d.com> [Fri, 16 Jan 2015 04:26:40 +0100] rev 31313
tests: rework util.debugstacktrace tests Prepare for adding another test.
Sat, 11 Mar 2017 11:04:14 -0800 vfs: use repo.vfs.rename
Mads Kiilerich <mads@kiilerich.com> [Sat, 11 Mar 2017 11:04:14 -0800] rev 31312
vfs: use repo.vfs.rename
Sat, 11 Mar 2017 11:02:25 -0800 vfs: use repo.vfs.unlinkpath
Mads Kiilerich <mads@kiilerich.com> [Sat, 11 Mar 2017 11:02:25 -0800] rev 31311
vfs: use repo.vfs.unlinkpath
Wed, 14 Jan 2015 01:15:26 +0100 merge: use repo.wvfs.unlinkpath
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 31310
merge: use repo.wvfs.unlinkpath
Wed, 14 Jan 2015 01:15:26 +0100 vfs: use repo.wvfs.unlinkpath
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 31309
vfs: use repo.wvfs.unlinkpath
Wed, 08 Mar 2017 18:11:41 -0500 policy: try and always have a bytes for module policy
Augie Fackler <raf@durin42.com> [Wed, 08 Mar 2017 18:11:41 -0500] rev 31308
policy: try and always have a bytes for module policy debuginstall now runs cleanly in Python 3.
Wed, 08 Mar 2017 18:11:19 -0500 init: zstd is already python3-ready, so don't run it through our importer
Augie Fackler <raf@durin42.com> [Wed, 08 Mar 2017 18:11:19 -0500] rev 31307
init: zstd is already python3-ready, so don't run it through our importer
Fri, 03 Mar 2017 14:42:56 -0500 config: guard against setconfig specifying unicode values on py3
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 14:42:56 -0500] rev 31306
config: guard against setconfig specifying unicode values on py3 This was leading to some difficult to trace problems because the values were set in one place, but then blew up much later in the program. Exploding violently with an assertion seems reasonable here.
Fri, 03 Mar 2017 14:43:27 -0500 dispatch: enforce bytes when converting boolean flags to config items
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 14:43:27 -0500] rev 31305
dispatch: enforce bytes when converting boolean flags to config items This fixes --verbose on Python 3.
Fri, 03 Mar 2017 13:52:08 -0500 py3: add a test that proves %include and missing-extension code works
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:52:08 -0500] rev 31304
py3: add a test that proves %include and missing-extension code works
Fri, 03 Mar 2017 14:08:02 -0500 extensions: tapdance to get reasonable import error formatting
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 14:08:02 -0500] rev 31303
extensions: tapdance to get reasonable import error formatting I'm not thrilled with this, but it seems to work.
Sat, 11 Mar 2017 10:35:44 -0800 rebase: abort if *any* commit in rebase set is public
Martin von Zweigbergk <martinvonz@google.com> [Sat, 11 Mar 2017 10:35:44 -0800] rev 31302
rebase: abort if *any* commit in rebase set is public
Sat, 11 Mar 2017 13:53:14 -0500 merge with stable
Augie Fackler <augie@google.com> [Sat, 11 Mar 2017 13:53:14 -0500] rev 31301
merge with stable
Thu, 09 Mar 2017 20:53:14 -0800 httpconnection: rename config to groups
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 09 Mar 2017 20:53:14 -0800] rev 31300
httpconnection: rename config to groups Because that is what it is.
Thu, 09 Mar 2017 20:51:57 -0800 httpconnection: don't use dict()
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 09 Mar 2017 20:51:57 -0800] rev 31299
httpconnection: don't use dict() Not sure the history here. But we don't do this elsewhere.
Thu, 09 Mar 2017 15:38:00 -0800 formatter: set _first on formatter, not ui
Martin von Zweigbergk <martinvonz@google.com> [Thu, 09 Mar 2017 15:38:00 -0800] rev 31298
formatter: set _first on formatter, not ui The _first field is used for tracking when to emit a separator between items. It seems like it's clearly formatter state, not ui state, so let's move it there.
Fri, 10 Mar 2017 23:07:20 -0800 rebase: unhide original working directory node as well (issue5219)
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Mar 2017 23:07:20 -0800] rev 31297
rebase: unhide original working directory node as well (issue5219) By including the working directory revision at the start of rebase in the repo._rebaseset, we make sure it's not hidden when we update back to it at the end of the rebase. This feels like abusing the set a bit given its name (_rebaseset), but I couldn't think of another name that's clearly better.
Fri, 10 Mar 2017 23:06:31 -0800 rebase: pass in a regular set to _setrebasesetvisibility()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Mar 2017 23:06:31 -0800] rev 31296
rebase: pass in a regular set to _setrebasesetvisibility() Trivial refactoring to simplify the next patch.
Wed, 01 Feb 2017 09:18:44 -0800 tests: demonstrate broken rebase from obsolete commit
Martin von Zweigbergk <martinvonz@google.com> [Wed, 01 Feb 2017 09:18:44 -0800] rev 31295
tests: demonstrate broken rebase from obsolete commit This shows the bug I reported in issue 5219.
Wed, 01 Mar 2017 16:19:41 -0800 treemanifest: make node reuse match flat manifest behavior
Durham Goode <durham@fb.com> [Wed, 01 Mar 2017 16:19:41 -0800] rev 31294
treemanifest: make node reuse match flat manifest behavior In a flat manifest, a node with the same content but different parents is still considered a new node. In the current tree manifests however, if the content is the same, we ignore the parents entirely and just reuse the existing node. In our external treemanifest extension, we want to allow having one treemanifest for every flat manifests, as a way of easeing the migration to treemanifests. To make this possible, let's change the root node treemanifest behavior to match the behavior for flat manifests, so we can have a 1:1 relationship. While this sounds like a BC breakage, it's not actually a state users can normally get in because: A) you can't make empty commits, and B) even if you try to make an empty commit (by making a commit then amending it's changes away), the higher level commit logic in localrepo.commitctx() forces the commit to use the original p1 manifest node if no files were changed. So this would only affect extensions and automation that reached passed the normal localrepo.commit() logic straight into the manifest logic.
Fri, 10 Mar 2017 17:37:39 -0500 help: update help.internalstable for new censor docs
Augie Fackler <augie@google.com> [Fri, 10 Mar 2017 17:37:39 -0500] rev 31293
help: update help.internalstable for new censor docs
Fri, 10 Mar 2017 16:54:41 -0500 parsers: drop old nonnormalentries method
Augie Fackler <augie@google.com> [Fri, 10 Mar 2017 16:54:41 -0500] rev 31292
parsers: drop old nonnormalentries method This is okay to do because the Python will fall back transparently if the method is missing.
Fri, 10 Mar 2017 16:53:00 -0500 parsers: avoid leak of nonnset and otherpset
Augie Fackler <augie@google.com> [Fri, 10 Mar 2017 16:53:00 -0500] rev 31291
parsers: avoid leak of nonnset and otherpset Py_BuildValue increments the refcount, rather than stealing the reference, which I missed in code review.
Thu, 09 Mar 2017 20:33:29 -0800 sslutil: issue warning when [hostfingerprint] is used
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 09 Mar 2017 20:33:29 -0800] rev 31290
sslutil: issue warning when [hostfingerprint] is used Mercurial 3.9 added the [hostsecurity] section, which is better than [hostfingerprints] in every way. One of the ways that [hostsecurity] is better is that it supports SHA-256 and SHA-512 fingerprints, not just SHA-1 fingerprints. The world is moving away from SHA-1 because it is borderline secure. Mercurial should be part of that movement. This patch adds a warning when a valid SHA-1 fingerprint from the [hostfingerprints] section is being used. The warning informs users to switch to [hostsecurity]. It even prints the config option they should set. It uses the SHA-256 fingerprint because recommending a SHA-1 fingerprint in 2017 would be ill-advised. The warning will print itself on every connection to a server until it is fixed. There is no way to suppress the warning. I admit this is annoying. But given the security implications of sticking with SHA-1, I think this is justified. If this patch is accepted, I'll likely send a follow-up to start warning on SHA-1 certificates in [hostsecurity] as well. Then sometime down the road, we can drop support for SHA-1 fingerprints. Credit for this idea comes from timeless in issue 5466.
Thu, 09 Mar 2017 19:59:52 -0800 setup: use setuptools on Windows (issue5400)
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 09 Mar 2017 19:59:52 -0800] rev 31289
setup: use setuptools on Windows (issue5400) We've had a long, complicated history with setuptools. We want to make it the universal default. But when we do, it breaks things. `python setup.py build` is broken on Windows today. Forcing the use of setuptools via FORCE_SETUPTOOLS=1 unbreaks things. Since the previous bustage with making setuptools the default was on !Windows, it seems safe to move ahead with the setuptools transition on Windows. So this patch does that.
Thu, 09 Mar 2017 19:41:40 -0800 schemes: use br'' literal to define bytes regexp
Yuya Nishihara <yuya@tcha.org> [Thu, 09 Mar 2017 19:41:40 -0800] rev 31288
schemes: use br'' literal to define bytes regexp
Thu, 09 Mar 2017 12:55:48 +0900 help: fix layout of pre-formatted text
Yuya Nishihara <yuya@tcha.org> [Thu, 09 Mar 2017 12:55:48 +0900] rev 31287
help: fix layout of pre-formatted text
Thu, 09 Mar 2017 11:01:03 +0900 help: fix example of revs() fileset
Yuya Nishihara <yuya@tcha.org> [Thu, 09 Mar 2017 11:01:03 +0900] rev 31286
help: fix example of revs() fileset
Fri, 05 Aug 2016 14:24:53 +0200 filecache: make 'join' abstract
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 14:24:53 +0200] rev 31285
filecache: make 'join' abstract All subclasses redefine this method, so we can make it abstract.
Wed, 08 Mar 2017 16:43:16 -0800 filecache: explicitly test 'repofilecache'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 08 Mar 2017 16:43:16 -0800] rev 31284
filecache: explicitly test 'repofilecache' The tests is actually about testing a repofilecache (it uses a fake repo). We make this clear to prevent blockers while cleaning theses API.
Fri, 05 Aug 2016 14:25:21 +0200 repofilecache: directly use 'repo.vfs.join'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 14:25:21 +0200] rev 31283
repofilecache: directly use 'repo.vfs.join' The 'vfs' attribute already have all methods we need, the value of going through the repository for this is low. so we removes it.
Fri, 05 Aug 2016 14:23:58 +0200 repofilecache: define a 'join' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 14:23:58 +0200] rev 31282
repofilecache: define a 'join' method We are about to turn the 'join' method of the base class Abstract, so we need on to be defined in the localrepo. The ultimate goal here is to be able to stop relying for the 'localrepo' class to have a 'join' methods (there is above one hundred methods on 'localrepo'. This change make te 'repo' file cache have its own code so that we can prepare this change to the repostory class. explicite join
Mon, 06 Mar 2017 18:42:36 -0500 wix: add censor docs to installer script
Augie Fackler <augie@google.com> [Mon, 06 Mar 2017 18:42:36 -0500] rev 31281
wix: add censor docs to installer script Spotted by Matt Harbison.
Mon, 23 Jan 2017 20:17:24 -0500 internals: add some brief documentation about censor
Augie Fackler <augie@google.com> [Mon, 23 Jan 2017 20:17:24 -0500] rev 31280
internals: add some brief documentation about censor
Thu, 09 Mar 2017 15:10:27 -0800 localrepo: rename proxycls to filteredrepo
Jun Wu <quark@fb.com> [Thu, 09 Mar 2017 15:10:27 -0800] rev 31279
localrepo: rename proxycls to filteredrepo When debugging in a Python shell, the type of "repo" is "proxycls", which could confuse new people. In [1]: repo Out[1]: <mercurial.localrepo.proxycls at 0x7f65d4b976d0> Let's rename it to "filteredrepo" to make it clearer.
Wed, 08 Mar 2017 17:35:20 -0800 dirstate: track otherparent files same as nonnormal
Durham Goode <durham@fb.com> [Wed, 08 Mar 2017 17:35:20 -0800] rev 31278
dirstate: track otherparent files same as nonnormal Calling dirstate.setparents() is expensive in a large repo because it iterates over every file in the dirstate. It does so to undo any merge state or otherparent state files. Merge state files are already covered by dirstate._nonnormalset, so we just need to track otherparent files in a similar manner to avoid the full iteration here. Fixing this shaves 20-25% off histedit in large repos. 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.
Tue, 07 Mar 2017 13:24:24 -0500 pycompat: verify sys.argv exists before forwarding it (issue5493) stable
Augie Fackler <augie@google.com> [Tue, 07 Mar 2017 13:24:24 -0500] rev 31277
pycompat: verify sys.argv exists before forwarding it (issue5493) ISAPI_WSGI doesn't set up sys.argv, so we have to look for the attribute before assuming it exists.
Mon, 06 Mar 2017 09:28:33 +0100 hgweb: use patch.diffhunks in webutil.diffs to simplify the algorithm
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 09:28:33 +0100] rev 31276
hgweb: use patch.diffhunks in webutil.diffs to simplify the algorithm Function patch.diffhunks yields items for a "block" (i.e. a file) as a whole so take advantage of this to simplify the algorithm and avoid parsing diff lines to determine whether we're starting a new "block" or not. Thus we drop to external block counter and rely on diffhunks iterations instead. We also take advantage of the fact that patch.diffhunks() yields *lines* of hunks (instead of a string) to avoid building a list that is ''.join-ed into a string that is then split. As lines in 'header' returned by patch.diffhunks() have no trailing new line, we need to insert it ourselves to match template expectations.
Mon, 06 Mar 2017 09:44:39 +0100 hgweb: start enumerate at 1 in webutil.diffs's inner function prettyprintlines
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 09:44:39 +0100] rev 31275
hgweb: start enumerate at 1 in webutil.diffs's inner function prettyprintlines
Fri, 03 Mar 2017 17:20:11 +0100 patch: add a diffhunks function yielding (diffheaders, hunks)
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 03 Mar 2017 17:20:11 +0100] rev 31274
patch: add a diffhunks function yielding (diffheaders, hunks) trydiff function now yield (header, hunks) tuple that are processed by diffhunks(). Then diff() is a wrapper around diffhunks().
Fri, 03 Mar 2017 17:46:40 +0100 mdiff: let unidiff return (diffheader, hunks)
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 03 Mar 2017 17:46:40 +0100] rev 31273
mdiff: let unidiff return (diffheader, hunks) This will be used to make it possible to filter diff hunks based on this range information. Now unidiff returns a 'hunks' generator that yield tuple (hunkrange, hunklines) coming from _unidiff() with 'newline at end of file' processing.
Fri, 03 Mar 2017 17:46:28 +0100 mdiff: extract a checknonewline inner function in unidiff()
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 03 Mar 2017 17:46:28 +0100] rev 31272
mdiff: extract a checknonewline inner function in unidiff()
Fri, 03 Mar 2017 13:51:22 +0100 mdiff: distinguish diff headers from hunks in unidiff()
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 03 Mar 2017 13:51:22 +0100] rev 31271
mdiff: distinguish diff headers from hunks in unidiff() Let unidiff return the list of headers it produces (lines '--- <original>' and '+++ <new>') apart from diff hunks. In patch.diff(), we combine headers generated there (not specific to unified format) with those from unidiff(). By returning a list of header lines, we do not append new lines in datetag inner function of unidiff() so that all header lines are '\n'.join-ed in a similar way.
Fri, 03 Mar 2017 16:17:17 +0100 test: end printed diff "hunks" with an empty string in test-context.py
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 03 Mar 2017 16:17:17 +0100] rev 31270
test: end printed diff "hunks" with an empty string in test-context.py So that the resulting diff is correct and does not include a spurious empty line between lines "diff --git a/foo b/foo" and "--- a/foo".
Thu, 02 Mar 2017 17:22:46 +0100 mdiff: let _unidiff yield hunks as (<range information>, <hunk lines>)
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 02 Mar 2017 17:22:46 +0100] rev 31269
mdiff: let _unidiff yield hunks as (<range information>, <hunk lines>) Now _unidiff yields each hunk lines packed into a tuple with the "range information" `(s1, l1, s2, l2)` that is used to build the typical hunk header '@@ -s1,l1 +s2,l2 @@'. This will be used to make it possible to filter diff hunks based on this range information. The new "range information" is ignored in unidiff() (only caller of _unidiff) for now.
Mon, 09 Jan 2017 09:34:39 +0100 mdiff: turn the comment above _unidiff into a docstring
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 09 Jan 2017 09:34:39 +0100] rev 31268
mdiff: turn the comment above _unidiff into a docstring
Tue, 27 Sep 2016 20:27:35 +0200 mdiff: compute newlines-splitted texts within _unidiff
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 27 Sep 2016 20:27:35 +0200] rev 31267
mdiff: compute newlines-splitted texts within _unidiff There is no reason to compute splitted texts l1, l2 in unidiff() before calling _unidiff as they are only used with the latter function.
Wed, 08 Mar 2017 18:32:42 -0500 dispatch: add pagination of two more help cases
Augie Fackler <augie@google.com> [Wed, 08 Mar 2017 18:32:42 -0500] rev 31266
dispatch: add pagination of two more help cases I missed these in the last round anf Yuya spotted them in review. Thanks!
Wed, 08 Mar 2017 18:31:33 -0500 help: avoid mutating passed-in `keep` list in `formattedhelp`
Augie Fackler <augie@google.com> [Wed, 08 Mar 2017 18:31:33 -0500] rev 31265
help: avoid mutating passed-in `keep` list in `formattedhelp`
Fri, 03 Mar 2017 13:32:10 -0500 extensions: use [0:1] slice on config path instead of [0]
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:32:10 -0500] rev 31264
extensions: use [0:1] slice on config path instead of [0] This behaves the same in Python 2 and Python 3, even though the path is a bytes.
Fri, 03 Mar 2017 13:27:21 -0500 extensions: use inspect module instead of func_code.co_argcount
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:27:21 -0500] rev 31263
extensions: use inspect module instead of func_code.co_argcount Fixes the extsetup argspec check on Python 3.
Tue, 07 Mar 2017 18:29:58 -0800 treemanifest: add tests covering hg diff of partial trees
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 18:29:58 -0800] rev 31262
treemanifest: add tests covering hg diff of partial trees Previously the hg files tests also covered the logic (i.e. treemanifest.matches) that governed how hg diff limited its diff. In a future patch we will be switching treemanifest.diff() to have a custom implementation, so let's go ahead and add equivalent test coverage for hg diff.
Tue, 07 Mar 2017 17:52:45 -0800 context: remove uses of manifest.matches
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 17:52:45 -0800] rev 31261
context: remove uses of manifest.matches This removes the uses of manifest.matches in context.py in favor of the new manifest.diff(match) api. This is part of removing manifest.matches since it is O(manifest). To drop the dependency on ctx._manifestmatches(s) we transfer responsibilty for creating status oriented manifests over to ctx._buildstatusmanifest(s). This already existed for workingctx, we just need to implement a simple version for basectx. The old _manifestmatches functionality is basically identical to the _buildstatusmanifest functionality (minus the matching part), so no behavior should be lost.
Tue, 07 Mar 2017 17:49:50 -0800 context: remove assumptions about manifest creation during _buildstatus
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 17:49:50 -0800] rev 31260
context: remove assumptions about manifest creation during _buildstatus Previously we called self.manifest() in some cases to preload the first manifest. This relied on the assumption that the later _manifestmatches() call did not duplicate any work the original self.manifest() call did. Let's remove that assumption, since it bit me during my refactors of this area and is easy to remove.
Tue, 07 Mar 2017 17:56:30 -0800 context: move _manifest from committablectx to workingctx
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 17:56:30 -0800] rev 31259
context: move _manifest from committablectx to workingctx committablectx had a _manifest implementation that was only used by the derived workingctx class. The other derived versions, like memctx and metadataonlyctx, define their own _manifest functions. Let's move the function down to workingctx, and let's break it into two parts, the _manifest part that reads from self._status, and the part that actually builds the new manifest. This separation will let us reuse the builder code in a future patch to answer _buildstatus with varying status inputs, since workingctx has special behavior for _buildstatus that the other ctx's don't have.
Tue, 07 Mar 2017 09:56:11 -0800 status: handle more node indicators in buildstatus
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 09:56:11 -0800] rev 31258
status: handle more node indicators in buildstatus There are several different node markers that indicate different working copy states. The context._buildstatus function was only handling one of them, and this patch makes it handle all of them (falling back to file content comparisons when in one of these states). This affects a future patch where we get rid of context._manifestmatches as part of getting rid of manifest.matches(). context._manifestmatches is currently hacky in that it uses the newnodeid for all added and modified files, which is why the current newnodeid check is sufficient. When we get rid of this function and use the normal manifest.diff function, we start to see the other indicators in the nodes, so they need to be handled or else the tests fail.
Tue, 07 Mar 2017 18:38:20 -0800 merge: remove uses of manifest.matches
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 18:38:20 -0800] rev 31257
merge: remove uses of manifest.matches This gets rid of the manifest.matches calls in merge.py in favor of the new api. This is part of getting rid of manifest.matches since it is O(manifest).
Tue, 07 Mar 2017 09:56:11 -0800 copies: remove use of manifest.matches
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 09:56:11 -0800] rev 31256
copies: remove use of manifest.matches Convert the existing use of manifest.matches to use the new api. This is part of getting rid of manifest.matches, since it is O(manifest).
Tue, 07 Mar 2017 09:56:11 -0800 manifest: add match argument to diff and filesnotin
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 09:56:11 -0800] rev 31255
manifest: add match argument to diff and filesnotin As part of removing manifest.matches (since it is O(manifest)), let's start by adding match arguments to diff and filesnotin. As we'll see in later patches, these are the only flows that actually use matchers, so by moving the matching into the actual functions, other manifest implementations can make more efficient algorithsm. For instance, this will allow treemanifest diff's to only iterate over the files that are different AND meet the match criteria. No consumers are changed in this patches, but the code is fairly easy to verify visually. Future patches will convert consumers to use it. One test was affected because it did not use the kwargs version of the clean parameter.
Thu, 09 Mar 2017 00:07:13 +0900 fileset: drop false function signatures from revs() and status() docs
Yuya Nishihara <yuya@tcha.org> [Thu, 09 Mar 2017 00:07:13 +0900] rev 31254
fileset: drop false function signatures from revs() and status() docs They should be inserted by @predicate helper.
Wed, 08 Mar 2017 22:30:12 +0900 py3: factor out bytechr() function
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Mar 2017 22:30:12 +0900] rev 31253
py3: factor out bytechr() function I also changed xrange(127) to range(127) as the number is relatively small.
Thu, 02 Mar 2017 13:34:01 +0100 vfs: use 'vfs' module directly in 'test-clone-uncompressed'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:34:01 +0100] rev 31252
vfs: use 'vfs' module directly in 'test-clone-uncompressed' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:33:28 +0100 vfs: use 'vfs' module directly in 'test-filecache'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:33:28 +0100] rev 31251
vfs: use 'vfs' module directly in 'test-filecache' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:33:16 +0100 vfs: use 'vfs' module directly in 'test-parseindex'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:33:16 +0100] rev 31250
vfs: use 'vfs' module directly in 'test-parseindex' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:33:02 +0100 vfs: use 'vfs' module directly in 'test-lock'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:33:02 +0100] rev 31249
vfs: use 'vfs' module directly in 'test-lock' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:32:49 +0100 vfs: use 'vfs' module directly in 'contrib/undumprevlog'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:32:49 +0100] rev 31248
vfs: use 'vfs' module directly in 'contrib/undumprevlog' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:32:27 +0100 vfs: use 'vfs' module directly in 'hgext.largefile'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:32:27 +0100] rev 31247
vfs: use 'vfs' module directly in 'hgext.largefile' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:32:14 +0100 vfs: use 'vfs' module directly in 'hgext.convert'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:32:14 +0100] rev 31246
vfs: use 'vfs' module directly in 'hgext.convert' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:31:39 +0100 vfs: use 'vfs' module directly in 'hgext.transplant'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:31:39 +0100] rev 31245
vfs: use 'vfs' module directly in 'hgext.transplant' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:31:32 +0100 vfs: use 'vfs' module directly in 'hgext.shelve'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:31:32 +0100] rev 31244
vfs: use 'vfs' module directly in 'hgext.shelve' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:31:23 +0100 vfs: use 'vfs' module directly in 'hgext.mq'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:31:23 +0100] rev 31243
vfs: use 'vfs' module directly in 'hgext.mq' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 14:49:50 +0100 vfs: use 'vfs' module directly in 'mercurial.unionrepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 14:49:50 +0100] rev 31242
vfs: use 'vfs' module directly in 'mercurial.unionrepo' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 14:49:01 +0100 vfs: use 'vfs' module directly in 'mercurial.statichttprepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 14:49:01 +0100] rev 31241
vfs: use 'vfs' module directly in 'mercurial.statichttprepo' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 14:47:03 +0100 vfs: use 'vfs' module directly in 'mercurial.bundlerepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 14:47:03 +0100] rev 31240
vfs: use 'vfs' module directly in 'mercurial.bundlerepo' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:31:07 +0100 vfs: use 'vfs' module directly in 'mercurial.debugcommand'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:31:07 +0100] rev 31239
vfs: use 'vfs' module directly in 'mercurial.debugcommand' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:30:58 +0100 vfs: use 'vfs' module directly in 'mercurial.simplemerge'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:30:58 +0100] rev 31238
vfs: use 'vfs' module directly in 'mercurial.simplemerge' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:30:47 +0100 vfs: use 'vfs' module directly in 'mercurial.cmdutil'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:30:47 +0100] rev 31237
vfs: use 'vfs' module directly in 'mercurial.cmdutil' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:30:38 +0100 vfs: use 'vfs' module directly in 'mercurial.subrepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:30:38 +0100] rev 31236
vfs: use 'vfs' module directly in 'mercurial.subrepo' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:30:28 +0100 vfs: use 'vfs' module directly in 'mercurial.archival'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:30:28 +0100] rev 31235
vfs: use 'vfs' module directly in 'mercurial.archival' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:30:10 +0100 vfs: use 'vfs' module directly in 'mercurial.store'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:30:10 +0100] rev 31234
vfs: use 'vfs' module directly in 'mercurial.store' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:29:59 +0100 vfs: use 'vfs' module directly in 'mercurial.patch'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:29:59 +0100] rev 31233
vfs: use 'vfs' module directly in 'mercurial.patch' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:29:43 +0100 vfs: use 'vfs' module directly in 'mercurial.repair'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:29:43 +0100] rev 31232
vfs: use 'vfs' module directly in 'mercurial.repair' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Thu, 02 Mar 2017 13:28:17 +0100 vfs: use 'vfs' module directly in 'mercurial.localrepo'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:28:17 +0100] rev 31231
vfs: use 'vfs' module directly in 'mercurial.localrepo' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Wed, 08 Mar 2017 13:46:26 -0800 chg: forward user-defined signals
Jun Wu <quark@fb.com> [Wed, 08 Mar 2017 13:46:26 -0800] rev 31230
chg: forward user-defined signals SIGUSR1 and SIGUSR2 are reserved for user-defined behaviors. They may be redefined by an hg extension [1], but cannot be easily redefined for chg. Since the default behavior (kill) is not that useful for chg, let's forward them to hg, hoping it got redefined there and could be more useful. [1] https://bitbucket.org/facebook/hg-experimental/commits/e7c883a465
Wed, 08 Mar 2017 13:34:25 -0800 chg: document why we send SIGHUP and SIGINT to process group
Jun Wu <quark@fb.com> [Wed, 08 Mar 2017 13:34:25 -0800] rev 31229
chg: document why we send SIGHUP and SIGINT to process group This makes the code more consistent - other signals are documented.
Wed, 08 Mar 2017 14:29:25 -0800 tests: make test-shelve.t timing-independent
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Mar 2017 14:29:25 -0800] rev 31228
tests: make test-shelve.t timing-independent It was sometimes taking 2s for me (not the "1s" the test expected).
Wed, 08 Mar 2017 22:12:49 +0900 tests: make run-tests.py run on Python 3 again
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Mar 2017 22:12:49 +0900] rev 31227
tests: make run-tests.py run on Python 3 again
Tue, 07 Mar 2017 16:27:32 -0800 rebase: move actual rebase into a single transaction
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 16:27:32 -0800] rev 31226
rebase: move actual rebase into a single transaction Previously, rebasing would open several transaction over the course of rebasing several commits. Opening a transaction can have notable overhead (like copying the dirstate) which can add up when rebasing many commits. This patch adds a single large transaction around the actual commit rebase operation, with a catch for intervention which serializes the current state if we need to drop back to the terminal for user intervention. Amazingly, almost all the tests seem to pass. On large repos with large working copies, this can speed up rebasing 7 commits by 25%. I'd expect the percentage to be a bit larger for rebasing even more commits. There are minor test changes because we're rolling back the entire transaction during unexpected exceptions instead of just stopping mid-rebase, so there's no more backup bundle. It also leave an unknown file in the working copy, since our clean up 'hg update' doesn't delete unknown files.
Tue, 07 Mar 2017 16:30:31 -0800 rebase: allow aborting if last-message.txt is missing
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 16:30:31 -0800] rev 31225
rebase: allow aborting if last-message.txt is missing Previously, if .hg/rebasestate existed but .hg/last-message.txt was missing, 'hg rebase --abort' would say there's no rebase in progress but 'hg checkout foo' would say 'abort: rebase in progress'. It turns out loading the collapse message will throw a "no rebase in progress" error if the file doesn't exist, even though .hg/rebasestate obviously indicates a rebase is in progress. The fix is to only throw an exception if we're trying to --continue, and to just eat the issues if we're doing --abort. This issue is exposed by us writing the rebase state earlier in the process. This will be used by later patches to ensure the user can appropriately 'hg rebase --abort' if there's a crash before the first the first commit has finished rebasing. Tests cover all of this. The only negative affect is we now require a hg rebase --abort in a very specific exception case, as shown in the test.
Tue, 07 Mar 2017 14:04:29 -0800 rebase: add storestatus support for transactions
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 14:04:29 -0800] rev 31224
rebase: add storestatus support for transactions This let's the status writing logic support transactions. This will be useful in a later patch where we add a transaction around the entire rebase.
Tue, 07 Mar 2017 14:11:44 -0800 rebase: move storestatus onto rebaseruntime
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 14:11:44 -0800] rev 31223
rebase: move storestatus onto rebaseruntime The rebaseruntime class already has the restorestatus function, so let's make it own the store status function too. This get's rid of a lot of unnecessary argument passing and will make a future patch cleaner that refactors storestatus to support transactions.
Tue, 07 Mar 2017 14:19:08 -0800 rebase: clear updatestate during rebase --abort in more cases
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 14:19:08 -0800] rev 31222
rebase: clear updatestate during rebase --abort in more cases Previously, rebase --abort would only call update if you were on a node that had already been rebased. This meant that if the rebase failed during the rebase of the first commit, the working copy would be left dirty (with a .hg/updatestate file) and rebase --abort would not have update to clean it up. The fix is to also perform an update if you're still on the target node or on the original working copy node (since the working copy may be dirty, we still need to do the update). We don't want to perform an update in all cases though because of issue4009. A subsequent patch makes this case much more common, since it causes the entire rebase transaction to rollback during unexpected exceptions. This causes the existing test-rebase-abort.t to cover this case.
Wed, 08 Mar 2017 00:49:15 +0530 repoview: convert attribute names to unicodes on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 08 Mar 2017 00:49:15 +0530] rev 31221
repoview: convert attribute names to unicodes on Python 3 In Python 3, the attribute names must be strings i.e. unicodes.
Wed, 08 Mar 2017 00:45:19 +0530 parsers: alias long to int on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 08 Mar 2017 00:45:19 +0530] rev 31220
parsers: alias long to int on Python 3
Wed, 08 Mar 2017 00:40:15 +0530 store: slice over a bytestring to get characters instead of ascii values
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 08 Mar 2017 00:40:15 +0530] rev 31219
store: slice over a bytestring to get characters instead of ascii values On Python 2, >>> a = b'abc' >>> a[1] 'b' Whereas on python 3, >>> a = b'abc' >>> a[1] 98 >>> a[1:2] b'b' This does not change behaviour on python 2.
Thu, 02 Mar 2017 13:27:42 +0100 vfs: use 'vfs' module directly in 'mercurial.hg'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 13:27:42 +0100] rev 31218
vfs: use 'vfs' module directly in 'mercurial.hg' Now that the 'vfs' classes moved in their own module, lets use the new module directly. We update code iteratively to help with possible bisect needs in the future.
Wed, 01 Mar 2017 11:00:12 +0100 vfs: extract 'vfs' class and related code to a new 'vfs' module (API)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 01 Mar 2017 11:00:12 +0100] rev 31217
vfs: extract 'vfs' class and related code to a new 'vfs' module (API) The 'scmutil' is growing large (1500+ lines) and 2/5 of it is related to vfs. We extract the 'vfs' related code in its own module get both module back to a better scale and clearer contents. We keep all the references available in 'scmutil' for now as many reference needs to be updated.
Thu, 02 Mar 2017 03:52:36 +0100 vfs: replace 'scmutil.opener' usage with 'scmutil.vfs'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 03:52:36 +0100] rev 31216
vfs: replace 'scmutil.opener' usage with 'scmutil.vfs' The 'vfs' class is the first class citizen for years. We remove all usages of the older API. This will let us remove the old API eventually.
Tue, 07 Mar 2017 12:52:00 -0800 fsmonitor: remove use of repo.opener
Durham Goode <durham@fb.com> [Tue, 07 Mar 2017 12:52:00 -0800] rev 31215
fsmonitor: remove use of repo.opener This has been deprecated, so we need to switch to the appropriate vfs apis.
Tue, 28 Feb 2017 15:19:08 +0100 help: align description of 'base rev' with reality [issue5488]
Kim Alvefur <zash@zash.se> [Tue, 28 Feb 2017 15:19:08 +0100] rev 31214
help: align description of 'base rev' with reality [issue5488] The text about revlogs seems to be wrong about -1 being used to indicate the start of a delta chain. Attempt to correct this.
Wed, 01 Mar 2017 18:37:34 -0800 help: fix internals.changegroups
Kyle Lippincott <spectral@google.com> [Wed, 01 Mar 2017 18:37:34 -0800] rev 31213
help: fix internals.changegroups Add information about tree manifests, copy edit the text and fix up a few ambiguities. The document also contains a few additional fixes from Siddharth Agarwal <sid0@fb.com>, who used it to build a parser for changegroups in Rust.
Fri, 03 Mar 2017 00:11:51 +0900 share: drop 'relshared' requirement as well
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Mar 2017 00:11:51 +0900] rev 31212
share: drop 'relshared' requirement as well
Fri, 03 Mar 2017 00:11:18 +0900 share: fix typo to drop 'shared' requirement on unshare
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Mar 2017 00:11:18 +0900] rev 31211
share: fix typo to drop 'shared' requirement on unshare This must be a typo and it seems correct to drop the requirement since the repo is no longer a shared repository.
Fri, 03 Mar 2017 02:57:06 +0900 similar: compare between actual file contents for exact identity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Mar 2017 02:57:06 +0900] rev 31210
similar: compare between actual file contents for exact identity Before this patch, similarity detection logic (for addremove and automv) depends entirely on SHA-1 digesting. But this causes incorrect rename detection, if: - removing file A and adding file B occur at same committing, and - SHA-1 hash values of file A and B are same This may prevent security experts from managing sample files for SHAttered issue in Mercurial repository, for example. https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html https://shattered.it/ Hash collision itself isn't so serious for core repository functionality of Mercurial, described by mpm as below, though. https://www.mercurial-scm.org/wiki/mpm/SHA1 This patch compares between actual file contents after hash comparison for exact identity. Even after this patch, SHA-1 is still used, because it is reasonable enough to quickly detect existence of "(almost) same" file. - replacing SHA-1 causes decreasing performance, and - replacement of it has ambiguity, yet Getting content of removed file (= rfctx.data()) at each exact comparison should be cheap enough, even though getting content of added one costs much. ======= ============== ===================== file fctx data() reads from ======= ============== ===================== removed filectx in-memory revlog data added workingfilectx storage ======= ============== =====================
Thu, 02 Mar 2017 21:49:30 -0800 localrepo: handle rename with hardlinks properly
Jun Wu <quark@fb.com> [Thu, 02 Mar 2017 21:49:30 -0800] rev 31209
localrepo: handle rename with hardlinks properly In "aftertrans", we rename "journal.*" to "undo.*". We expect "journal.*" files to disappear after renaming. However, if "journal.foo" and "undo.foo" refer to a same file (hardlink), rename may be a no-op, leaving both files on disk, according to Linux manpage [1]: If oldpath and newpath are existing hard links referring to the same file, then rename() does nothing, and returns a suc‐ cess status. The POSIX specification [2] is not very clear about what to do. To be safe, remove "undo.*" before the rename so "journal.*" cannot be left on disk. [1]: http://man7.org/linux/man-pages/man2/rename.2.html [2]: http://pubs.opengroup.org/onlinepubs/9699919799/
Wed, 01 Mar 2017 18:21:06 -0800 dirstate: avoid unnecessary load+dump during backup
Jun Wu <quark@fb.com> [Wed, 01 Mar 2017 18:21:06 -0800] rev 31208
dirstate: avoid unnecessary load+dump during backup Previously, dirstate.savebackup unconditionally dumps the dirstate map to disk. It may require loading dirstate first to be able to dump it. Those operations could be expensive if the dirstate is big, and could be avoided if we know the dirstate file is up-to-date. This patch avoids the read and write if the dirstate is clean. In that case, we just do a plain copy without any serialization. This should make commands which use transactions but do not touch dirstate faster. For example, "hg bookmark -r REV NAME".
Wed, 01 Mar 2017 17:59:21 -0800 dirstate: try to use hardlink to backup dirstate
Jun Wu <quark@fb.com> [Wed, 01 Mar 2017 17:59:21 -0800] rev 31207
dirstate: try to use hardlink to backup dirstate This should be more efficient once util.copyfile has real hardlink support.
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 31206
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 31205
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 31204
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 31203
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 31202
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 31201
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 31200
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 31199
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 31198
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 31197
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 31196
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 31195
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 31194
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 31193
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 31192
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 31191
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 31190
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 31189
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 31188
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 31187
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 31186
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 31185
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 31184
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 31183
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 31182
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 31181
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 31180
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 31179
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 31178
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 31177
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 31176
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 31175
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 31174
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 31173
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 31172
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 31171
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 31170
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 31169
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 31168
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 31167
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 31166
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 31165
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 31164
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 31163
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 31162
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 31161
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 31160
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 31159
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".
Mon, 27 Feb 2017 14:27:22 -0800 merge: drop obsolete non-linear cases from docstring table
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Feb 2017 14:27:22 -0800] rev 31158
merge: drop obsolete non-linear cases from docstring table Since 6b1fc09c699a (update: change default destination to tipmost descendant (issue4673) (BC), 2016-02-02), non-linear updates can no longer happen if the user doesn't specify a destination, so we can drop these case from the table in the docstring of merge.update().
Wed, 24 Feb 2016 14:44:14 -0800 revert: move code dealing with deletions closer together
Martin von Zweigbergk <martinvonz@google.com> [Wed, 24 Feb 2016 14:44:14 -0800] rev 31157
revert: move code dealing with deletions closer together
Fri, 03 Mar 2017 14:10:06 -0500 ui: fix configlist on Python 3
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 14:10:06 -0500] rev 31156
ui: fix configlist on Python 3 Since we're working on bytestrings, we have to use [offset:offset+1] to get consistent behavior on Python 2 and 3. I've only tested the _parse_plain closure, not the _parse_quote one, but I have no real reason to expect the latter to be broken since the fixes were fairly mechanical.
Fri, 03 Mar 2017 12:55:49 -0500 config: pass some optional args as keywords
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 12:55:49 -0500] rev 31155
config: pass some optional args as keywords This makes it a little more obvious that self.read is being passed as include, which took me a moment to figure out.
Fri, 03 Mar 2017 13:28:24 -0500 config: load included config files in binary mode
Augie Fackler <raf@durin42.com> [Fri, 03 Mar 2017 13:28:24 -0500] rev 31154
config: load included config files in binary mode I guess we've been getting lucky that this works in Python 2. This fixes loading included config files in Python 3 (it used to fail on the "somebody set up us the BOM" check.)
Wed, 01 Mar 2017 16:39:48 -0800 manifest: remove _repo from manifestctx objects
Durham Goode <durham@fb.com> [Wed, 01 Mar 2017 16:39:48 -0800] rev 31153
manifest: remove _repo from manifestctx objects We were storing the repo on the manifestctx objects so that they could access the manifestlog via repo.manifestlog, which would refresh the structure if it became out of date. This caused probems however when we want to have multiple manifest logs in memory at once, like when transitioning to tree manifest from flat manifests, since a tree manifest would try to access sub-trees via repo.manifestlog[node], which was the flat manifest. The solution is to just not store the repo, and instead store the manifestlog that created this context. This removes the invalidation when the in memory manifestlog becomes out of date, but people should probably not be keeping ctx's around that long anyway.
Wed, 01 Mar 2017 15:50:01 -0800 phases: remove experimental.nativephaseskillswitch
Jun Wu <quark@fb.com> [Wed, 01 Mar 2017 15:50:01 -0800] rev 31152
phases: remove experimental.nativephaseskillswitch The native code has been used for a long time. Therefore drop the experimental config option.
Wed, 01 Mar 2017 16:35:57 -0800 manifest: allow specifying the revlog filename
Durham Goode <durham@fb.com> [Wed, 01 Mar 2017 16:35:57 -0800] rev 31151
manifest: allow specifying the revlog filename Previously we had hardcoded the manifest filename to be 00manifest.i. In our external treemanifest extension, we want to allow writing a treemanifest side by side with a flat manifest, so we need to be able to store the root revisions at a different location (in our extension we use 00manifesttree.i). This patches moves the revlog name to a parameter so we can adjust it.
Fri, 03 Mar 2017 15:30:48 +0530 py3: drop unrequired code from __init__.py
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 03 Mar 2017 15:30:48 +0530] rev 31150
py3: drop unrequired code from __init__.py Once we are using pycompat.open(), we don't need this hack to convert the second argument to unicodes. So removing this.
Fri, 03 Mar 2017 13:04:32 +0530 py3: add pycompat.open and replace open() calls
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 03 Mar 2017 13:04:32 +0530] rev 31149
py3: add pycompat.open and replace open() calls open() requires mode argument as unicodes on Python 3. This patch introduces pycompat.open() which is inserted to files using transformer and replaces builtins.open() calls.
Fri, 05 Aug 2016 13:56:10 +0200 localrepo: deprecate 'repo.opener' (API)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 13:56:10 +0200] rev 31148
localrepo: deprecate 'repo.opener' (API) The "new" 'repo.vfs' attribute have been around for almost 5 years. I think we can deprecate the old form now ;-)
Thu, 02 Mar 2017 03:24:58 +0100 statichttp: use 'repo.vfs' as the main attribute
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 03:24:58 +0100] rev 31147
statichttp: use 'repo.vfs' as the main attribute We are about to deprecate the repo.opener attribute, we prepare the static http code to be ready for this change.
Thu, 02 Mar 2017 03:23:18 +0100 clonebundle: use 'repo.vfs' instead of 'repo.opener'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Mar 2017 03:23:18 +0100] rev 31146
clonebundle: use 'repo.vfs' instead of 'repo.opener' The later is a 5 years old form.
Fri, 05 Aug 2016 13:53:45 +0200 localrepo: deprecated 'repo.wopener' (API)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 13:53:45 +0200] rev 31145
localrepo: deprecated 'repo.wopener' (API) The "new" 'repo.wvfs' attribute have been around for almost 5 years. I think we can deprecate the old form now ;-)
Fri, 05 Aug 2016 13:49:05 +0200 localrepo: add some comment about role of various vfs object
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 05 Aug 2016 13:49:05 +0200] rev 31144
localrepo: add some comment about role of various vfs object This should make things clearer for most people.
Thu, 19 Jan 2017 16:27:08 -0500 tests: un-nest the `order` repo in test-rebase-scenario-global
Augie Fackler <augie@google.com> [Thu, 19 Jan 2017 16:27:08 -0500] rev 31143
tests: un-nest the `order` repo in test-rebase-scenario-global This wasn't hurting anything, but it's more in line with how we manage other tests.
Mon, 06 Feb 2017 15:19:32 -0500 osx: install bash and zsh completions by default
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 15:19:32 -0500] rev 31142
osx: install bash and zsh completions by default The zsh location appears to be on the default $fpath for zsh. bash, on the other hand, appears to have no default location for completion scripts, so we follow the lead of Apple's Git distribution and select a semi-arbitrary place in /usr/local for the file.
Thu, 02 Mar 2017 10:12:40 -0800 util: add allowhardlinks module variable
Durham Goode <durham@fb.com> [Thu, 02 Mar 2017 10:12:40 -0800] rev 31141
util: add allowhardlinks module variable To enable extensions to enable hardlinks for certain environments, let's move the 'if False' to be an 'if allowhardlinks' and let extensions modify the allowhardlinks variable. Tests on linux ext4 pass with it set to True and to False.
Thu, 02 Mar 2017 20:30:56 -0500 merge with stable
Augie Fackler <raf@durin42.com> [Thu, 02 Mar 2017 20:30:56 -0500] rev 31140
merge with stable
Thu, 02 Mar 2017 20:19:45 -0500 Added signature for changeset 25703b624d27 stable
Augie Fackler <raf@durin42.com> [Thu, 02 Mar 2017 20:19:45 -0500] rev 31139
Added signature for changeset 25703b624d27
Thu, 02 Mar 2017 20:19:43 -0500 Added tag 4.1.1 for changeset 25703b624d27 stable
Augie Fackler <raf@durin42.com> [Thu, 02 Mar 2017 20:19:43 -0500] rev 31138
Added tag 4.1.1 for changeset 25703b624d27
Thu, 02 Mar 2017 20:07:35 -0500 merge with i18n stable 4.1.1
Augie Fackler <raf@durin42.com> [Thu, 02 Mar 2017 20:07:35 -0500] rev 31137
merge with i18n
Thu, 02 Mar 2017 11:08:20 -0300 i18n-pt_BR: synchronized with 7074589cf22a stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 02 Mar 2017 11:08:20 -0300] rev 31136
i18n-pt_BR: synchronized with 7074589cf22a
Wed, 01 Mar 2017 16:43:22 +0900 i18n-ja: synchronized with 7074589cf22a stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 01 Mar 2017 16:43:22 +0900] rev 31135
i18n-ja: synchronized with 7074589cf22a
Wed, 01 Mar 2017 19:51:05 -0800 revert: remove set(mf) because it's O(manifest)
Durham Goode <durham@fb.com> [Wed, 01 Mar 2017 19:51:05 -0800] rev 31134
revert: remove set(mf) because it's O(manifest) The revert code had a 'set(manifest)' line in it, which has a runtime equivalent to the size of the manifest. With alternative manifest implementations, like treemanifest, this can be extra expensive. Let's rewrite it to be O(changes) instead of O(manifest size).
Mon, 13 Feb 2017 14:05:24 +0100 share: add --relative flag to store a relative path to the source
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Mon, 13 Feb 2017 14:05:24 +0100] rev 31133
share: add --relative flag to store a relative path to the source Storing a relative path the source repository is useful when exporting repositories over the network or when they're located on external drives where the mountpoint isn't always fixed. Currently, Mercurial interprets paths in `.hg/shared` relative to $PWD. I suspect this is very much unintentional, and you have to manually edit `.hg/shared` in order to trigger this behaviour. However, on the off chance that someone might rely on it, I added a new capability called 'relshared'. In addition, this makes earlier versions of Mercurial fail with a graceful error. I should note that I haven't tested this patch on Windows.
Wed, 15 Feb 2017 11:49:12 -0800 minirst: support passing admonitions into findadmonitions() and parse()
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Feb 2017 11:49:12 -0800] rev 31132
minirst: support passing admonitions into findadmonitions() and parse() This will allow consumers to declare a custom list of admonitions to parse. Without this patch, custom admonitions would get removed when prunecomments() is run. We could add an argument controlling whether prunecomments() is run. However, it is better to convert the "paragraph" block to an "admonition" block so consumers don't have to parse for custom admonitions.
Wed, 15 Feb 2017 11:47:14 -0800 minirst: dynamically compile admonitions regexp
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Feb 2017 11:47:14 -0800] rev 31131
minirst: dynamically compile admonitions regexp Currently, parsing admonitions uses a static regular expression created from a pre-defined list of admonitions. A future patch will introduce a feature that needs to parse custom admonitions. Prepare for this by compiling the admonitions regular expression during each function invocation. Strictly speaking, there is a slight performance loss here. But we only run this code as part of displaying help text. I don't think the loss will be noticeable and I don't think we care if it were.
Wed, 15 Feb 2017 16:42:17 -0800 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Feb 2017 16:42:17 -0800] rev 31130
minirst: detect bullet lists using asterisks Previously, the "bullet" regular expression excluded the asterisk ('*') as a character denoting a bulleted list. Why I'm not sure because the asterisk seems to be the canonical bullet character in reST these days. This patch makes asterisk-prefixed lines parse as bulleted lists.
Wed, 01 Mar 2017 20:22:04 +0100 color: update the help table
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 01 Mar 2017 20:22:04 +0100] rev 31129
color: update the help table We also need to reference the new topic in the great old help table.
Sat, 25 Feb 2017 14:09:55 +0900 ui: remove superfluous indent in _write()
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 14:09:55 +0900] rev 31128
ui: remove superfluous indent in _write()
Sat, 18 Feb 2017 17:37:52 +0900 smartset: reorder initialization of baseset in more intuitive way
Yuya Nishihara <yuya@tcha.org> [Sat, 18 Feb 2017 17:37:52 +0900] rev 31127
smartset: reorder initialization of baseset in more intuitive way What we want to do is to assign either _set or _list per the given data type.
Tue, 28 Feb 2017 20:23:10 +0100 config: update the Windows example config file
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 28 Feb 2017 20:23:10 +0100] rev 31126
config: update the Windows example config file We move from the color extensions to the 'ui.color' config.
Tue, 21 Feb 2017 22:53:38 +0100 help: use 'churn' instead of 'color' as an example extension
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 21 Feb 2017 22:53:38 +0100] rev 31125
help: use 'churn' instead of 'color' as an example extension The 'color' extensions is now deprecated.
Tue, 21 Feb 2017 22:17:33 +0100 config: suggest the 'ui.color' instead of the 'color' extension
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 21 Feb 2017 22:17:33 +0100] rev 31124
config: suggest the 'ui.color' instead of the 'color' extension The extensions is deprecated now so we should offer the core way to handle color instead.
Tue, 21 Feb 2017 20:04:55 +0100 color: update main documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 21 Feb 2017 20:04:55 +0100] rev 31123
color: update main documentation Now that the feature no longer lives in the extension, we document it in the help of the core config. This include the new 'ui.color' option introduced in the previous changesets. As a result the color extensions can now be deprecated. This is a documentation patch only; color is still disabled by default.
Tue, 28 Feb 2017 20:12:08 +0100 pager: drop the 'color' dependant code
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 28 Feb 2017 20:12:08 +0100] rev 31122
pager: drop the 'color' dependant code The 'color' implementation is in core and no longer wrap '_runcommand'. We drop the extra complexity.
Sat, 25 Feb 2017 19:43:14 +0100 color: cleanup 'debugcolor' logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Feb 2017 19:43:14 +0100] rev 31121
color: cleanup 'debugcolor' logic Now that style are carried by the 'ui' object, we no longer need complicated logic to restore the original style. We just need to copy the 'ui' and work on the copied version.
Tue, 21 Feb 2017 18:41:37 +0100 color: move 'debugcolor' into the 'debugcommands' modules
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 21 Feb 2017 18:41:37 +0100] rev 31120
color: move 'debugcolor' into the 'debugcommands' modules This is the last bits we needed to move out of the extensions. 'hgext/color.py' now only contains logic to changes the default color behavior to 'auto'. However, more cleanups are on the way and we need to document the new config directly in core.
Tue, 28 Feb 2017 11:13:25 -0800 merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Feb 2017 11:13:25 -0800] rev 31119
merge with stable
Sat, 25 Feb 2017 12:48:50 +0900 worker: flush messages written by child processes before exit stable
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 12:48:50 +0900] rev 31118
worker: flush messages written by child processes before exit I found some child outputs were lost while testing the previous patch. Since os._exit() does nothing special, we need to do that explicitly.
Sat, 25 Feb 2017 12:33:37 +0900 worker: add basic test to ensure child processes are managed well stable
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Feb 2017 12:33:37 +0900] rev 31117
worker: add basic test to ensure child processes are managed well This should catch the bug fixed by "worker: ignore meaningless exit status indication returned by os.waitpid()." Before, worker.py was untested since test repositories are relatively small.
Sun, 06 Nov 2016 20:16:54 +0100 color: rename '_styles' to '_defaultstyles' for clarity
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Nov 2016 20:16:54 +0100] rev 31116
color: rename '_styles' to '_defaultstyles' for clarity This should make it clear the dict is only used for new config. Extensions should not modify it directly anyway since we have 'extraloader' logic for loading '_styles' too.
Sun, 06 Nov 2016 20:16:01 +0100 color: move 'styles' definition on the 'ui' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Nov 2016 20:16:01 +0100] rev 31115
color: move 'styles' definition on the 'ui' object Same logic as for '_terminfoparams'. The content depends on the config so it should be specific to each 'ui instance.
Sun, 06 Nov 2016 20:10:53 +0100 color: pass 'ui' to 'win32print'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Nov 2016 20:10:53 +0100] rev 31114
color: pass 'ui' to 'win32print' Same logic as before,'win32print' relies on some data we will move on the 'ui' object soon, we update the API beforehand for clarity.
Sat, 25 Feb 2017 15:00:51 +0100 color: move the dict with terminfo parameters on the ui object
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Feb 2017 15:00:51 +0100] rev 31113
color: move the dict with terminfo parameters on the ui object This dictionnary is affected by the content of the config, so we should have one for each ui config. We rename the global dict to '_baseterminfoparams' to make the situation clearer.
Sat, 25 Feb 2017 15:00:44 +0100 color: add ui to effect rendering
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Feb 2017 15:00:44 +0100] rev 31112
color: add ui to effect rendering We'll carry more and more color specific data on the ui object. This will help isolating different color configuration from each other. For example repository config might configure special style that should not affect other ui object. The first step is to make sure the ui object is available were we will needs it.
Sat, 25 Feb 2017 18:34:01 +0100 color: initialize color for the localrepo ui
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Feb 2017 18:34:01 +0100] rev 31111
color: initialize color for the localrepo ui The 'ui' object dedicated to a 'localrepo' is independent from the one available in dispatch (and 'uisetup'). In addition, it is created from the 'baseui' (apparently for good reason). As a result, we need to run the color setup on it after the local repository config is read. This was overlooked when the rest of the initialization changed but did not had impact yet because all setup is still global. We fix it before it is too late.
Sat, 25 Feb 2017 19:44:23 +0100 color: add a 'ui.color' option to control color behavior
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Feb 2017 19:44:23 +0100] rev 31110
color: add a 'ui.color' option to control color behavior This new option control whether or not color will be used. It mirror the behavior of '--color'. I usually avoid adding new option to '[ui]' as the section is already filled with many option. However, I feel like 'color' is central enough to deserves a spot in this '[ui]' section. For now the option is not documented so it is still marked as experimental. Once it get documented and official, we should be able to deprecate the color extensions. There is more cleanup to do before that documentation is written, but we need this option early to made them. Having that option will allow for more cleanup of the initialisation process and proper separation between color configuration.
Tue, 28 Feb 2017 11:42:07 +0100 color: reinvent dictionary
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 28 Feb 2017 11:42:07 +0100] rev 31109
color: reinvent dictionary move the module lever dictionary declaration to a more standard (and practical indentation)
(0) -30000 -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 tip