Thu, 18 May 2017 15:25:16 -0700 match: move body of _normalize() to a static function
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2017 15:25:16 -0700] rev 32435
match: move body of _normalize() to a static function matcher._normalize() no longer depends on any of the matcher's state, and making it static will enable further refactoring. Note that the subdirmatcher subclass calls _normalize(), so we can't remove it completely.
Thu, 18 May 2017 15:11:04 -0700 match: pass 'warn' argument to _normalize() for consistency
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2017 15:11:04 -0700] rev 32434
match: pass 'warn' argument to _normalize() for consistency No other arguments are passed via the matcher's state, so we should treat 'warn' the consistently. More importantly, this will let us make it a static function, which will help with further refactoring.
Fri, 12 May 2017 23:11:41 -0700 match: replace match class by match function (API)
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 May 2017 23:11:41 -0700] rev 32433
match: replace match class by match function (API) The matcher class is getting hard to understand. It will be easier to follow if we can break it up into simpler matchers that we then compose. I'm hoping to have one matcher that accepts regular (non-include) patterns, one for exact file matches, one that always matches (and maybe one that never does) and then compose them by intersection and difference. This patch takes a simple but important step towards that goal by making match.match() a function (and renaming the matcher class itself from "match" to "matcher"). The new function will eventually be responsible for creating the simple matchers and composing them. icasefsmatcher similarly gets a factory function (called "icasefsmatch"). I also moved the other factory functions nearby.
Sun, 21 May 2017 18:36:28 -0400 checklink: degrade gracefully on posix when fs is readonly (issue5511)
Augie Fackler <augie@google.com> [Sun, 21 May 2017 18:36:28 -0400] rev 32432
checklink: degrade gracefully on posix when fs is readonly (issue5511) In the unlucky case, checklink tries to make a new file for the symlink test to target. If the filesystem is readonly (perhaps due to permissions in a repo owned by someone else) we just report the filesystem as not supporting symlinks, since the user probably can't write anyway.
Fri, 19 May 2017 20:14:31 -0700 revlog: remove some revlogNG terminology
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 19 May 2017 20:14:31 -0700] rev 32431
revlog: remove some revlogNG terminology RevlogNG is not such a good name when it is no longer the newest revlog version. Since we'll soon have revlog version 2, let's remove some references to it.
Fri, 19 May 2017 20:10:50 -0700 revlog: tweak wording and logic for flags validation
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 19 May 2017 20:10:50 -0700] rev 32430
revlog: tweak wording and logic for flags validation First, the logic around the if..elif..elif was subtly wrong and sub-optimal because all branches would be tested as long as the revlog was valid. This patch changes things so it behaves like a switch statement over the revlog version. While I was here, I also tweaked error strings to make them consistent and to read better.
Fri, 19 May 2017 20:01:35 -0700 tests: tests for revlog version and flags loading
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 19 May 2017 20:01:35 -0700] rev 32429
tests: tests for revlog version and flags loading We didn't have explicit test coverage of these branches. Better late than never.
Sun, 21 May 2017 13:32:07 +0200 perf: allow to clear the obsstore in 'perfvolatilesets'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2017 13:32:07 +0200] rev 32428
perf: allow to clear the obsstore in 'perfvolatilesets' Loading the obsstore can become a large part of the time necessary to compute the important volatile set. We add a flag purging all known obsstore related data. For example, computing the 'bumped' set currently requires reading the full obsstore, so timing greatly differ with or without that flag: Without: ! bumped ! wall 0.005047 comb 0.000000 user 0.000000 sys 0.000000 (best of 446) With: ! bumped ! wall 0.512367 comb 0.510000 user 0.480000 sys 0.030000 (best of 15)
Sun, 21 May 2017 13:49:48 +0200 obsolete: test an important corner case
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2017 13:49:48 +0200] rev 32427
obsolete: test an important corner case Receiving markers affecting changeset we'll receives later is legitimate and not so uncommon case. Working on cache highlighted that this was only testing in the evolve extension. We add a test for this case in core.
Thu, 18 May 2017 22:47:42 -0700 largefiles: replace always() method, not _always field
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2017 22:47:42 -0700] rev 32426
largefiles: replace always() method, not _always field We will soon have matchers that don't have an _always field, so largefiles needs to stop assuming that they do. _always is only used by always(), so we safely replace that method instead.
Sun, 21 May 2017 02:45:32 -0400 merge with stable
Augie Fackler <augie@google.com> [Sun, 21 May 2017 02:45:32 -0400] rev 32425
merge with stable
Sun, 21 May 2017 13:41:01 +0900 cext: mark constant variables
Yuya Nishihara <yuya@tcha.org> [Sun, 21 May 2017 13:41:01 +0900] rev 32424
cext: mark constant variables
Sun, 21 May 2017 13:35:19 +0900 cext: move util.h to cext tree
Yuya Nishihara <yuya@tcha.org> [Sun, 21 May 2017 13:35:19 +0900] rev 32423
cext: move util.h to cext tree Since util.h isn't useful in plain C module, it should be placed in CPython extension directory.
Sun, 21 May 2017 13:31:27 +0900 cext: move back finalization of dirstateTupleType where it should be
Yuya Nishihara <yuya@tcha.org> [Sun, 21 May 2017 13:31:27 +0900] rev 32422
cext: move back finalization of dirstateTupleType where it should be
Sat, 20 May 2017 22:27:52 -0700 cleanup: reuse existing wctx variables instead of calling repo[None]
Martin von Zweigbergk <martinvonz@google.com> [Sat, 20 May 2017 22:27:52 -0700] rev 32421
cleanup: reuse existing wctx variables instead of calling repo[None] Incidentally, this apparently means we load .hgsub one time less as well, which affects a test case.
Thu, 18 May 2017 16:43:56 -0400 localrepo: extract bookmarkheads method to bookmarks.py
Augie Fackler <augie@google.com> [Thu, 18 May 2017 16:43:56 -0400] rev 32420
localrepo: extract bookmarkheads method to bookmarks.py This method is only used internally by destutil, and it's obscure enough I'm willing to just move it without a deprecation warning, especially since the new method has more constrained functionality. Design-wise I'd also like to get active bookmark handling folded into the bookmark store, so that we don't squirrel away an extra attribute for the active bookmark on the repository object.
Sat, 20 May 2017 20:50:29 -0400 tests: avoid renamed files triggering check-commit failures
Augie Fackler <augie@google.com> [Sat, 20 May 2017 20:50:29 -0400] rev 32419
tests: avoid renamed files triggering check-commit failures I had to flag some revisions to not undergo check-commit scrutiny today to get the tests to pass, because they renamed files that had existing failures which we're not cleaning up. Let's prevent that in the future by using the extended git diff format to elide moved code.
Sat, 29 Apr 2017 21:39:47 -0700 dispatch: make request accept additional reposetups
Jun Wu <quark@fb.com> [Sat, 29 Apr 2017 21:39:47 -0700] rev 32418
dispatch: make request accept additional reposetups chg needs special logic around repo object creation (like, collecting and reporting repo path to the master server). Adding "reposetup" to dispatch.request seems to be an easy and reasonably clean way to allow that.
Sat, 20 May 2017 14:01:05 -0700 cext: extract revlog/index parsing code to own C file
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 20 May 2017 14:01:05 -0700] rev 32417
cext: extract revlog/index parsing code to own C file parsers.c is ~3000 lines and ~2/3 of it is related to the revlog index type. We already have separate C source files for directory utilities and manifest parsing. I think the quite unwieldy revlog/index parsing code should be self-contained as well. I performed the extraction as a file copy then removed content from both sides in order to preserve file history and blame. As part of this, I also had to move the hexdigit table and function to a shared header since it is used by both parsers.c and revlog.c # no-check-commit
Thu, 04 May 2017 17:13:12 +0900 debugcommands: use temporary dict for its command table
Yuya Nishihara <yuya@tcha.org> [Thu, 04 May 2017 17:13:12 +0900] rev 32416
debugcommands: use temporary dict for its command table Instead, load the table by commands.py so the debug commands should always be populated. The table in debugcommands.py is unnamed so extension authors wouldn't be confused to wrap debugcommands.table in place of commands.table.
Sun, 14 May 2017 16:42:16 +0900 commands: move debugcommands and debugcomplete back to commands module
Yuya Nishihara <yuya@tcha.org> [Sun, 14 May 2017 16:42:16 +0900] rev 32415
commands: move debugcommands and debugcomplete back to commands module These commands depend heavily on the commands table, so it doesn't make much sense to isolate them to debugcommands.py. This helps eliminating the future import cycle.
Sun, 14 May 2017 16:19:47 +0900 commands: move templates of common command options to cmdutil (API)
Yuya Nishihara <yuya@tcha.org> [Sun, 14 May 2017 16:19:47 +0900] rev 32414
commands: move templates of common command options to cmdutil (API) The goal is to get rid of the debugcommands -> commands dependency. Since globalopts is the property of the commands, it's kept in the commands module.
Sat, 13 Aug 2016 12:29:53 +0900 import-checker: drop workaround for pure modules
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:29:53 +0900] rev 32413
import-checker: drop workaround for pure modules
Sat, 13 Aug 2016 12:28:52 +0900 policy: drop custom importer for pure modules
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:28:52 +0900] rev 32412
policy: drop custom importer for pure modules
Sat, 13 Aug 2016 12:23:56 +0900 parsers: switch to policy importer
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:23:56 +0900] rev 32411
parsers: switch to policy importer # no-check-commit
Sat, 13 Aug 2016 12:18:58 +0900 mpatch: switch to policy importer
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:18:58 +0900] rev 32410
mpatch: switch to policy importer
Sat, 13 Aug 2016 12:15:49 +0900 diffhelpers: switch to policy importer
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:15:49 +0900] rev 32409
diffhelpers: switch to policy importer # no-check-commit
Sat, 13 Aug 2016 12:12:50 +0900 bdiff: switch to policy importer
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:12:50 +0900] rev 32408
bdiff: switch to policy importer # no-check-commit
Sat, 13 Aug 2016 12:08:23 +0900 base85: switch to policy importer
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Aug 2016 12:08:23 +0900] rev 32407
base85: switch to policy importer
Fri, 12 Aug 2016 11:35:17 +0900 osutil: switch to policy importer
Yuya Nishihara <yuya@tcha.org> [Fri, 12 Aug 2016 11:35:17 +0900] rev 32406
osutil: switch to policy importer "make clean" is recommended to test this change, though C API compatibility should be preserved.
Fri, 12 Aug 2016 11:30:17 +0900 policy: add helper to import cext/pure module
Yuya Nishihara <yuya@tcha.org> [Fri, 12 Aug 2016 11:30:17 +0900] rev 32405
policy: add helper to import cext/pure module These functions are sysstr API since __import__() and getattr() hate byte strings on Python 3. There's a minor BC, which is ImportError will be raised if invalid HGMODULEPOLICY is specified. I think this is more desired behavior. We're planning to add strict checking for C API compatibility. This patch includes the stub for it.
Sat, 20 May 2017 15:09:14 +0900 demandimport: strictly check missing locals argument
Yuya Nishihara <yuya@tcha.org> [Sat, 20 May 2017 15:09:14 +0900] rev 32404
demandimport: strictly check missing locals argument locals may be an empty dict.
Thu, 18 May 2017 18:01:48 -0400 localrepo: mark walk convenience method as deprecated (API)
Augie Fackler <augie@google.com> [Thu, 18 May 2017 18:01:48 -0400] rev 32403
localrepo: mark walk convenience method as deprecated (API)
Thu, 18 May 2017 18:01:01 -0400 debugcommands: use repo[None].walk instead of repo.walk
Augie Fackler <augie@google.com> [Thu, 18 May 2017 18:01:01 -0400] rev 32402
debugcommands: use repo[None].walk instead of repo.walk
Thu, 18 May 2017 18:00:52 -0400 cmdutil: use repo[None].walk instead of repo.walk
Augie Fackler <augie@google.com> [Thu, 18 May 2017 18:00:52 -0400] rev 32401
cmdutil: use repo[None].walk instead of repo.walk
Thu, 18 May 2017 18:00:38 -0400 largefiles: use repo[None].walk instead of repo.walk
Augie Fackler <augie@google.com> [Thu, 18 May 2017 18:00:38 -0400] rev 32400
largefiles: use repo[None].walk instead of repo.walk
Tue, 25 Apr 2017 17:43:30 -0700 parsers: add version to help detect breaking binary changes
Jun Wu <quark@fb.com> [Tue, 25 Apr 2017 17:43:30 -0700] rev 32399
parsers: add version to help detect breaking binary changes
Tue, 25 Apr 2017 17:36:59 -0700 osutil: add version to help detect breaking binary changes
Jun Wu <quark@fb.com> [Tue, 25 Apr 2017 17:36:59 -0700] rev 32398
osutil: add version to help detect breaking binary changes See the previous patch for why.
Tue, 25 Apr 2017 17:38:36 -0700 mpatch: add version to help detect breaking binary changes
Jun Wu <quark@fb.com> [Tue, 25 Apr 2017 17:38:36 -0700] rev 32397
mpatch: add version to help detect breaking binary changes
Tue, 25 Apr 2017 17:40:13 -0700 diffhelpers: add version to help detect breaking binary changes
Jun Wu <quark@fb.com> [Tue, 25 Apr 2017 17:40:13 -0700] rev 32396
diffhelpers: add version to help detect breaking binary changes
Tue, 25 Apr 2017 17:45:48 -0700 base85: add version to help detect breaking binary changes
Jun Wu <quark@fb.com> [Tue, 25 Apr 2017 17:45:48 -0700] rev 32395
base85: add version to help detect breaking binary changes
Tue, 25 Apr 2017 17:34:41 -0700 bdiff: add version to help detect breaking binary changes
Jun Wu <quark@fb.com> [Tue, 25 Apr 2017 17:34:41 -0700] rev 32394
bdiff: add version to help detect breaking binary changes Previously, we have no way to detect if a compiled .so file could be used or not, and blindly load it if it exists. Usually we carefully maintain compatibility of .so and fallback to pure code gracefully. But if we stick to the rules, certain nice changes will be impossible to make in a clean way. This patch adds a "version" constant to the module so we can detect inconsistency and take appropriate actions (warn, abort, fallback to pure, run make automatically) in module loader.
Sat, 20 May 2017 03:10:23 +0200 obsmarker: add an experimental flag controlling "operation" recording
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2017 03:10:23 +0200] rev 32393
obsmarker: add an experimental flag controlling "operation" recording It seems better to introduce the experiment behind a flag for now as there are multiple concerns around the feature: * Storing operation increase the size of obsolescence markers significantly (+10-20%). * It performs poorly when exchanging markers (cannot combine command names, command name might be unknown remotely, etc)
Fri, 19 May 2017 19:46:45 -0700 run-tests: remove references to Python 2.6
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 19 May 2017 19:46:45 -0700] rev 32392
run-tests: remove references to Python 2.6 These are the obvious ones. There is tons of code in this file implementing features from unittest that weren't present in Python 2.6. But that's for other patches.
Thu, 18 May 2017 17:13:32 -0400 dirstate: mark {begin,end}parentchange as deprecated (API)
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:13:32 -0400] rev 32391
dirstate: mark {begin,end}parentchange as deprecated (API)
Thu, 18 May 2017 17:11:24 -0400 merge: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:11:24 -0400] rev 32390
merge: migrate to context manager for changing dirstate parents
Thu, 18 May 2017 17:11:14 -0400 localrepo: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:11:14 -0400] rev 32389
localrepo: migrate to context manager for changing dirstate parents
Thu, 18 May 2017 17:11:07 -0400 context: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:11:07 -0400] rev 32388
context: migrate to context manager for changing dirstate parents
Thu, 18 May 2017 17:11:01 -0400 rebase: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:11:01 -0400] rev 32387
rebase: migrate to context manager for changing dirstate parents
Thu, 18 May 2017 17:10:53 -0400 mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:10:53 -0400] rev 32386
mq: migrate to context manager for changing dirstate parents
Thu, 18 May 2017 17:10:30 -0400 dirstate: introduce new context manager for marking dirstate parent changes
Augie Fackler <augie@google.com> [Thu, 18 May 2017 17:10:30 -0400] rev 32385
dirstate: introduce new context manager for marking dirstate parent changes
Fri, 19 May 2017 17:01:34 -0700 contrib: make editmergeps able to work with notepad++
Kostia Balytskyi <ikostia@fb.com> [Fri, 19 May 2017 17:01:34 -0700] rev 32384
contrib: make editmergeps able to work with notepad++ Notepad++ has a different FIRSTLINE argument, so needs special handling.
Fri, 19 May 2017 17:00:55 -0700 contrib: make editmergeps able to work with Windows GUI editors
Kostia Balytskyi <ikostia@fb.com> [Fri, 19 May 2017 17:00:55 -0700] rev 32383
contrib: make editmergeps able to work with Windows GUI editors Using Start-Process -Wait makes it wait until the process finishes, which is necesssary for Windows GUI applications. My short testing also demonstrated that it does not hurt with command line vim.
Sat, 09 Jan 2016 23:24:52 +0900 extensions: show deprecation warning for the use of cmdutil.command
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Jan 2016 23:24:52 +0900] rev 32382
extensions: show deprecation warning for the use of cmdutil.command Since this is a fundamental API for extensions, we set 1-year period until actually removing it.
Sat, 13 May 2017 15:41:50 +0900 extensions: prohibit registration of command without using @command (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 13 May 2017 15:41:50 +0900] rev 32381
extensions: prohibit registration of command without using @command (API) Detect the problem earlier for better error indication. I'm tired of teaching users that the mq extension is not guilty but the third-party extension is. https://bitbucket.org/tortoisehg/thg/issues?q=%27norepo%27
Sun, 14 May 2017 15:46:45 +0900 extensions: optionally print hint on import failure
Yuya Nishihara <yuya@tcha.org> [Sun, 14 May 2017 15:46:45 +0900] rev 32380
extensions: optionally print hint on import failure Test will be added by the next patch.
Sun, 14 May 2017 15:41:27 +0900 error: add hint to ProgrammingError
Yuya Nishihara <yuya@tcha.org> [Sun, 14 May 2017 15:41:27 +0900] rev 32379
error: add hint to ProgrammingError As the hint isn't shown by the default exception handler, we need to print it manually. I've copied the "** " style from _exceptionwarning().
Mon, 08 May 2017 22:14:56 +0900 registrar: unindent superfluous "if True" block
Yuya Nishihara <yuya@tcha.org> [Mon, 08 May 2017 22:14:56 +0900] rev 32378
registrar: unindent superfluous "if True" block
Mon, 08 May 2017 22:08:40 +0900 registrar: switch @command decorator to class
Yuya Nishihara <yuya@tcha.org> [Mon, 08 May 2017 22:08:40 +0900] rev 32377
registrar: switch @command decorator to class It overrides _funcregistrarbase._doregister() since the structure of the command table is quite different.
Sat, 09 Jan 2016 23:07:20 +0900 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Jan 2016 23:07:20 +0900] rev 32376
registrar: move cmdutil.command to registrar module (API) cmdutil.command wasn't a member of the registrar framework only for a historical reason. Let's make that happen. This patch keeps cmdutil.command as an alias for extension compatibility.
Sat, 13 May 2017 17:53:55 +0900 gendoc: make sure locale path is set before loading any modules
Yuya Nishihara <yuya@tcha.org> [Sat, 13 May 2017 17:53:55 +0900] rev 32375
gendoc: make sure locale path is set before loading any modules Otherwise some messages wouldn't be translated depending on when the util was loaded.
Thu, 18 May 2017 12:49:10 -0700 fsmonitor: don't attempt state-leave if we didn't state-enter
Wez Furlong <wez@fb.com> [Thu, 18 May 2017 12:49:10 -0700] rev 32374
fsmonitor: don't attempt state-leave if we didn't state-enter The state-enter command may not have been successful; for example, the watchman client session may have timed out if the user was busy/idle for a long period during a merge conflict resolution earlier in processing a rebase for a stack of diffs. It's cleaner (from the perspective of the watchman logs) to avoid issuing the state-leave command in these cases. Test Plan: ran `hg rebase --tool :merge -r '(draft() & date(-14)) - master::' -d master` and didn't observe any errors in the watchman logs or in the output from `watchman -p -j <<<'["subscribe", "/data/users/wez/fbsource", "wez", {"expression": ["name", ".hg/updatestate"]}]'`
Thu, 18 May 2017 12:48:07 -0700 fsmonitor: acquire localrepo.wlock prior to emitting hg.update state
Wez Furlong <wez@fb.com> [Thu, 18 May 2017 12:48:07 -0700] rev 32373
fsmonitor: acquire localrepo.wlock prior to emitting hg.update state we see some weird things in the watchman logs where the mercurial process is seemingly confused about which hg.update state it is publishing through watchman. On closer examination, we're seeing conflicting pids for the clients involved and this implies a race. To resolve this, we extend the wlock around the state-enter/state-leave events that are emitted to watchman. Test Plan: Some manual testing: In one window, run this, and then checkout a different rev: ``` $ watchman -p -j <<<'["subscribe", "/data/users/wez/fbsource", "wez", {"expression": ["name", ".hg/updatestate"]}]' { "version": "4.9.0", "subscribe": "wez", "clock": "c:1495034090:814028:1:312576" } { "state-enter": "hg.update", "version": "4.9.0", "clock": "c:1495034090:814028:1:312596", "unilateral": true, "subscription": "wez", "metadata": { "status": "ok", "distance": 125, "rev": "a1275d79ffa6c58b53116c8ec401c275ca6c1e2a", "partial": false }, "root": "/data/users/wez/fbsource" } { "root": "/data/users/wez/fbsource", "metadata": { "status": "ok", "distance": 125, "rev": "a1275d79ffa6c58b53116c8ec401c275ca6c1e2a", "partial": false }, "subscription": "wez", "unilateral": true, "version": "4.9.0", "clock": "c:1495034090:814028:1:312627", "state-leave": "hg.update" } ``` Tailed the watchman log file and looked for invalid state assertion errors, then ran my `rebase-all` script to update/rebase all of my heads. Didn't trigger the error condition (but couldn't reliably trigger it previously anyway), and the output captured above shows that the states are being emitted correctly.
Fri, 19 May 2017 13:12:42 +0200 obsolete: move the 'isenabled' function at the top of the file
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 May 2017 13:12:42 +0200] rev 32372
obsolete: move the 'isenabled' function at the top of the file That is a simple and important function so having it at the top next to the related constant seems better.
Fri, 19 May 2017 13:09:23 +0200 cache: make the cache updated callback easily accessible to extension
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 May 2017 13:09:23 +0200] rev 32371
cache: make the cache updated callback easily accessible to extension This will help extension to benefit from this new logic. As a side effect this clarify the 'transaction' method a little bit.
Fri, 19 May 2017 12:35:14 +0200 obscheckhead: skip context creation to test phase
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 May 2017 12:35:14 +0200] rev 32370
obscheckhead: skip context creation to test phase On repository with many many heads, this is called often enough to show an overhead to appears in some profile. So we skip the 'changectx' creation to test the node phases.
Fri, 19 May 2017 02:44:30 +0200 tests: add missing 'test-push-checkheads-partial-C1.t'
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 May 2017 02:44:30 +0200] rev 32369
tests: add missing 'test-push-checkheads-partial-C1.t' For some reason, this one test case did not made it with the others as they got upstreamed during the 4.2 cycle.
Thu, 18 May 2017 14:36:46 -0700 contrib: add editmerge version for powershell
Kostia Balytskyi <ikostia@fb.com> [Thu, 18 May 2017 14:36:46 -0700] rev 32368
contrib: add editmerge version for powershell This just adds a translation of existing contrib/editmerge to powershell. It allows users on Windows to iteratively resolve conflicts in their editor of choice. # no-check-commit
Wed, 17 May 2017 12:51:40 -0700 run-tests: allow hg executable to be hg.exe
Kostia Balytskyi <ikostia@fb.com> [Wed, 17 May 2017 12:51:40 -0700] rev 32367
run-tests: allow hg executable to be hg.exe When running tests on Windows (via msys), user sometimes does not want to run them against source hg, but against compiled hg.exe. For that purpose, --with-hg option can be used, but currently run-tests.py prints a warning if the value of this argument is not a file with basename 'hg'. This patch allows such file to be 'hg.exe'.
Tue, 09 May 2017 16:29:31 -0700 obsolete: add operation metadata to rebase/amend/histedit obsmarkers
Durham Goode <durham@fb.com> [Tue, 09 May 2017 16:29:31 -0700] rev 32366
obsolete: add operation metadata to rebase/amend/histedit obsmarkers By recording what operation created the obsmarker, we can show very intuitive messages to the user in various UIs. For instance, log output could have messages like "Amended as XXX" to show why a commit is old and has an 'x' on it. @ ac28e3 durham / First commit | | o d4afe7 durham | | Second commit | | | x 8e9a5d (Amended as ac28e3) durham |/ First commit |
Wed, 17 May 2017 22:33:15 -0700 match: use match.prefix() in subdirmatcher
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 May 2017 22:33:15 -0700] rev 32365
match: use match.prefix() in subdirmatcher It seems like the subdirmatcher should be checking if the matcher it's based on is matching prefixes. It was effectively doing that already because "prefix() == not always() and not anypats() and not isexact()", subdirmatcher was checking the first two parts of that condition and I don't think it will ever be given an "exact" matcher with it's directory name (because exact matchers are for matching files, not directories). Still, let's switch to using prefix() for clarity (and because I'm trying to remove code that reaches for matchers internals).
Fri, 12 May 2017 16:31:21 -0700 match: avoid accessing match._pathrestricted from subdirmatcher
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 May 2017 16:31:21 -0700] rev 32364
match: avoid accessing match._pathrestricted from subdirmatcher Accessing only the public API wherever possible helps us refactor matchers later.
Thu, 18 May 2017 10:17:57 -0700 match: override visitdir() the usual way in subdirmatcher
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2017 10:17:57 -0700] rev 32363
match: override visitdir() the usual way in subdirmatcher Just override the function instead of replacing it on each instance.
Thu, 18 May 2017 09:04:37 -0700 match: make _fileroots a @propertycache and rename it to _fileset
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2017 09:04:37 -0700] rev 32362
match: make _fileroots a @propertycache and rename it to _fileset The files in the set are not necesserily roots of anything. Making it a @propertycache will help towards extracting a base class for matchers.
Wed, 17 May 2017 23:54:43 -0700 fsmonitor: use modern match API
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 May 2017 23:54:43 -0700] rev 32361
fsmonitor: use modern match API It seems like fsmonitor/__init__.py was based on a pretty old version of dirstate.py. Let's copy over the changes from the following two commits: 55c449345b10 (match: add isexact() method to hide internals, 2014-10-29) 3c346969c321 (dirstate: avoid match.files() in walk(), 2015-05-19)
Wed, 17 May 2017 20:51:17 -0500 diffstat: properly count lines starting in '--' or '++' (issue5479)
Andrew Zwicky <andrew.zwicky@gmail.com> [Wed, 17 May 2017 20:51:17 -0500] rev 32360
diffstat: properly count lines starting in '--' or '++' (issue5479) Lines that start in '--' or '++' were previously not counted as deletions or additions in diffstat, resulting in incorrect addition/deletion counts. The bug was present if the start of the line, combined with the diff character resulted in '---' or '+++'. diffstatdata will now track, for each file, if it has moved pas the header section by looking for a line beginning with '@@'. Once that has happened, lines beginning with '-' or '+' will be counted for deletions and additions. Once a line beginning with 'diff' is found, the process starts over.
Fri, 19 May 2017 12:38:34 +0200 test-http-bad-server: match different in output
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 May 2017 12:38:34 +0200] rev 32359
test-http-bad-server: match different in output Same as for previous update, the longer port number can affect this ouput.
Thu, 18 May 2017 13:38:37 -0700 config: make config.items() return a copy
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2017 13:38:37 -0700] rev 32358
config: make config.items() return a copy config.items() was iterating over a copy of the data for the the specified section on Python 2 by using .items(). However, on Python 3, items() does not make a copy, so let's switch to explicitly making a copy to make it safe on both Python 2 and Python 3.
Fri, 19 May 2017 03:47:43 -0700 filemerge: store error messages in module variables
Stanislau Hlebik <stash@fb.com> [Fri, 19 May 2017 03:47:43 -0700] rev 32357
filemerge: store error messages in module variables Copytracing may be disabled because it's too slow (see experimental.disablecopytrace config option). In that case user may get errors like 'local changed FILE which other deleted'. It would be nice to give user a hint to rerun command with `--config experimental.disablecopytrace=False`. To make it possible let's extract error message to variables so that extension may overwrite them.
Tue, 16 May 2017 23:10:31 -0700 run-tests: support multiple cases in .t test
Jun Wu <quark@fb.com> [Tue, 16 May 2017 23:10:31 -0700] rev 32356
run-tests: support multiple cases in .t test Sometimes we want to run similar tests with slightly different configurations. Previously we duplicate the test files. This patch introduces special "#testcases" syntax that allows a single .t file to contain multiple test cases. Defined cases could be tested using "#if". For example, if a test should behave the same with or without an experimental flag, we can add the following to the .t header: #testcases default experimental-a #if experimental-a $ cat >> $HGRCPATH << EOF > [experimental] > feature=a > EOF #endif The "experimental-a" block won't be executed when running the "default" test case.
Wed, 17 May 2017 19:52:18 -0700 revlog: rename constants (API)
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 17 May 2017 19:52:18 -0700] rev 32355
revlog: rename constants (API) Feature flag constants don't need "NG" in the name because they will presumably apply to non-"NG" version revlogs. All feature flag constants should also share a similar naming convention to identify them as such. And, "RevlogNG" isn't a great internal name since it isn't obvious it maps to version 1 revlogs. Plus, "NG" (next generation) is only a good name as long as it is the latest version. Since we're talking about version 2, now is as good a time as any to move on from that naming.
Wed, 17 May 2017 20:01:29 -0700 localrepo: reformat set literals
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 17 May 2017 20:01:29 -0700] rev 32354
localrepo: reformat set literals Putting multiple elements on the same line makes diffs harder to read. Switch to one line per element so future changes are easier on the eyes.
Thu, 18 May 2017 13:18:05 -0700 rebase: make sure merge state is cleaned up for no-op rebases (issue5494)
Jeremy Fitzhardinge <jsgf@fb.com> [Thu, 18 May 2017 13:18:05 -0700] rev 32353
rebase: make sure merge state is cleaned up for no-op rebases (issue5494) If a rebase ends up doing a no-op commit, make sure the merge state is still cleaned up.
Wed, 17 May 2017 09:43:50 -0700 match: remove ispartial()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 May 2017 09:43:50 -0700] rev 32352
match: remove ispartial() The function was added in d1d69ca78883 (match: add match.ispartial(), 2015-05-15) for use by narrowhg, but narrowhg never ended up needing it.
Tue, 16 May 2017 21:17:40 -0700 run-tests: rename test description dict to testdesc
Jun Wu <quark@fb.com> [Tue, 16 May 2017 21:17:40 -0700] rev 32351
run-tests: rename test description dict to testdesc Previously the word "test" was used for both a Test instance and a path or test dict. This patch renames them so it's clear that "testdesc" is the dict, and "test" is the instance.
Sat, 29 Apr 2017 11:40:47 -0700 run-tests: change test identity from a path to a dict
Jun Wu <quark@fb.com> [Sat, 29 Apr 2017 11:40:47 -0700] rev 32350
run-tests: change test identity from a path to a dict Previously, we use path to identify a test. A later patch adds more information so a path is not enough to identify a test. So we change it to a dictionary.
Wed, 17 May 2017 14:31:47 -0700 largefiles: delete unnecessary meddling with matcher internals
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 May 2017 14:31:47 -0700] rev 32349
largefiles: delete unnecessary meddling with matcher internals lfutil.getstandinmatcher() was setting match._always to False because it wanted a matcher of no patterns to match no files and match.match() instead matches everything. However, since ba8089433090 (largefiles: ensure lfutil.getstandinmatcher() only matches standins, 2015-08-12), it never actually passes an empty list of patterns, so the hack has become unnecessary.
Thu, 04 May 2017 00:23:09 +0530 py3: explicitly convert a list to bytes to pass in ui.debug
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 04 May 2017 00:23:09 +0530] rev 32348
py3: explicitly convert a list to bytes to pass in ui.debug Here pats is a list obviously. Since we can't pass unicodes to ui.debug, we have to pass this as bytes.
Wed, 17 May 2017 20:14:27 -0700 changelog: make sure datafile is 00changelog.d (API)
Jun Wu <quark@fb.com> [Wed, 17 May 2017 20:14:27 -0700] rev 32347
changelog: make sure datafile is 00changelog.d (API) 0ad0d26ff7 makes it possible for changelog datafile to be "00changelog.i.d", which is wrong. This patch adds an explicit datafile parameter to fix it.
Wed, 17 May 2017 23:01:56 +0900 util: drop unneeded override, sortdict.copy()
Yuya Nishihara <yuya@tcha.org> [Wed, 17 May 2017 23:01:56 +0900] rev 32346
util: drop unneeded override, sortdict.copy() OrderedDict.copy() returns self.__class__(self).
Wed, 17 May 2017 10:48:56 -0700 drawdag: provide filenode for its dummy filectx
Jun Wu <quark@fb.com> [Wed, 17 May 2017 10:48:56 -0700] rev 32345
drawdag: provide filenode for its dummy filectx basefctx has filenode, which will be used in a future fast path of skipping flag processor during repo._filecommit. This patch adds filenode to drawdag's faked filectx so we don't need to use hasattr in localrepo.py.
Sat, 13 May 2017 21:30:02 -0400 tests: fix up recent conditionalized output changes
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 May 2017 21:30:02 -0400] rev 32344
tests: fix up recent conditionalized output changes It looks like (!) can have surprising results matching back to the original output when adjacent lines change, probably because it uses the same code matching that allows (?) to skip missing output. 24f55686a63d ended up adding unconditionalized check*{exec,link} lines, duplicating the conditionalized lines. A Windows run wanted to delete the unconditionalized lines. This now runs on both Windows and Linux.
Tue, 16 May 2017 14:42:13 -0700 run-tests: drop fallback for proc.terminate() for pre-py2.6
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 14:42:13 -0700] rev 32343
run-tests: drop fallback for proc.terminate() for pre-py2.6
Tue, 16 May 2017 14:40:22 -0700 run-tests: drop fallback for sysconfig for pre-py2.7
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 14:40:22 -0700] rev 32342
run-tests: drop fallback for sysconfig for pre-py2.7
Tue, 16 May 2017 17:47:27 -0700 largefiles: move identical statement to after if/else
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 17:47:27 -0700] rev 32341
largefiles: move identical statement to after if/else
Tue, 16 May 2017 23:40:29 -0700 util: rewrite sortdict using Python 2.7's OrderedDict
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 23:40:29 -0700] rev 32340
util: rewrite sortdict using Python 2.7's OrderedDict Pattern copied from https://docs.python.org/dev/library/collections.html#ordereddict-examples-and-recipes.
(0) -30000 -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 tip