changeset 48005:b642a6298ce0

merge: with stable
author Augie Fackler <augie@google.com>
date Mon, 20 Sep 2021 15:51:23 -0400
parents 5e7eea915019 (current diff) 1941064d3713 (diff)
children 1fda8c9358ce
files
diffstat 6 files changed, 130 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/check-code.py	Wed Sep 15 18:41:38 2021 +0200
+++ b/contrib/check-code.py	Mon Sep 20 15:51:23 2021 -0400
@@ -195,7 +195,7 @@
     [
         (r'^function', "don't use 'function', use old style"),
         (r'^diff.*-\w*N', "don't use 'diff -N'"),
-        (r'\$PWD|\${PWD}', "don't use $PWD, use `pwd`"),
+        (r'\$PWD|\${PWD}', "don't use $PWD, use `pwd`", "no-pwd-check"),
         (r'^([^"\'\n]|("[^"\n]*")|(\'[^\'\n]*\'))*\^', "^ must be quoted"),
         (r'kill (`|\$\()', "don't use kill, use killdaemons.py"),
     ],
--- a/mercurial/commit.py	Wed Sep 15 18:41:38 2021 +0200
+++ b/mercurial/commit.py	Mon Sep 20 15:51:23 2021 -0400
@@ -389,6 +389,7 @@
     text = fctx.data()
     if (
         fparent2 != repo.nullid
+        or fparent1 == repo.nullid
         or meta
         or flog.cmp(fparent1, text)
         or force_new_node
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/relnotes/5.9	Mon Sep 20 15:51:23 2021 -0400
@@ -0,0 +1,86 @@
+== New Features ==
+
+ * `hg config` now has a `--source` option to show where each
+   configuration value comes from.
+ * Introduced a command (debug-repair-issue6533) to repair repositories affected
+   by issue6528 where certain files would show up as modified even if they were
+   clean due to an issue in the copy-tracing code.
+
+== Default Format Change ==
+
+These changes affect newly created repositories (or new clone) done with
+Mercurial 5.9.
+
+
+== New Experimental Features ==
+
+ * A `changelogv2` format has been introduced. It is not ready for use yet, but
+   will be used later to address some of the weaknesses of the current revlog
+   format.
+ * Initial experiment and support for `dirstatev2`, a new dirstate format that
+   addresses some of the weaknesses of the current dirstate format. Python + C
+   and Rust support are being implemented, but the Rust solution is the one
+   currently getting the attention for performance.
+ * Initial support for `rhg status`. `rhg` is the Rust wrapper executable for hg
+   that shortcuts some commands for faster execution speed.
+
+== Bug Fixes ==
+
+ * Fixed a regression (in 5.9.1) introduced in 5.9 when cloning repos with
+   deep filenames
+ * Fixed detection of directories becoming symlinks, but only when using the
+   Rust extensions.
+ * Fixed ignore and include not composing in the Rust status
+ * `hg commit --interactive` now handles deselecting edits of a rename
+ * Fixed a case where `hg evolve` gives different results when interrupted
+ * Fixed a memory leak in phases computation
+ * `histedit` and `shelve` don't swallow errors when updating the working copy
+   anymore
+ * Improve error message when detecting content-divergence with a hidden
+   common predecessor
+ * No longer re-order parents in filelog, see issue6533
+ * Fix revisions affected by issue6533 on the fly during exchange
+ * Many Windows fixes for stability and py3 compatibility improvements
+ * Many other miscellaneous fixes
+
+== Backwards Compatibility Changes ==
+
+
+== Internal API Changes ==
+
+The Dirstate API have been updated as the previous function leaked some
+internal details and did not distinguish between two important cases: "We are
+changing parent and need to adjust the dirstate" and "some command is changing
+which file is tracked". To clarify the situation:
+
+* the following functions have been deprecated,
+
+  - `dirstate.add`,
+  - `dirstate.normal`,
+  - `dirstate.normallookup`,
+  - `dirstate.merge`,
+  - `dirstate.otherparent`,
+  - `dirstate.remove`,
+  - `dirstate.drop`,
+  - `dirstateitem.__getitem__`,
+
+* these new functions are added for the "adjusting parents" use-case:
+
+  - `dirstate.update_file`,
+  - `dirstate.update_file_p1`,
+
+* these new function are added for the "adjusting wc file" use-case":
+
+  - `dirstate.set_tracked`,
+  - `dirstate.set_untracked`,
+  - `dirstate.set_clean`,
+  - `dirstate.set_possibly_dirty`,
+
+See inline documentation of the new functions for details.
+
+* Additionally, the following have been deprecated:
+  - `urlutil.getpath` function
+  - `localrepository.updatecaches`' `full` argument
+
+* The following have been removed:
+  - `revlog.revlogio` has been removed
--- a/relnotes/next	Wed Sep 15 18:41:38 2021 +0200
+++ b/relnotes/next	Mon Sep 20 15:51:23 2021 -0400
@@ -1,51 +1,42 @@
 == New Features ==
-
- * `hg config` now has a `--source` option to show where each
-   configuration value comes from.
+  * `debugrebuildfncache` now has an option to rebuild only the index files
 
 
 == Default Format Change ==
 
 These changes affects newly created repositories (or new clone) done with
-Mercurial 5.8.
+Mercurial 6.0.
 
 
 == New Experimental Features ==
 
+ * Added a new `web.full-garbage-collection-rate` to control performance. See
+   de2e04fe4897a554b9ef433167f11ea4feb2e09c for more information
 
 == Bug Fixes ==
 
+ * `hg fix --working-dir` now correctly works when in an uncommitted merge state
+ * `rhg` (Rust fast-path for `hg`) now supports the full config list syntax
+ * `rhg` now parses some corner-cases for revsets correctly
+ * Lots of Windows fixes
+ * Lots of miscellaneous other fixes
 
 == Backwards Compatibility Changes ==
 
 
 == Internal API Changes ==
 
-The Dirstate API have been updated as the previous function leaked some
-internal details and did not distinct between two important cases: "We are
-changing parent and need to adjust the dirstate" and "some command is changing
-which file is tracked". To clarify the situation:
-
-* the following functions have been deprecated,
+The following functions have been removed:
 
-  - dirstate.add,
-  - dirstate.normal,
-  - dirstate.normallookup,
-  - dirstate.merge,
-  - dirstate.otherparent,
-  - dirstate.remove,
-  - dirstate.drop,
-
-* these new functions are added for the "adjusting parents" use-case:
+  * `dirstate.normal`
+  * `dirstate.normallookup`
+  * `dirstate.otherparent`
+  * `dirstate.add`
+  * `dirstate.remove`
+  * `dirstate.drop`
+  * `dirstate.__getitem__`
 
-  - dirstate.update_file,
-  - dirstate.update_file_p1,
-
-* these new function are added for the "adjusting wc file" use-case":
+Miscellaneous:
 
-  - dirstate.set_tracked,
-  - dirstate.set_untracked,
-  - dirstate.set_clean,
-  - dirstate.set_possibly_dirty,
-
-See inline documentation of the new functions for details.
+ * `wireprotov1peer`'s `batchable` is now a simple function and not a generator
+   anymore
\ No newline at end of file
--- a/tests/test-narrow-commit.t	Wed Sep 15 18:41:38 2021 +0200
+++ b/tests/test-narrow-commit.t	Mon Sep 20 15:51:23 2021 -0400
@@ -104,3 +104,8 @@
   $ hg status
   $ hg debugdirstate --no-dates
   n 644         10 set                 inside/f1
+
+Can commit empty files
+
+  $ touch inside/c; hg add inside/c; hg commit -qm _; hg verify -q
+  $ hg cat -r . inside/c
--- a/tests/test-removeemptydirs.t	Wed Sep 15 18:41:38 2021 +0200
+++ b/tests/test-removeemptydirs.t	Mon Sep 20 15:51:23 2021 -0400
@@ -1,5 +1,13 @@
 Tests for experimental.removeemptydirs
 
+  $ cat >> pwd.py << EOF
+  > import os
+  > try:
+  >     print(os.getcwd())
+  > except OSError:
+  >     print("<directory is no longer accessible>")
+  > EOF
+
   $ NO_RM=--config=experimental.removeemptydirs=0
   $ DO_RM=--config=experimental.removeemptydirs=1
   $ isdir() { if [ -d $1 ]; then echo yes; else echo no; fi }
@@ -132,8 +140,15 @@
   r1
   r2
   somedir
-  $ pwd
+#if windows
+  $ "$PYTHON" "$TESTTMP/pwd.py"
   $TESTTMP/hghistedit/somedir
+#else
+  $ echo ${PWD} # no-pwd-check
+  $TESTTMP/hghistedit/somedir
+  $ "$PYTHON" "$TESTTMP/pwd.py"
+  <directory is no longer accessible>
+#endif
   $ ls -1 $TESTTMP/hghistedit/somedir
   foo
   $ ls -1
@@ -142,6 +157,7 @@
 Get out of the doomed directory
 
   $ cd $TESTTMP/hghistedit
+  chdir: error retrieving current directory: getcwd: cannot access parent directories: $ENOENT$ (?)
   $ hg files --rev . | grep somedir/
   somedir/foo