Tue, 13 Oct 2020 05:14:37 +0200 upgrade: allow sidedata upgrade to modify revision flag
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Oct 2020 05:14:37 +0200] rev 45735
upgrade: allow sidedata upgrade to modify revision flag In the process, we fix the lack of HAS_COPIES_INFO flag on upgrade, and test the results. Differential Revision: https://phab.mercurial-scm.org/D9199
Tue, 13 Oct 2020 03:30:49 +0200 sidedata: return enough data to set the proper flag in the future
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Oct 2020 03:30:49 +0200] rev 45734
sidedata: return enough data to set the proper flag in the future If the revision has information relevant to copy tracing, we need to set a dedicated flag in revlog. Currently the upgrade process is failing to do so. Before we teach the upgrade process about flags, we make the information available where we will needs it. Differential Revision: https://phab.mercurial-scm.org/D9198
Tue, 13 Oct 2020 02:49:03 +0200 test: move upgrade run and check earlier in test-copies-chain-merge
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Oct 2020 02:49:03 +0200] rev 45733
test: move upgrade run and check earlier in test-copies-chain-merge We are about to introduce an explicit case for copy tracing after a upgrade. So I am moving the code around beforehand for clarity. Differential Revision: https://phab.mercurial-scm.org/D9196
Tue, 13 Oct 2020 02:45:24 +0200 copies: split creation of the graph and actual checking again
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Oct 2020 02:45:24 +0200] rev 45732
copies: split creation of the graph and actual checking again The re-install the old split. It will be necessary to test that the upgrade process produced a functionally identical result. It will be useful to detect case where the metadata we look at identical, but some other items we did not checked are missing. (spoiler: we will find some bug) Differential Revision: https://phab.mercurial-scm.org/D9195
Thu, 15 Oct 2020 10:28:27 -0700 copy: clarify in help text that `hg co --forget` takes a *destination* file
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Oct 2020 10:28:27 -0700] rev 45731
copy: clarify in help text that `hg co --forget` takes a *destination* file We had a user who tried to pass a source file. The command then fails with `<file>: not unmarking as copy - file is not marked as copied`, so at least it's not just silent, but let's be a little clearer in the documentation. Differential Revision: https://phab.mercurial-scm.org/D9214
Thu, 15 Oct 2020 15:57:31 +0200 test: check server error output in `test-pull-bundle.t`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 15 Oct 2020 15:57:31 +0200] rev 45730
test: check server error output in `test-pull-bundle.t` This is useful to debug test failure when they happens. Differential Revision: https://phab.mercurial-scm.org/D9213
Tue, 06 Oct 2020 01:51:56 +0200 unbundle: free temporary objects after use
Joerg Sonnenberger <joerg@bec.de> [Tue, 06 Oct 2020 01:51:56 +0200] rev 45729
unbundle: free temporary objects after use This reduces peak RSS for larger unbundle operations by ~30 Bytes per changeset on AMD64. This can't be a direct delete for Python 2.7, so reset the object instead and leave a comment. The efilesset object can't be deleted as it is referenced by the local onchangelog function and Python 2.7 rejects a delete on the existance of a nested scope. Differential Revision: https://phab.mercurial-scm.org/D9153
Tue, 13 Oct 2020 03:23:17 +0200 changing-files: add a shorthand property to check for copy relevant info
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 13 Oct 2020 03:23:17 +0200] rev 45728
changing-files: add a shorthand property to check for copy relevant info We are going to reuse this change in more place, so we factor it out first. Differential Revision: https://phab.mercurial-scm.org/D9197
Wed, 14 Oct 2020 17:51:56 +0200 pycompat: add an entry for unnamedtmpfile
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 14 Oct 2020 17:51:56 +0200] rev 45727
pycompat: add an entry for unnamedtmpfile I am going to use unnamed temporary files to pass arbitrarily large input data to worker creating bundles. To do so, I need a unified API that work on py2 and py3. Differential Revision: https://phab.mercurial-scm.org/D9211
Wed, 14 Oct 2020 21:47:14 +0200 pycompat: update comment about unnamedtempfile
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 14 Oct 2020 21:47:14 +0200] rev 45726
pycompat: update comment about unnamedtempfile I found the comment clearer. I end up having to think about this for `TemporaryFile` and I update that one in the process. Differential Revision: https://phab.mercurial-scm.org/D9210
Tue, 08 Sep 2020 18:16:24 +0900 revset: add diff(pattern) predicate for "grep --diff"
Yuya Nishihara <yuya@tcha.org> [Tue, 08 Sep 2020 18:16:24 +0900] rev 45725
revset: add diff(pattern) predicate for "grep --diff" I find this is useful in GUI log viewer since the tool only needs to support "log -rREV" command. This is basic implementation. Windowed search is not implemented since it wouldn't work pretty well with the smartset API. And filename matcher is not supported because the syntax isn't determined. My idea is to add handling of diff(pattern, file(..)) and diff(pattern, follow(..)), which will then be evolved to a full revset+matcher combinator support: x & diff(pattern, y & z) ===== y & z builds (revs(y) & revs(z), matcher(y) & matcher(z)) pair, and narrows the search space of diff() ==================== diff() returns matched (revs, matcher) pair ======================== revs and matcher will be combined respectively by &-operator, and the matcher will optionally be used to filter "hg log -p" output The predicate name "diff()" wouldn't be great, but grep() is already used. Another options I can think of are "grepdiff()" and "containsdiff()". Naming suggestions are welcome.
Mon, 05 Oct 2020 20:40:39 +0900 stringutil: add function to compile stringmatcher pattern into regexp
Yuya Nishihara <yuya@tcha.org> [Mon, 05 Oct 2020 20:40:39 +0900] rev 45724
stringutil: add function to compile stringmatcher pattern into regexp Prepares for adding a revset predicate for "grep --diff". The grep logic needs a regexp object instead of a match function.
Wed, 14 Oct 2020 22:10:48 +0900 py3: fix stringmatcher() to byte-stringify exception message
Yuya Nishihara <yuya@tcha.org> [Wed, 14 Oct 2020 22:10:48 +0900] rev 45723
py3: fix stringmatcher() to byte-stringify exception message Spotted while writing regexp variant of stringmatcher().
Mon, 05 Oct 2020 20:53:34 +0900 stringutil: extract helper function that splits stringmatcher() pattern
Yuya Nishihara <yuya@tcha.org> [Mon, 05 Oct 2020 20:53:34 +0900] rev 45722
stringutil: extract helper function that splits stringmatcher() pattern
Wed, 09 Sep 2020 17:17:38 +0900 grep: extract main search loop as searcher method
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 17:17:38 +0900] rev 45721
grep: extract main search loop as searcher method Still displayer part is in commands.grep(), the core grep logic is now reusable. I'll revisit the displayer stuff later since it will be another long series.
Sun, 04 Oct 2020 13:17:57 +0900 scmutil: move walkchangerevs() from cmdutil
Yuya Nishihara <yuya@tcha.org> [Sun, 04 Oct 2020 13:17:57 +0900] rev 45720
scmutil: move walkchangerevs() from cmdutil It's no longer a command-level function, but a pure helper to walk revisions in a windowed way. This change will help eliminate reverse dependency of revset.py -> grep.py -> cmdutil.py in future patches.
Wed, 09 Sep 2020 17:04:44 +0900 grep: extract public function to register file to be skipped
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 17:04:44 +0900] rev 45719
grep: extract public function to register file to be skipped The main grep loop will be extracted to a searcher method, but this skipping condition depends on the result of display() function.
Tue, 13 Oct 2020 16:44:57 -0400 posix: avoid a leaked file descriptor in a unix domain socket exception case
Matt Harbison <matt_harbison@yahoo.com> [Tue, 13 Oct 2020 16:44:57 -0400] rev 45718
posix: avoid a leaked file descriptor in a unix domain socket exception case Differential Revision: https://phab.mercurial-scm.org/D9206
Tue, 13 Oct 2020 16:41:01 -0400 posix: use context managers in a couple of places
Matt Harbison <matt_harbison@yahoo.com> [Tue, 13 Oct 2020 16:41:01 -0400] rev 45717
posix: use context managers in a couple of places Differential Revision: https://phab.mercurial-scm.org/D9205
Wed, 14 Oct 2020 14:43:39 -0700 record: when backing up, avoid generating very long filenames
Kyle Lippincott <spectral@google.com> [Wed, 14 Oct 2020 14:43:39 -0700] rev 45716
record: when backing up, avoid generating very long filenames If the original file's path is longer than the individual filename maximum length (256 on Linux, I believe?), then this mechanism of "replace slashes with underscores" causes an error. Now, we'll produce just the "basename" of the file, plus some stuff to ensure it's unique. This can be potentially confusing for users if there's a file with the same name in multiple directories, but I suspect that this is better than just breaking. Example: `<reporoot>/a/long/path/to/somefile.txt` used to be backed up as `<reporoot>/.hg/record-backups/a_long_path_to_somefile.txt.abcdefgh`, it will now be backed up as `<reporoot>/.hg/record-backups/somefile.txt.abcdefgh` We could do the naive thing (what we were doing before) and have it to doing something with either subdirectories (`<backuproot>/a/long/path/to/somefile.txt.abcdefgh` or minimize #dirs with `<backuproot>/a_long_path/to_somefile.txt.abcdefgh`), prefix-truncated paths (such as `<backuproot>/__ath_to_somefile.txt.abcdefgh`, where that `__` elides enough to get us under 255 chars (counting the +9 we need to add!)), or hash-of-dirname (`<backuproot>/<sha1sum_of_dirname>/somefile.txt.abcdefgh`), but ultimately every option felt over engineered and that it would be more likely to cause problems than it would be to solve any, especially if it was conditional on directory length. Differential Revision: https://phab.mercurial-scm.org/D9207
Sat, 10 Oct 2020 12:43:04 +0530 mergestate: add `allextras()` to get all extras
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 10 Oct 2020 12:43:04 +0530] rev 45715
mergestate: add `allextras()` to get all extras `extras()` can only be used for getting extra for a file. However at couple of places in code, we wanted to iterate over all the extras stored with the mergestate and they were accessing the private `_stateextras`. We add a new function for this. Differential Revision: https://phab.mercurial-scm.org/D9190
Tue, 06 Oct 2020 19:11:34 +0530 mergestate: document `o` merge record state in _mergestate_base docs
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 06 Oct 2020 19:11:34 +0530] rev 45714
mergestate: document `o` merge record state in _mergestate_base docs _mergestate_base documentation serves as a nice documentation for mergestate. This also documents known merge records and known merge record states. I missed adding `o` state to it when I introduced it. Let's add it now. Differential Revision: https://phab.mercurial-scm.org/D9156
Fri, 09 Oct 2020 00:33:50 -0400 fix: update commit hash references in the new commits
Matt Harbison <matt_harbison@yahoo.com> [Fri, 09 Oct 2020 00:33:50 -0400] rev 45713
fix: update commit hash references in the new commits Differential Revision: https://phab.mercurial-scm.org/D9183
Fri, 09 Oct 2020 00:14:07 -0400 absorb: update commit hash references in the new commits
Matt Harbison <matt_harbison@yahoo.com> [Fri, 09 Oct 2020 00:14:07 -0400] rev 45712
absorb: update commit hash references in the new commits Differential Revision: https://phab.mercurial-scm.org/D9182
Thu, 08 Oct 2020 23:33:04 -0400 rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com> [Thu, 08 Oct 2020 23:33:04 -0400] rev 45711
rewriteutil: handle dropped commits when updating description hashes In looking to leverage this with the absorb extension, the old -> new mapping there allows the new value to be None. We could filter that out and not pass it to this method, but it seems worth a message to the user. (I wonder if these should be an info or warning, because it's unlikely people are using `-v` regularly.) Differential Revision: https://phab.mercurial-scm.org/D9181
Fri, 09 Oct 2020 10:20:53 +0200 dirstate-tree: move a conditional in an explicit boolean
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 09 Oct 2020 10:20:53 +0200] rev 45710
dirstate-tree: move a conditional in an explicit boolean This will help readability a bit and make the next change simpler to read. Differential Revision: https://phab.mercurial-scm.org/D9202
Thu, 08 Oct 2020 18:50:46 +0200 rust: cleanup some white space in a dock
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Oct 2020 18:50:46 +0200] rev 45709
rust: cleanup some white space in a dock They seems to have sneaked there somehow. Differential Revision: https://phab.mercurial-scm.org/D9201
Sat, 10 Oct 2020 13:19:25 +0530 commit: pass ChangingFiles object as argument to _process_files
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 10 Oct 2020 13:19:25 +0530] rev 45708
commit: pass ChangingFiles object as argument to _process_files Instead of returning it, we pass it as an argument. This makes the whole if-else in `_prepare_files` a bit simpler. Else each if-else branch was creating the object. Differential Revision: https://phab.mercurial-scm.org/D9194
Sat, 10 Oct 2020 13:15:20 +0530 commit: pass mergestate into `_process_files` instead of re-reading it
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 10 Oct 2020 13:15:20 +0530] rev 45707
commit: pass mergestate into `_process_files` instead of re-reading it Differential Revision: https://phab.mercurial-scm.org/D9193
Sat, 10 Oct 2020 13:12:11 +0530 commit: move salvaged calculation a bit earlier in the function
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 10 Oct 2020 13:12:11 +0530] rev 45706
commit: move salvaged calculation a bit earlier in the function This helps us initialize mergestate before and now we can pass it into `_process_files()` instead of re-reading it there. Differential Revision: https://phab.mercurial-scm.org/D9192
Sat, 10 Oct 2020 12:53:35 +0530 commit: refactor salvage calculation to a different function
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 10 Oct 2020 12:53:35 +0530] rev 45705
commit: refactor salvage calculation to a different function Differential Revision: https://phab.mercurial-scm.org/D9191
Thu, 08 Oct 2020 09:54:38 -0700 tests: run test-copies-chain-merge.t also with copies in changesets
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 09:54:38 -0700] rev 45704
tests: run test-copies-chain-merge.t also with copies in changesets We have these tests already and it seems like a waste to not run them in the changesets case. The biggest differences stem from `hg log --follow` not working with copies stored in the changeset extras. Differential Revision: https://phab.mercurial-scm.org/D9173
Thu, 08 Oct 2020 08:12:47 -0700 tests: add test of copies suggested by Pierre-Yves on D9159
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 08:12:47 -0700] rev 45703
tests: add test of copies suggested by Pierre-Yves on D9159 Differential Revision: https://phab.mercurial-scm.org/D9171
Thu, 08 Oct 2020 15:09:28 -0700 tests: update test-copies-chain-merge.t to not use empty files
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 15:09:28 -0700] rev 45702
tests: update test-copies-chain-merge.t to not use empty files Merging empty files is not very interesting or realistic. Differential Revision: https://phab.mercurial-scm.org/D9172
Fri, 09 Oct 2020 19:19:10 +0900 revset: fix sorting key of wdir revision
Yuya Nishihara <yuya@tcha.org> [Fri, 09 Oct 2020 19:19:10 +0900] rev 45701
revset: fix sorting key of wdir revision It would go wrong on Python 2, and would crash on Python 3.
Wed, 09 Sep 2020 16:18:26 +0900 grep: move prep() to grepsearcher class
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 16:18:26 +0900] rev 45700
grep: move prep() to grepsearcher class
Wed, 09 Sep 2020 16:04:39 +0900 grep: move readfile() to grepsearcher class
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 16:04:39 +0900] rev 45699
grep: move readfile() to grepsearcher class
Wed, 09 Sep 2020 16:00:03 +0900 grep: move getbody() to grepsearcher class
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 16:00:03 +0900] rev 45698
grep: move getbody() to grepsearcher class
Wed, 09 Sep 2020 15:56:40 +0900 grep: add stub class that maintains cache and states of grep operation
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 15:56:40 +0900] rev 45697
grep: add stub class that maintains cache and states of grep operation Prepares for extracting stateful functions from commands.grep().
Wed, 09 Sep 2020 15:23:49 +0900 grep: move match and diff logic to new module
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 15:23:49 +0900] rev 45696
grep: move match and diff logic to new module commands.grep() has lots of functions and classes. Let's split it into reusable components so we can leverage them to implement a revset predicate for 'hg grep --diff'. I want to do 'hg log -r "diff(pattern)"'.
Wed, 09 Sep 2020 15:17:26 +0900 grep: explicitly pass regexp to closure functions
Yuya Nishihara <yuya@tcha.org> [Wed, 09 Sep 2020 15:17:26 +0900] rev 45695
grep: explicitly pass regexp to closure functions These functions will be extracted to new module.
Thu, 08 Oct 2020 17:29:51 +0530 upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 08 Oct 2020 17:29:51 +0530] rev 45694
upgrade: improve documentation of matchrevlog() It was not clear what selected for cloning meant. I updated with an extra line of description.
Fri, 09 Oct 2020 09:46:03 -0700 automation: support running against Python 3.9
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Oct 2020 09:46:03 -0700] rev 45693
automation: support running against Python 3.9 We just added CPython 3.9.0 to the automation environment. Let's support actions targeting it. One side-effect of this change is that we'll produce Windows wheels for Python 3.9 by default. This is desirable. Differential Revision: https://phab.mercurial-scm.org/D9189
Fri, 09 Oct 2020 09:22:59 -0700 automation: upgrade packages in Linux environment
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Oct 2020 09:22:59 -0700] rev 45692
automation: upgrade packages in Linux environment It's been a while since we've ran `pip-compile -U`. Let's do that. When I ran this command, black was upgraded and newer versions of black complains about formatting differences. I didn't feel like shaving a yak, so I pinned the current black version to avoid churn. I manually ran tests against all major Python versions and I'm fairly certain no new test failures were introduced. Differential Revision: https://phab.mercurial-scm.org/D9188
Thu, 08 Oct 2020 18:17:20 -0700 packaging: upgrade packages in Windows environment
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Oct 2020 18:17:20 -0700] rev 45691
packaging: upgrade packages in Windows environment I ran `pip-compile -U` to update all packages to latest versions. I did this so the Windows environment is more modern. dulwich 0.20 dropped support for Python 2.7. Rather than add yet another requirements.txt file, I decided to just pin at an older release to minimize complexity. Differential Revision: https://phab.mercurial-scm.org/D9187
Thu, 08 Oct 2020 18:07:34 -0700 contrib: install Python 3.9.0
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Oct 2020 18:07:34 -0700] rev 45690
contrib: install Python 3.9.0 We update the Windows and Linux environments to install CPython 3.9.0, which was released a few days ago. Differential Revision: https://phab.mercurial-scm.org/D9186
Thu, 08 Oct 2020 18:02:47 -0700 contrib: stop installing Python 3.5 and 3.6 in Windows environment
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Oct 2020 18:02:47 -0700] rev 45689
contrib: stop installing Python 3.5 and 3.6 in Windows environment We're only publishing Python 3.7+ wheels and other builds on Windows. Python 3.5 and 3.6 are not supported on this platform. Let's stop installing them in the development environment. Differential Revision: https://phab.mercurial-scm.org/D9185
Fri, 09 Oct 2020 09:17:47 -0700 py3: convert an exception message to bytes
Martin von Zweigbergk <martinvonz@google.com> [Fri, 09 Oct 2020 09:17:47 -0700] rev 45688
py3: convert an exception message to bytes One of our users ran into this (unrelated to my recent work on more specific errors). Differential Revision: https://phab.mercurial-scm.org/D9184
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 tip