diff --git a/RelNotes/2.44.0.txt b/RelNotes/2.44.0.txt
index b44e88fb1..37d516191 100644
--- a/RelNotes/2.44.0.txt
+++ b/RelNotes/2.44.0.txt
@@ -1,6 +1,13 @@
Git v2.44 Release Notes
=======================
+Backward Compatibility Notes
+
+ * "git chekcout -B " used to allow switching to a branch that
+ is in use on another worktree, but this was by mistake. The users
+ need to use "--ignore-other-worktrees" option.
+
+
UI, Workflows & Features
* "git add" and "git stash" learned to support the ":(attr:...)"
@@ -19,6 +26,14 @@ UI, Workflows & Features
arguments to the "add/set" subcommands of "git sparse-checkout"
better.
+ * "git checkout -B []" allowed a branch that is
+ in use in another worktree to be updated and checked out, which
+ might be a bit unexpected. The rule has been tightened, which is a
+ breaking change. "--ignore-other-worktrees" option is required to
+ unbreak you, if you are used to the current behaviour that "-B"
+ overrides the safety.
+ (merge b23285a921 jc/checkout-B-branch-in-use later to maint).
+
Performance, Internal Implementation, Development Support etc.
@@ -36,6 +51,19 @@ Performance, Internal Implementation, Development Support etc.
* Subject approxidate() and show_date() machinery to OSS-Fuzz.
+ * A new helper to let us pretend that we called lstat() when we know
+ our cache_entry is up-to-date via fsmonitor.
+
+ * The optimization based on fsmonitor in the "diff --cached"
+ codepath is resurrected with the "fake-lstat" introduced earlier.
+
+ * Test balloon to use C99 "bool" type from has been
+ added.
+
+ * "git clone" has been prepared to allow cloning a repository with
+ non-default hash function into a repository that uses the reftable
+ backend.
+
Fixes since v2.43
-----------------
@@ -94,6 +122,18 @@ Fixes since v2.43
specified with valueless "true", which has been corrected.
(merge d49cb162fa jk/implicit-true later to maint).
+ * Code clean-up for sanity checking of command line options for "git
+ show-ref".
+ (merge 7382497372 rs/show-ref-incompatible-options later to maint).
+
+ * The code to parse the From e-mail header has been updated to avoid
+ recursion.
+ (merge dee182941f jk/mailinfo-iterative-unquote-comment later to maint).
+
+ * "git fetch --atomic" issued an unnecessary empty error message,
+ which has been corrected.
+ (merge 18ce48918c jx/fetch-atomic-error-message-fix later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 50f1abcff6 js/packfile-h-typofix later to maint).
(merge cbf498eb53 jb/reflog-expire-delete-dry-run-options later to maint).
@@ -103,3 +143,11 @@ Fixes since v2.43
(merge e4299d26d4 mk/doc-gitfile-more later to maint).
(merge 792b86283b rs/incompatible-options-messages later to maint).
(merge ea8f9494ab jk/config-cleanup later to maint).
+ (merge d1bd3a8c34 jk/mailinfo-oob-read-fix later to maint).
+ (merge c0cadb0576 ps/reftable-fixes later to maint).
+ (merge 647b5e0998 ps/chainlint-self-check-update later to maint).
+ (merge 68fcebfb1a es/add-doc-list-short-form-of-all-in-synopsis later to maint).
+ (merge bc62d27d5c jc/doc-most-refs-are-not-that-special later to maint).
+ (merge 6d6f1cd7ee jc/doc-misspelt-refs-fix later to maint).
+ (merge 37e8d795be sp/test-i18ngrep later to maint).
+ (merge fbc6526ea6 rs/t6300-compressed-size-fix later to maint).
diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html
index 310e9158f..2f476e05b 100644
--- a/ReviewingGuidelines.html
+++ b/ReviewingGuidelines.html
@@ -735,7 +735,7 @@
Do not checkout the new working tree at each iteration of the bisection
-process. Instead just update a special reference named BISECT_HEAD to make
+process. Instead just update the reference named BISECT_HEAD to make
it point to the commit that should be tested.
This option may be useful when the test you would perform in each step
does not require a checked out tree.
@@ -1244,7 +1244,7 @@
GIT
diff --git a/git-bisect.txt b/git-bisect.txt
index 191b4a42b..aa02e4622 100644
--- a/git-bisect.txt
+++ b/git-bisect.txt
@@ -362,7 +362,7 @@ OPTIONS
--no-checkout::
+
Do not checkout the new working tree at each iteration of the bisection
-process. Instead just update a special reference named `BISECT_HEAD` to make
+process. Instead just update the reference named `BISECT_HEAD` to make
it point to the commit that should be tested.
+
This option may be useful when the test you would perform in each step
diff --git a/git-checkout.html b/git-checkout.html
index d9e0cf9bb..5926f9264 100644
--- a/git-checkout.html
+++ b/git-checkout.html
@@ -813,7 +813,9 @@
DESCRIPTION
$ git checkout <branch>
that is to say, the branch is not reset/created unless "git checkout" is
-successful.
+successful (e.g., when the branch is in use in another worktree, not
+just the current branch stays the same, but the branch is not reset to
+the start-point, either).
diff --git a/git-checkout.txt b/git-checkout.txt
index 240c54639..55a50b5b2 100644
--- a/git-checkout.txt
+++ b/git-checkout.txt
@@ -63,7 +63,9 @@ $ git checkout
------------
+
that is to say, the branch is not reset/created unless "git checkout" is
-successful.
+successful (e.g., when the branch is in use in another worktree, not
+just the current branch stays the same, but the branch is not reset to
+the start-point, either).
'git checkout' --detach []::
'git checkout' [--detach] ::
diff --git a/git-config.html b/git-config.html
index f79d468ec..2fdeeec39 100644
--- a/git-config.html
+++ b/git-config.html
@@ -5928,7 +5928,7 @@
Variables
--notes=<ref>, where ref is the non-boolean value. Defaults
to false.
-
If one wishes to use the ref ref/notes/true, please use that literal
+
If one wishes to use the ref refs/notes/true, please use that literal
instead.
This configuration can be specified multiple times in order to allow
multiple notes refs to be included. In that case, it will behave
diff --git a/git-diff.html b/git-diff.html
index 34f703e50..e585ddaf9 100644
--- a/git-diff.html
+++ b/git-diff.html
@@ -877,7 +877,7 @@
DESCRIPTION
noted that all of the <commit> in the above description, except
in the --merge-base case and in the last two forms that use ..
notations, can be any <tree>. A tree of interest is the one pointed to
-by the special ref AUTO_MERGE, which is written by the ort merge
+by the ref named AUTO_MERGE, which is written by the ort merge
strategy upon hitting merge conflicts (see git-merge(1)).
Comparing the working tree with AUTO_MERGE shows changes you’ve made
so far to resolve textual conflicts (see the examples below).
@@ -3679,7 +3679,7 @@
GIT
diff --git a/git-diff.txt b/git-diff.txt
index 08087ffad..c065f023e 100644
--- a/git-diff.txt
+++ b/git-diff.txt
@@ -103,7 +103,7 @@ Just in case you are doing something exotic, it should be
noted that all of the in the above description, except
in the `--merge-base` case and in the last two forms that use `..`
notations, can be any . A tree of interest is the one pointed to
-by the special ref `AUTO_MERGE`, which is written by the 'ort' merge
+by the ref named `AUTO_MERGE`, which is written by the 'ort' merge
strategy upon hitting merge conflicts (see linkgit:git-merge[1]).
Comparing the working tree with `AUTO_MERGE` shows changes you've made
so far to resolve textual conflicts (see the examples below).
diff --git a/git-merge.html b/git-merge.html
index 821f0f67c..79cade40e 100644
--- a/git-merge.html
+++ b/git-merge.html
@@ -1089,7 +1089,7 @@
OPTIONS
Automatically create a temporary stash entry before the operation
- begins, record it in the special ref MERGE_AUTOSTASH
+ begins, record it in the ref MERGE_AUTOSTASH
and apply it after the operation ends. This means
that you can run the operation on a dirty worktree. However, use
with care: the final stash application after a successful
@@ -1307,7 +1307,7 @@
TRUE MERGE
-A special ref AUTO_MERGE is written, pointing to a tree
+A ref named AUTO_MERGE is written, pointing to a tree
corresponding to the current content of the working tree (including
conflict markers for textual conflicts). Note that this ref is only
written when the ort merge strategy is used (the default).
@@ -2336,7 +2336,7 @@
GIT
diff --git a/git-merge.txt b/git-merge.txt
index e8ab34031..3e9557a44 100644
--- a/git-merge.txt
+++ b/git-merge.txt
@@ -196,7 +196,7 @@ happens:
can inspect the stages with `git ls-files -u`). The working
tree files contain the result of the merge operation; i.e. 3-way
merge results with familiar conflict markers `<<<` `===` `>>>`.
-5. A special ref `AUTO_MERGE` is written, pointing to a tree
+5. A ref named `AUTO_MERGE` is written, pointing to a tree
corresponding to the current content of the working tree (including
conflict markers for textual conflicts). Note that this ref is only
written when the 'ort' merge strategy is used (the default).
diff --git a/git-pull.html b/git-pull.html
index a84a3fd97..98e52b9aa 100644
--- a/git-pull.html
+++ b/git-pull.html
@@ -1110,7 +1110,7 @@
Options related to merging
Automatically create a temporary stash entry before the operation
- begins, record it in the special ref MERGE_AUTOSTASH
+ begins, record it in the ref MERGE_AUTOSTASH
and apply it after the operation ends. This means
that you can run the operation on a dirty worktree. However, use
with care: the final stash application after a successful
diff --git a/git-remote-helpers.html b/git-remote-helpers.html
index e7a9a9125..b8011d5c8 100644
--- a/git-remote-helpers.html
+++ b/git-remote-helpers.html
@@ -735,7 +735,7 @@
Create a new branch named <new-branch> starting at
- <start-point> before switching to the branch. This is a
- convenient shortcut for:
+ <start-point> before switching to the branch. This is the
+ transactional equivalent of
that is to say, the branch is not reset/created unless "git switch" is
+successful (e.g., when the branch is in use in another worktree, not
+just the current branch stays the same, but the branch is not reset to
+the start-point, either).
-C <new-branch>
@@ -1199,7 +1203,7 @@
GIT
diff --git a/git-switch.txt b/git-switch.txt
index c60fc9c13..6137421ed 100644
--- a/git-switch.txt
+++ b/git-switch.txt
@@ -59,13 +59,18 @@ out at most one of `A` and `B`, in which case it defaults to `HEAD`.
-c ::
--create ::
Create a new branch named `` starting at
- `` before switching to the branch. This is a
- convenient shortcut for:
+ `` before switching to the branch. This is the
+ transactional equivalent of
+
------------
$ git branch
$ git switch
------------
++
+that is to say, the branch is not reset/created unless "git switch" is
+successful (e.g., when the branch is in use in another worktree, not
+just the current branch stays the same, but the branch is not reset to
+the start-point, either).
-C ::
--force-create ::
diff --git a/git.html b/git.html
index 714002647..c937a22e6 100644
--- a/git.html
+++ b/git.html
@@ -3755,10 +3755,11 @@
Discussion
When first created, objects are stored in individual files, but for
efficiency may later be compressed together into "pack files".
Named pointers called refs mark interesting points in history. A ref
-may contain the SHA-1 name of an object or the name of another ref. Refs
-with names beginning ref/head/ contain the SHA-1 name of the most
+may contain the SHA-1 name of an object or the name of another ref (the
+latter is called a "symbolic ref").
+Refs with names beginning refs/head/ contain the SHA-1 name of the most
recent commit (or "head") of a branch under development. SHA-1 names of
-tags of interest are stored under ref/tags/. A special ref named
+tags of interest are stored under refs/tags/. A symbolic ref named
HEAD contains the name of the currently checked-out branch.
The index file is initialized with a list of all paths and, for each
path, a blob object and a set of attributes. The blob object represents
@@ -3836,7 +3837,7 @@
GIT
diff --git a/git.txt b/git.txt
index 4698d7a42..bf9e6af69 100644
--- a/git.txt
+++ b/git.txt
@@ -1025,10 +1025,11 @@ When first created, objects are stored in individual files, but for
efficiency may later be compressed together into "pack files".
Named pointers called refs mark interesting points in history. A ref
-may contain the SHA-1 name of an object or the name of another ref. Refs
-with names beginning `ref/head/` contain the SHA-1 name of the most
+may contain the SHA-1 name of an object or the name of another ref (the
+latter is called a "symbolic ref").
+Refs with names beginning `refs/head/` contain the SHA-1 name of the most
recent commit (or "head") of a branch under development. SHA-1 names of
-tags of interest are stored under `ref/tags/`. A special ref named
+tags of interest are stored under `refs/tags/`. A symbolic ref named
`HEAD` contains the name of the currently checked-out branch.
The index file is initialized with a list of all paths and, for each
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index e2ddfd451..0584b507e 100644
--- a/howto/coordinate-embargoed-releases.html
+++ b/howto/coordinate-embargoed-releases.html
@@ -1038,7 +1038,7 @@
Keep authoritative canonical history correct with git pull
-2023-12-20
+2023-12-27
@@ -939,7 +939,7 @@
Keep authoritative canonical history correct with git pull
Git is a fast distributed revision control system.
This manual is designed to be readable by someone with basic UNIX
command-line skills, but no previous knowledge of Git.
Chapter 1, Repositories and Branches and Chapter 2, Exploring Git history explain how
to fetch and study a project using git—read these chapters to learn how
to build and test a particular version of a software project, search for
@@ -580,7 +580,7 @@
$ git diff --ours file.txt # same as the above
$ git diff -3 file.txt # diff against stage 3
$ git diff --theirs file.txt # same as the above.
When using the ort merge strategy (the default), before updating the working
-tree with the result of the merge, Git writes a special ref named AUTO_MERGE
+tree with the result of the merge, Git writes a ref named AUTO_MERGE
reflecting the state of the tree it is about to write. Conflicted paths with
textual conflicts that could not be automatically merged are written to this
tree with conflict markers, just as in the working tree. AUTO_MERGE can thus be
diff --git a/user-manual.txt b/user-manual.txt
index d8dbe6b56..5d32ff238 100644
--- a/user-manual.txt
+++ b/user-manual.txt
@@ -1344,7 +1344,7 @@ $ git diff --theirs file.txt # same as the above.
-------------------------------------------------
When using the 'ort' merge strategy (the default), before updating the working
-tree with the result of the merge, Git writes a special ref named AUTO_MERGE
+tree with the result of the merge, Git writes a ref named AUTO_MERGE
reflecting the state of the tree it is about to write. Conflicted paths with
textual conflicts that could not be automatically merged are written to this
tree with conflict markers, just as in the working tree. AUTO_MERGE can thus be