Fri, 26 May 2017 03:23:56 +0200 test-obsolete-bundle-strip: test bundling in the sixth case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:23:56 +0200] rev 32628
test-obsolete-bundle-strip: test bundling in the sixth case Updating all cases in the file at the same time is a bit overwhelming and harder to double check. So each case come in its own patch.
Fri, 26 May 2017 03:20:40 +0200 test-obsolete-bundle-strip: test bundling in the fifth case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:20:40 +0200] rev 32627
test-obsolete-bundle-strip: test bundling in the fifth case Updating all cases in the file at the same time is a bit overwhelming and harder to double check. So each case come in its own patch.
Fri, 26 May 2017 03:20:25 +0200 test-obsolete-bundle-strip: test bundling in the fourth case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:20:25 +0200] rev 32626
test-obsolete-bundle-strip: test bundling in the fourth case Updating all cases in the file at the same time is a bit overwhelming and harder to double check. So each case come in its own patch.
Fri, 26 May 2017 03:19:11 +0200 test-obsolete-bundle-strip: test bundling in the third case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:19:11 +0200] rev 32625
test-obsolete-bundle-strip: test bundling in the third case Updating all cases in the file at the same time is a bit overwhelming and harder to double check. So each case come in its own patch.
Fri, 26 May 2017 03:15:53 +0200 test-obsolete-bundle-strip: test bundling in the second case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:15:53 +0200] rev 32624
test-obsolete-bundle-strip: test bundling in the second case Updating all cases in the file at the same time is a bit overwhelming and harder to double check. So each case come in its own patch.
Fri, 26 May 2017 03:11:53 +0200 test-obsolete-bundle-strip: test bundling in the first case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:11:53 +0200] rev 32623
test-obsolete-bundle-strip: test bundling in the first case We adds a shell function checking that the relevant markers and the bundled markers matches. Updating all cases in the file at the same time is a bit overwhelming and harder to double checks. So each cases come in its own patch.
Thu, 25 May 2017 16:50:23 +0200 obsolete: raise richer exception on unknown version
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 May 2017 16:50:23 +0200] rev 32622
obsolete: raise richer exception on unknown version We raise a more precise subclass of Abort with details about the faulty version. This will be used to detect this case and display some information in debugbundle.
Wed, 31 May 2017 20:07:08 -0700 import-checker: add hgdemandimport to local modules
Siddharth Agarwal <sid0@fb.com> [Wed, 31 May 2017 20:07:08 -0700] rev 32621
import-checker: add hgdemandimport to local modules This fixes test-check-module-imports.t.
Wed, 31 May 2017 19:46:04 -0700 rebase: drop unnecessary parentchange call
Siddharth Agarwal <sid0@fb.com> [Wed, 31 May 2017 19:46:04 -0700] rev 32620
rebase: drop unnecessary parentchange call We're calling localrepo.setparents here, not dirstate.setparents. localrepo.setparents calls dirstate.parentchange already.
Tue, 30 May 2017 13:16:32 -0700 hidden: remove unnecessary guard condition
Martin von Zweigbergk <martinvonz@google.com> [Tue, 30 May 2017 13:16:32 -0700] rev 32619
hidden: remove unnecessary guard condition The "if visible" guard is now pretty pointless, because the function call it guards will do almost no work anyway when there are no visible revisions. We can also stop wrapping "visible" in a set since it just needs to be an iterable now.
Tue, 30 May 2017 10:27:20 -0700 hidden: subtract pinned revs from hidden earlier
Martin von Zweigbergk <martinvonz@google.com> [Tue, 30 May 2017 10:27:20 -0700] rev 32618
hidden: subtract pinned revs from hidden earlier The pinned revs are simply revisions that should not be hidden even if hideablerevs() says that should. Let's make that clear by simply setting "hidden = hideablerevs() - pinnedrevs()" early on.
Sat, 27 May 2017 23:05:10 -0700 hidden: make _revealancestors() reveal ancestors exclusively
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 23:05:10 -0700] rev 32617
hidden: make _revealancestors() reveal ancestors exclusively I think this seems more expected. It also prepares for the next commit.
Sat, 27 May 2017 22:55:19 -0700 hidden: remove _consistencyblockers()
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 22:55:19 -0700] rev 32616
hidden: remove _consistencyblockers() Roughly speaking, we currently do this to reveal hidden ancestors of visible revisions: 1. Iterate over all visible non-public revisions and see if they have hidden parents 2. For each revision found in step (1) walk the chain of hidden commits and reveal it We can simplify that by skipping step (1) and doing step (2) from all visible non-public revisions instead. This doesn't seem to have much impact on "perfvolatilesets". Before: ! obsolete ! wall 0.004616 comb 0.000000 user 0.000000 sys 0.000000 (best of 570) ! visible ! wall 0.008235 comb 0.010000 user 0.010000 sys 0.000000 (best of 326) After: ! obsolete ! wall 0.004727 comb 0.010000 user 0.010000 sys 0.000000 (best of 543) ! visible ! wall 0.008371 comb 0.000000 user 0.000000 sys 0.000000 (best of 324)
Sat, 27 May 2017 22:43:37 -0700 hidden: pass revs to iterate into _consistencyblockers()
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 22:43:37 -0700] rev 32615
hidden: pass revs to iterate into _consistencyblockers() Instead of passing the domain into _consistencyblockers() and having the function calculate the set of revisions to iterate over, let the caller do it. This is just a minor refactoring to make future changes simpler.
Sat, 27 May 2017 22:10:20 -0700 hidden: remove unnecessary 'domain' parameter from _revealancestors()
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 22:10:20 -0700] rev 32614
hidden: remove unnecessary 'domain' parameter from _revealancestors() The function will stop searching as soon as it runs into a non-hidden revision, so there is no need to restrict by the domain (of mutable revisions) as well. This doesn't seem to have much impact on "perfvolatilesets". Before: ! obsolete ! wall 0.004903 comb 0.000000 user 0.000000 sys 0.000000 (best of 535) ! visible ! wall 0.008913 comb 0.010000 user 0.010000 sys 0.000000 (best of 300) After: ! obsolete ! wall 0.004616 comb 0.000000 user 0.000000 sys 0.000000 (best of 570) ! visible ! wall 0.008235 comb 0.010000 user 0.010000 sys 0.000000 (best of 326)
Sat, 27 May 2017 21:17:06 -0700 hidden: change _domainancestors() to _revealancestors()
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 21:17:06 -0700] rev 32613
hidden: change _domainancestors() to _revealancestors() This change makes the function actually reveal the ancestors by removing them from the hidden set. This prepares for further simplification. Note that the function will now only reveal contiguous chains of hidden revisions, but that's fine because we always pass it an immediate child of any revision that should be revealed (or the revision itself). This doesn't seem to have much impact on "perfvolatilesets". Before: ! obsolete ! wall 0.004672 comb 0.010000 user 0.010000 sys 0.000000 (best of 590) ! visible ! wall 0.008936 comb 0.010000 user 0.010000 sys 0.000000 (best of 322) After: ! obsolete ! wall 0.004903 comb 0.000000 user 0.000000 sys 0.000000 (best of 535) ! visible ! wall 0.008913 comb 0.010000 user 0.010000 sys 0.000000 (best of 300)
Sat, 27 May 2017 21:08:51 -0700 hidden: rename "revealedrevs" to "pinnedrevs" (API)
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 21:08:51 -0700] rev 32612
hidden: rename "revealedrevs" to "pinnedrevs" (API) E.g. tags and bookmarks can reveal revisions that would otherwise be hidden. A revision can also be revealed because one if its descendants is visible. Let's use the term "pinned" for the former case (bookmarks etc.).
Sat, 27 May 2017 21:02:17 -0700 hidden: drop obsolete comment about cacheability
Martin von Zweigbergk <martinvonz@google.com> [Sat, 27 May 2017 21:02:17 -0700] rev 32611
hidden: drop obsolete comment about cacheability The cache was recently dropped, so I believe the comment is now obsolete.
Thu, 25 May 2017 21:53:44 +0900 cat: add formatter support
Yuya Nishihara <yuya@tcha.org> [Thu, 25 May 2017 21:53:44 +0900] rev 32610
cat: add formatter support This is an example showing how formatter can handle the --output option. git subrepo isn't supported for now.
Sat, 27 May 2017 17:58:36 +0900 cat: use with statement to close output file
Yuya Nishihara <yuya@tcha.org> [Sat, 27 May 2017 17:58:36 +0900] rev 32609
cat: use with statement to close output file
Thu, 25 May 2017 21:43:09 +0900 cat: stop using makefileobj()
Yuya Nishihara <yuya@tcha.org> [Thu, 25 May 2017 21:43:09 +0900] rev 32608
cat: stop using makefileobj() Prepares for porting to the formatter API. We won't be able to utilize the abstraction provided by makefilename() because formatter must be instantiated per file.
Sat, 27 May 2017 17:44:26 +0900 formatter: add nullformatter
Yuya Nishihara <yuya@tcha.org> [Sat, 27 May 2017 17:44:26 +0900] rev 32607
formatter: add nullformatter This can be used as a placeholder variable.
Sat, 27 May 2017 17:40:18 +0900 formatter: add helper to create a formatter optionally backed by file
Yuya Nishihara <yuya@tcha.org> [Sat, 27 May 2017 17:40:18 +0900] rev 32606
formatter: add helper to create a formatter optionally backed by file To make things simple, openformatter() and maybereopen() have no support for a plain object API. Callers must use the "with" statement. Unlike cmdutil.makefileobj(), append mode ('ab') isn't supported by these functions. This is because JSON output can't be simply concatenated. Perhaps cmdutil.export() will have to build a {filename: [revs...]} map first and write revs per file.
Sun, 18 Jan 2015 18:04:44 +0900 formatter: add option to redirect output to file object
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jan 2015 18:04:44 +0900] rev 32605
formatter: add option to redirect output to file object Commands like 'export' have --output=OUTFILESPEC option, so we need a way to write formatter output optionally to a file.
Wed, 31 May 2017 10:35:10 -0700 tests: fix typo in "flagprocesor"
Martin von Zweigbergk <martinvonz@google.com> [Wed, 31 May 2017 10:35:10 -0700] rev 32604
tests: fix typo in "flagprocesor"
Tue, 30 May 2017 06:22:14 -0700 contrib: remove unnecessary debug output from editmergeps.ps1
Kostia Balytskyi <ikostia@fb.com> [Tue, 30 May 2017 06:22:14 -0700] rev 32603
contrib: remove unnecessary debug output from editmergeps.ps1
Tue, 30 May 2017 06:17:51 -0700 contrib: fix a bug preventing editmergeps.ps1 from running unknonw editors
Kostia Balytskyi <ikostia@fb.com> [Tue, 30 May 2017 06:17:51 -0700] rev 32602
contrib: fix a bug preventing editmergeps.ps1 from running unknonw editors '$ executable' is not a way to run executable in powershell, '& executable' is instead. Found this when testing with regular Windows notepad.
Tue, 30 May 2017 06:02:31 -0700 contrib: make editmergeps use -NoNewWindow option in Start-Process cmdlet
Kostia Balytskyi <ikostia@fb.com> [Tue, 30 May 2017 06:02:31 -0700] rev 32601
contrib: make editmergeps use -NoNewWindow option in Start-Process cmdlet Running 'Start-Process -Wait "vim" "+10" "filename"' from PowerShell actually spawns a separate cmd window to run vim in. This looks ugly and in most cases not what user wants. During my initial testing I was using the Cmder app, which made me not notice this (it captures new windows as new tabs).
Tue, 30 May 2017 05:56:48 -0700 contrib: run editmergeps.ps1 from the same location as editmergeps.bat
Kostia Balytskyi <ikostia@fb.com> [Tue, 30 May 2017 05:56:48 -0700] rev 32600
contrib: run editmergeps.ps1 from the same location as editmergeps.bat This change is needed for cases when user does not put editmergeps.bat directly into PATH, but rather uses 'merge-tools.editmergeps.executable' config option to provide a full path to editmergeps.bat. In such cases, editmergeps.ps1 cannot be run simply by name, it needs a full path. In BATCH file %~dp0 stands for the directory in which the original file is located.
Sun, 21 May 2017 16:57:32 +0900 help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org> [Sun, 21 May 2017 16:57:32 +0900] rev 32599
help: pass commands module by argument This removes import cycle.
Mon, 29 May 2017 06:06:13 -0700 copies: introduce getdstfctx
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 06:06:13 -0700] rev 32598
copies: introduce getdstfctx Previously `c2` may had an incorrect linkrev because getsrcfctx set wrong _descendantrev. getsrcfctx() sets descendant rev equals to srcctx.rev() (see _makegetfctx()), but for `c2` descendant rev should be dstctx. While we were lucky it didn't broke copytracing it made it significantly slower in some cases. Besides it broke some external extensions, for example remotefilelog.
Mon, 29 May 2017 05:58:08 -0700 copies: rename getfctx to getsrcfctx
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:58:08 -0700] rev 32597
copies: rename getfctx to getsrcfctx In the next patch we'll use getdstfctx. Let's rename getfctx to getsrcfctx in this patch.
Mon, 29 May 2017 05:57:25 -0700 copies: remove msrc and mdst parameters
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:57:25 -0700] rev 32596
copies: remove msrc and mdst parameters This function already has lots of parameters. And we can get manifests from contexts. So let's get msrc and mdst parameters from srcctx and dstctx.
Mon, 29 May 2017 05:57:03 -0700 copies: add dstctx parameter
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:57:03 -0700] rev 32595
copies: add dstctx parameter Add parameter with destination context
Mon, 29 May 2017 05:56:17 -0700 copies: rename ctx to srcctx
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:56:17 -0700] rev 32594
copies: rename ctx to srcctx In the next diff we'll pass new dstctx parameter. Let's rename ctx to srcctx in this patch.
Mon, 29 May 2017 05:52:15 -0700 copies: rename m2 to mdst
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:52:15 -0700] rev 32593
copies: rename m2 to mdst Small refactoring to rename m2 to more clearer mdst.
Mon, 29 May 2017 05:52:15 -0700 copies: rename m1 to msrc
Stanislau Hlebik <stash@fb.com> [Mon, 29 May 2017 05:52:15 -0700] rev 32592
copies: rename m1 to msrc Small refactoring that renames `m1` parameter name to a more clearer name `msrc`.
Fri, 26 May 2017 13:27:21 -0700 transaction: delete callbacks after use
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 26 May 2017 13:27:21 -0700] rev 32591
transaction: delete callbacks after use Before this change, localrepository instances that performed multiple transactions would leak transaction objects. This could occur when running `hg convert`. When running `hg convert`, the leak would be ~90 MB per 10,000 changesets as measured with the Mercurial repo itself. The leak I tracked down involved the "validate" closure from localrepository.transaction(). It appeared to be keeping a reference to the original transaction via __closure__. __del__ semantics and a circular reference involving the repo object may have also come into play. Attempting to refactor the "validate" closure proved to be difficult because the "tr" reference in that closure may reference an object that isn't created until transaction.__init__ is called. And the "validate" closure is passed as an argument to transaction.__init__. Plus there is a giant warning comment in "validate" about how hacky it is. I did not want to venture into the dragon den. Anyway, we've had problems with transactions causing leaks before. The solution then (14e683d6b273) is the same as the solution in this patch: drop references to callbacks after they are called. This not only breaks cycles in core Mercurial but can help break cycles in extensions that accidentally introduce them. While I only tracked down a leak due to self.validator, since this is the 2nd time I've tracked down leaks due to transaction callbacks I figure enough is enough and we should prevent the class of leak from occurring regardless of the variable. That's why all callback variables are now nuked.
Fri, 19 May 2017 13:16:15 -0700 match: remove special-casing of always-matching patterns in patternmatcher
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 May 2017 13:16:15 -0700] rev 32590
match: remove special-casing of always-matching patterns in patternmatcher This moves the optimization for patterns that match everything to the caller, so we can remove it from patternmatcher. Note that we need to teach alwaysmatcher to use relative paths now in cases like "hg files .." from inside mercurial/, because while it still matches everything, paths should be printed relative to the working directory.
Fri, 19 May 2017 12:47:45 -0700 match: move normalize() call out of matcher constructors
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 May 2017 12:47:45 -0700] rev 32589
match: move normalize() call out of matcher constructors By passing in the result of the normalize() call, we prepare for moving the special handling of patterns that always match out of the patternmatcher. It also lets us remove many of the arguments from the matcher, because they were passed only the the normalize function (we could have removed the arguments by binding them to the function instead of moving the normalize() call out).
Fri, 19 May 2017 11:58:16 -0700 match: drop support for empty pattern list in patternmatcher
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 May 2017 11:58:16 -0700] rev 32588
match: drop support for empty pattern list in patternmatcher Since the caller now deals with empty pattern lists, we can drop that support in the patternmatcher. It now gets the more logical behavior of matching nothing when no patterns are given (although there is no in-core caller that will pass no patterns).
Sat, 20 May 2017 23:49:14 -0700 match: optimize visitdir() for when no explicit files are listed
Martin von Zweigbergk <martinvonz@google.com> [Sat, 20 May 2017 23:49:14 -0700] rev 32587
match: optimize visitdir() for when no explicit files are listed In patternmatcher, we used to say that all directories should be visited if no explicit files were listed, because the case of empty _files usually implied that no patterns were given (which in turns meant that everything should match). However, this made e.g. "hg files -r . rootfilesin:." slower than necessary, because that also ended up with an empty list in _files. Now that patternmatcher does not handle includes, the only remaining case where its _files/_fileset fields will be empty is when it's matching everything. We can therefore treat the always-case specially and stop treating the empty _files case specially. This makes the case mentioned above faster on treemanifest repos.
Fri, 19 May 2017 11:50:01 -0700 match: handle everything-matching using new alwaysmatcher
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 May 2017 11:50:01 -0700] rev 32586
match: handle everything-matching using new alwaysmatcher Having a special matcher that always matches seems to make more sense than making one of the other matchers handle the case. For now, we just use this new matcher when no patterns were provided.
Fri, 26 May 2017 13:08:30 -0700 match: add __repr__ for subdirmatcher
Martin von Zweigbergk <martinvonz@google.com> [Fri, 26 May 2017 13:08:30 -0700] rev 32585
match: add __repr__ for subdirmatcher Should at least be useful for debugging. Would matter for correctness too if fsmonitor or Facebook's sparse extension worked with subrepos (which I don't know if they do).
Sun, 28 May 2017 21:31:29 -0400 tests: make test-manifest.py portable to Python 3
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 21:31:29 -0400] rev 32584
tests: make test-manifest.py portable to Python 3 Lots of b prefixes here, and https://bugs.python.org/issue29714 means that this test is still very broken on Python 3.6 and 3.6.1, but 3.6.2 should things (based on testing using tip of the 3.6 branch from git). #cleanup-only
Mon, 29 May 2017 00:00:02 -0400 cleanup: rename all iteritems methods to items and add iteritems alias
Augie Fackler <raf@durin42.com> [Mon, 29 May 2017 00:00:02 -0400] rev 32583
cleanup: rename all iteritems methods to items and add iteritems alias Due to a quirk of our module importer setup on Python 3, all calls and definitions of methods named iteritems() get rewritten at import time. Unfortunately, this means there's not a good portable way to access these methods from non-module-loader'ed code like our unit tests. This change fixes that, which also unblocks test-manifest.py from passing under Python 3. We don't presently define any itervalues methods, or we'd need to give those similar treatment.
Sun, 28 May 2017 15:51:07 -0400 help: work around textwrap.dedent() only working on strings
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:51:07 -0400] rev 32582
help: work around textwrap.dedent() only working on strings
Sun, 28 May 2017 15:43:06 -0400 server: write out pid using bytes IO instead of str IO
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:43:06 -0400] rev 32581
server: write out pid using bytes IO instead of str IO
Sun, 28 May 2017 13:28:41 -0400 help: convert dict to strkwargs
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 13:28:41 -0400] rev 32580
help: convert dict to strkwargs
Sun, 28 May 2017 13:42:16 -0400 util: use sysstr.join instead of bytes.join in textwrap wrapper
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 13:42:16 -0400] rev 32579
util: use sysstr.join instead of bytes.join in textwrap wrapper
Sun, 28 May 2017 15:42:05 -0400 tests: port test extension in test-help.t to python 3
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:42:05 -0400] rev 32578
tests: port test extension in test-help.t to python 3 The changes required herein suggest to me that we should probably accept ascii-safe unicode strings for command name, flag name, etc.
Sun, 28 May 2017 15:51:26 -0400 doc: port check-seclevel.py to be Python 2/3 portable
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 15:51:26 -0400] rev 32577
doc: port check-seclevel.py to be Python 2/3 portable
Sun, 28 May 2017 23:54:31 +0900 match: define exactmatcher.matchfn statically
Yuya Nishihara <yuya@tcha.org> [Sun, 28 May 2017 23:54:31 +0900] rev 32576
match: define exactmatcher.matchfn statically This should eliminate the reference cycle, self.matchfn -> self.exact -> self.
Sun, 28 May 2017 23:51:30 +0900 match: remove override of prefix() from differencematcher
Yuya Nishihara <yuya@tcha.org> [Sun, 28 May 2017 23:51:30 +0900] rev 32575
match: remove override of prefix() from differencematcher It's exactly the same as basematcher.prefix().
Sat, 27 May 2017 18:52:46 +0900 cat: do not start pager if output will be written to file
Yuya Nishihara <yuya@tcha.org> [Sat, 27 May 2017 18:52:46 +0900] rev 32574
cat: do not start pager if output will be written to file
Sat, 27 May 2017 18:50:05 +0900 cat: pass filename template as explicit argument
Yuya Nishihara <yuya@tcha.org> [Sat, 27 May 2017 18:50:05 +0900] rev 32573
cat: pass filename template as explicit argument I'll move the handling of the '-' filename to commands.cat().
Thu, 25 May 2017 21:28:08 +0900 cmdutil: extract function checking if pattern should be taken as stdin/out
Yuya Nishihara <yuya@tcha.org> [Thu, 25 May 2017 21:28:08 +0900] rev 32572
cmdutil: extract function checking if pattern should be taken as stdin/out This will be used in commands.cat().
Thu, 25 May 2017 21:25:49 +0900 cmdutil: drop deprecated hack to pass file object to makefileobj() (API)
Yuya Nishihara <yuya@tcha.org> [Thu, 25 May 2017 21:25:49 +0900] rev 32571
cmdutil: drop deprecated hack to pass file object to makefileobj() (API) All callers pass a string 'pat' or None.
Mon, 29 May 2017 21:57:51 +0900 encoding: make sure "wide" variable never be referenced from other modules
Yuya Nishihara <yuya@tcha.org> [Mon, 29 May 2017 21:57:51 +0900] rev 32570
encoding: make sure "wide" variable never be referenced from other modules Better to not expose (maybe-) unicode objects.
Sun, 28 May 2017 21:29:58 -0400 manifest: use itertools.chain() instead of + for Python 3 compat
Augie Fackler <raf@durin42.com> [Sun, 28 May 2017 21:29:58 -0400] rev 32569
manifest: use itertools.chain() instead of + for Python 3 compat This is all pure-Python code, so I'm not too worried about perf here, but we can come back and fix it should it be a problem. With this change, the manifest code passes most unit tests on Python 3 (once the tests are corrected with many b prefixes. I've got a little more to sort out there and then I'll mail that change too.
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip