Mon, 07 Sep 2020 17:14:59 -0400 git: make dirstate actually support listclean parameter
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 17:14:59 -0400] rev 45433
git: make dirstate actually support listclean parameter As far as I can tell listignored and listunknown should already work. I'm vexed that there doesn't seem to be a way to get clean files out of the pygit2 status method, but this at least makes things work better. Differential Revision: https://phab.mercurial-scm.org/D8998
Mon, 07 Sep 2020 17:13:45 -0400 git: make dirstate status() respect matcher
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 17:13:45 -0400] rev 45432
git: make dirstate status() respect matcher As with other changes in this stack, we appear to have been getting lucky in the past. An upcoming change behaved _very_ oddly without this fix. Differential Revision: https://phab.mercurial-scm.org/D8997
Mon, 07 Sep 2020 17:12:29 -0400 git: fix up dirstate use of index
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 17:12:29 -0400] rev 45431
git: fix up dirstate use of index This was super-broken before, and somehow none of the existing attempts to use this code tripped on the defects here. Sigh. Differential Revision: https://phab.mercurial-scm.org/D8996
Mon, 07 Sep 2020 16:27:12 -0400 git: correctly handle "nothing changed" commits
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 16:27:12 -0400] rev 45430
git: correctly handle "nothing changed" commits I guess localrepo.commit() actually returns an Optional[node], which is a bit of a surprise to me. Differential Revision: https://phab.mercurial-scm.org/D8995
Mon, 07 Sep 2020 16:25:16 -0400 localrepo: use functools.wraps() in unfilteredmethod decorator
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 16:25:16 -0400] rev 45429
localrepo: use functools.wraps() in unfilteredmethod decorator This makes it easier to figure out what function you're holding on to when doing printf-style debugging. Differential Revision: https://phab.mercurial-scm.org/D8994
Mon, 07 Sep 2020 16:13:10 -0400 git: actually copy treemanifest instances in .copy() (issue6398)
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 16:13:10 -0400] rev 45428
git: actually copy treemanifest instances in .copy() (issue6398) The implementation here is so simple I honestly have no idea why I didn't do it at the time. Hopefully there's not some nuance past-me forgot to write down. Differential Revision: https://phab.mercurial-scm.org/D8993
Mon, 07 Sep 2020 15:46:56 -0400 git: restore basic functionality after b3040b6739ce
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 15:46:56 -0400] rev 45427
git: restore basic functionality after b3040b6739ce We don't yet have a formal interface for the changelog, but it's mostly specified. Sadly, b3040b6739ce added a semi-private pseudo-enum that we need to cope with, so it's probably high time that someone (me?) attempts to define that interface to prevent future backsliding. Differential Revision: https://phab.mercurial-scm.org/D8992
Mon, 07 Sep 2020 15:31:34 -0400 git: convert tz offset to int (issue6359)
Augie Fackler <raf@durin42.com> [Mon, 07 Sep 2020 15:31:34 -0400] rev 45426
git: convert tz offset to int (issue6359) Differential Revision: https://phab.mercurial-scm.org/D8991
Mon, 07 Sep 2020 15:20:31 -0400 merge with stable
Augie Fackler <augie@google.com> [Mon, 07 Sep 2020 15:20:31 -0400] rev 45425
merge with stable
Wed, 02 Sep 2020 19:46:55 +0530 extdiff: refactor cmdline and gui calculation login in a separate fn
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 02 Sep 2020 19:46:55 +0530] rev 45424
extdiff: refactor cmdline and gui calculation login in a separate fn This is some good logic with handling of many config items and various ways of specifying it. I want to reuse in `diff --tool` and hence refatcored it in a separate function of it's own.
Wed, 02 Sep 2020 19:17:31 +0530 extdiff: reorder an if-else conditional
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 02 Sep 2020 19:17:31 +0530] rev 45423
extdiff: reorder an if-else conditional This brings continue part on top and will help in next patch where we will like to introduce utility functions for rest of the code.
Wed, 02 Sep 2020 23:09:45 +0530 run-tests: extract logic to get errpath in a utility func
Sushil khanchi <sushilkhanchi97@gmail.com> [Wed, 02 Sep 2020 23:09:45 +0530] rev 45422
run-tests: extract logic to get errpath in a utility func Differential Revision: https://phab.mercurial-scm.org/D8979
Sat, 22 Aug 2020 16:31:34 +0530 run-tests: refactor filtering logic for --retest flag
Sushil khanchi <sushilkhanchi97@gmail.com> [Sat, 22 Aug 2020 16:31:34 +0530] rev 45421
run-tests: refactor filtering logic for --retest flag How I got to this: While re-running failed tests using --retest I noticed that the output: "running x tests using y parallel processes". was not actually correct, because x was the total number of tests present in the directory, but it should be the number of failed tests. Although it would run only the failed tests and later will say that remaining tests were skipped. Changes in test files reflect the fixed behaviour. This patch change and move the logic for filtering failed test for --retest option and make sure that we create instances of class Test only for the tests we need to run. As mentioned in the deleted text (in this patch itself) the logic for --retest should be outside of TestSuite. Differential Revision: https://phab.mercurial-scm.org/D8938
Thu, 27 Aug 2020 12:24:57 +0530 tests: add a --retest test to demonstrate a fix in next patch
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 27 Aug 2020 12:24:57 +0530] rev 45420
tests: add a --retest test to demonstrate a fix in next patch As you see above the added lines, there was only one test failed. So the output should be: "running 1 tests using 1 parallel processes" Next patch will be fixing this. Differential Revision: https://phab.mercurial-scm.org/D8964
Thu, 27 Aug 2020 12:21:24 +0530 tests: remove a sub-test since we are done with it in test-run-tests.t
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 27 Aug 2020 12:21:24 +0530] rev 45419
tests: remove a sub-test since we are done with it in test-run-tests.t removing test-failure.t to make sure that in next patch when we re-run failed tests using --retest, it won't get considered unnecessarily. Differential Revision: https://phab.mercurial-scm.org/D8963
Tue, 21 Jul 2020 22:41:45 +0200 storageutil: allow modern hash sizes for fileids
Joerg Sonnenberger <joerg@bec.de> [Tue, 21 Jul 2020 22:41:45 +0200] rev 45418
storageutil: allow modern hash sizes for fileids Differential Revision: https://phab.mercurial-scm.org/D8783
Tue, 01 Sep 2020 22:28:41 -0400 registrar: fix a documentation typo
Matt Harbison <matt_harbison@yahoo.com> [Tue, 01 Sep 2020 22:28:41 -0400] rev 45417
registrar: fix a documentation typo Differential Revision: https://phab.mercurial-scm.org/D8976
Mon, 10 Aug 2020 15:50:22 +0200 documentation: add `zstd` compression to the internal `revlogs` documentation
Antoine Cezar <antoine.cezar@octobus.net> [Mon, 10 Aug 2020 15:50:22 +0200] rev 45416
documentation: add `zstd` compression to the internal `revlogs` documentation Differential Revision: https://phab.mercurial-scm.org/D8953
Sat, 29 Aug 2020 14:35:18 +0530 extdiff: move single file handling inside `not per-file` conditional
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 29 Aug 2020 14:35:18 +0530] rev 45415
extdiff: move single file handling inside `not per-file` conditional If `--per-file` is passed, we will diffing files one by one, hence there is no need to make this optimization around single file in that case. This optimization is only required when `--per-file` is not passed and we will be opening directory-diff for a single file. Differential Revision: https://phab.mercurial-scm.org/D8971
Sat, 29 Aug 2020 14:32:26 +0530 extdiff: remove dir2root and pass full path as dir2 in _runperfilediff()
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 29 Aug 2020 14:32:26 +0530] rev 45414
extdiff: remove dir2root and pass full path as dir2 in _runperfilediff() The only use of `dir2root` was to join with `dir2` to generate the path for other side of diff. Like in previous patch, `dir1a` and `dir1b` are full paths and no longer base names, hence we pass `dir2` as full path too and making `dir2root` unrequired. Differential Revision: https://phab.mercurial-scm.org/D8970
Sat, 29 Aug 2020 14:28:34 +0530 extdiff: pass full paths of `dir1a` and `dir1b` to `_runperfilediff()`
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 29 Aug 2020 14:28:34 +0530] rev 45413
extdiff: pass full paths of `dir1a` and `dir1b` to `_runperfilediff()` Earlier we were passing basename instead of the fullpath and then joining with the tmproot. This is wrong because the user can choose `rev1a` as wdir and in those cases, tmproot should not be joined with the path. I am working on refactoring extdiff logic so that we can have options like `diff --tool` and encountered this. Although this patch in itself makes no difference, however in future when a new caller of `_runperfilediff()` will be added, it will be useful to directly pass on the full paths instead. Differential Revision: https://phab.mercurial-scm.org/D8969
Tue, 01 Sep 2020 09:46:15 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 01 Sep 2020 09:46:15 -0400] rev 45412
merge with stable
Mon, 24 Aug 2020 12:39:48 -0400 mercurial: force LF endings for *.py, *.{c,h} and *.t in .editorconfig
Matt Harbison <matt_harbison@yahoo.com> [Mon, 24 Aug 2020 12:39:48 -0400] rev 45411
mercurial: force LF endings for *.py, *.{c,h} and *.t in .editorconfig PyCharm on Windows otherwise uses CRLF. Differential Revision: https://phab.mercurial-scm.org/D8947
Tue, 18 Aug 2020 22:21:00 +0800 hooklib: update documentation of changeset_obsoletedfor for changed hook type
Aay Jay Chan <aayjaychan@itopia.com.hk> [Tue, 18 Aug 2020 22:21:00 +0800] rev 45410
hooklib: update documentation of changeset_obsoletedfor for changed hook type This updates usage example of changeset_obsoleted to reflect the move from pretxnclose to txnclose made in 04ef381000a8 (hooklib: fix detection of successors for changeset_obsoleted). Differential Revision: https://phab.mercurial-scm.org/D8929
Fri, 14 Aug 2020 20:45:49 -0700 worker: don't expose readinto() on _blockingreader since pickle is picky
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Aug 2020 20:45:49 -0700] rev 45409
worker: don't expose readinto() on _blockingreader since pickle is picky The `pickle` module expects the input to be buffered and a whole object to be available when `pickle.load()` is called, which is not necessarily true when we send data from workers back to the parent process (i.e., it seems like a bad assumption for the `pickle` module to make). We added a workaround for that in https://phab.mercurial-scm.org/D8076, which made `read()` continue until all the requested bytes have been read. As we found out at work after a lot of investigation (I've spent the last two days on this), the native version of `pickle.load()` has started calling `readinto()` on the input since Python 3.8. That started being called in https://github.com/python/cpython/commit/91f4380cedbae32b49adbea2518014a5624c6523 (and only by the C version of `pickle.load()`)). Before that, it was only `read()` and `readline()` that were called. The problem with that was that `readinto()` on our `_blockingreader` was simply delegating to the underlying, *unbuffered* object. The symptom we saw was that `hg fix` started failing sometimes on Python 3.8 on Mac. It failed very relyable in some cases. I still haven't figured out under what circumstances it fails and I've been unable to reproduce it in test cases (I've tried writing larger amounts of data, using different numbers of workers, and making the formatters sleep). I have, however, been able to reproduce it 3-4 times on Linux, but then it stopped reproducing on the following few hundred attempts. To fix the problem, we can simply remove the implementation of `readinto()`, since the unpickler will then fall back to calling `read()`. The fallback was added a bit later, in https://github.com/python/cpython/commit/b19f7ecfa3adc6ba1544225317b9473649815b38. However, that commit also added checking that what `read()` returns is a `bytes`, so we also need to convert the `bytearray` we use into that. I was able to add a test for that failure at least. Differential Revision: https://phab.mercurial-scm.org/D8928
Tue, 18 Aug 2020 15:03:57 -0700 commit: clear mergestate also with --amend (issue6304)
Martin von Zweigbergk <martinvonz@google.com> [Tue, 18 Aug 2020 15:03:57 -0700] rev 45408
commit: clear mergestate also with --amend (issue6304) The `hg commit --amend` uses the in-memory code, which naturally doesn't touch the merge state (well, it shouldn't anyway; I think I've fixed bugs in that area recently). We therefore need to clear the mergestate after calling `repo.commitctx()` since we expect that from `hg commit --amend`. Differential Revision: https://phab.mercurial-scm.org/D8932
Tue, 18 Aug 2020 14:26:49 -0700 tests: add test showing that merge state is not cleared by amend
Martin von Zweigbergk <martinvonz@google.com> [Tue, 18 Aug 2020 14:26:49 -0700] rev 45407
tests: add test showing that merge state is not cleared by amend This is slightly modified version of the test case I provided in issue6304. Differential Revision: https://phab.mercurial-scm.org/D8931
Tue, 11 Aug 2020 13:43:43 +0530 requirements: introduce constants for `shared` and `relshared` requirements
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 11 Aug 2020 13:43:43 +0530] rev 45406
requirements: introduce constants for `shared` and `relshared` requirements We add them to `WORKING_DIR_REQUIREMENTS` too as they should be stored in `.hg/requires` and have information about the type of working copy. Differential Revision: https://phab.mercurial-scm.org/D8926
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 +3000 tip