Thu, 02 Feb 2017 11:03:41 +0100 bundle2: drop an outdated comment
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 11:03:41 +0100] rev 30905
bundle2: drop an outdated comment The function is no longer in "early" stage and have been used in production for years. We can probably drop that part of the docstring...
Thu, 02 Feb 2017 10:53:55 +0100 unbundle: swap conditional branches for clarity
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 10:53:55 +0100] rev 30904
unbundle: swap conditional branches for clarity This is a small style update for clarity. The previous situation was: if foo: 50 lines else: 2 lines In such case I tend to invert these to get the simpler branch out of the way earlier: if not foo: 2 lines else: 50 lines This makes the conditional and various alternatives fit on the same screen, simpler to read overall.
Thu, 02 Feb 2017 10:55:38 +0100 unbundle: add a small comment to tag the bundle1 case as such
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 10:55:38 +0100] rev 30903
unbundle: add a small comment to tag the bundle1 case as such This makes the code clearer to understand for someone new to it (or rusted)
Thu, 02 Feb 2017 10:51:04 +0100 unbundle: add a small comment to clarify the 'check_heads' call
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 02 Feb 2017 10:51:04 +0100] rev 30902
unbundle: add a small comment to clarify the 'check_heads' call Bundle2 has its own mechanisms to check for heads (and other) changes, so push using bundle2 is relying on the "check:heads" bundle part of unbundle and the 'check_heads' call is not checking anything. We add a small comment to make this clearer.
Thu, 02 Feb 2017 11:17:36 -0800 pager: don't terminate with extreme prejudice on SIGPIPE (BC)
Simon Farnsworth <simonfar@fb.com> [Thu, 02 Feb 2017 11:17:36 -0800] rev 30901
pager: don't terminate with extreme prejudice on SIGPIPE (BC) The default SIGPIPE handler causes Mercurial to exit immediately, without running any Python cleanup code (except and finally blocks, atexit handlers etc). This creates problems if you want to do something at exit. If we need a different exit code for broken pipe from pager, then we should code that ourselves in Python; this appears to have been cargo-culted from the fork implementation of pager that's no longer used, where it was needed to stop Broken Pipe errors appearing on the user's terminal.
Mon, 23 Jan 2017 10:48:55 -0800 verify: replace _validpath() by matcher
Martin von Zweigbergk <martinvonz@google.com> [Mon, 23 Jan 2017 10:48:55 -0800] rev 30900
verify: replace _validpath() by matcher The verifier calls out to _validpath() to check if it should verify that path and the narrowhg extension overrides _validpath() to tell the verifier to skip that path. In treemanifest repos, the verifier calls the same method to check if it should visit a directory. However, the decision to visit a directory is different from the condition that it's a matching path, and narrowhg was working around it by returning True from its _validpath() override if *either* was true. Similar to how one can do "hg files -I foo/bar/ -X foo/" (making the include pointless), narrowhg can be configured to track the same paths. In that case match("foo/bar/baz") would be false, but match.visitdir("foo/bar/baz") turns out to be true, causing verify to fail. This may seem like a bug in visitdir(), but it's explicitly documented to be undefined for subdirectories of excluded directories. When using treemanifests, the walk would not descend into foo/, so verification would pass. However, when using flat manifests, there is no recursive directory walk and the file path "foo/bar/baz" would be passed to _validpath() without "foo/" (actually without the slash) being passed first. As explained above, _validpath() would return true for the file path and "hg verify" would fail. Replacing the _validpath() method by a matcher seems like the obvious fix. Narrowhg can then pass in its own matcher and not have to conflate the two matching functions (for dirs and files). I think it also makes the code clearer.
Wed, 01 Feb 2017 08:47:27 -0800 rebase: fix code comment to refer to right issue (4504, not 4505)
Martin von Zweigbergk <martinvonz@google.com> [Wed, 01 Feb 2017 08:47:27 -0800] rev 30899
rebase: fix code comment to refer to right issue (4504, not 4505) The comment was introduced in 8a544fb645bb (rebase: ensure rebase revision remains visible (issue4504), 2015-01-27), which mentions the right issue in the description.
Wed, 01 Feb 2017 11:30:26 -0600 merge with stable
Kevin Bullock <kbullock+mercurial@ringworld.org> [Wed, 01 Feb 2017 11:30:26 -0600] rev 30898
merge with stable
Sat, 08 Apr 2017 11:36:39 -0700 repair: use rawvfs when copying extra store files stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Apr 2017 11:36:39 -0700] rev 30897
repair: use rawvfs when copying extra store files If we use the normal vfs, store encoding will be applied when we .join() the path to be copied. This results in attempting to copy a file that (likely) doesn't exist. Using the rawvfs operates on the raw file path, which is returned by vfs.readdir(). Users at Mozilla are encountering this, as I've instructed them to run `hg debugupgraderepo` to upgrade to generaldelta. While Mercurial shouldn't deposit any files under .hg/store that require encoding, it is possible for e.g. .DS_Store files to be created by the operating system.
Sat, 08 Apr 2017 11:35:29 -0700 tests: add test demonstrating buggy path handling stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 08 Apr 2017 11:35:29 -0700] rev 30896
tests: add test demonstrating buggy path handling `hg debugupgraderepo` is currently buggy with regards to path handling when copying files in .hg/store/. Specifically, it applies the store filename encoding to paths instead of operating on raw files. This commit adds a test demonstrating the buggy behavior.
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip