diff --git a/RelNotes/2.45.0.txt b/RelNotes/2.45.0.txt
index fe8832b8d..c0f9b9e44 100644
--- a/RelNotes/2.45.0.txt
+++ b/RelNotes/2.45.0.txt
@@ -24,6 +24,16 @@ UI, Workflows & Features
* "git for-each-ref" learned "--include-root-refs" option to show
even the stuff outside the 'refs/' hierarchy.
+ * "git rev-list --missing=print" has learned to optionally take
+ "--allow-missing-tips", which allows the objects at the starting
+ points to be missing.
+
+ * "git merge-tree" has learned that the three trees involved in the
+ 3-way merge only need to be trees, not necessarily commits.
+
+ * "git log --merge" learned to pay attention to CHERRY_PICK_HEAD and
+ other kinds of *_HEAD pseudorefs.
+
Performance, Internal Implementation, Development Support etc.
@@ -40,6 +50,10 @@ Performance, Internal Implementation, Development Support etc.
specified; use "__" to typeset the word inside a pair
of emphasized.
+ * "git --no-lazy-fetch cmd" allows to run "cmd" while disabling lazy
+ fetching of objects from the promisor remote, which may be handy
+ for debugging.
+
Fixes since v2.44
-----------------
@@ -94,6 +108,25 @@ Fixes since v2.44
to be the first header file.
(merge 4e89f0e07c jc/doc-compat-util later to maint).
+ * "git commit -v --cleanup=scissors" used to add the scissors line
+ twice in the log message buffer, which has been corrected.
+ (merge e90cc075cc jt/commit-redundant-scissors-fix later to maint).
+
+ * A custom remote helper no longer cannot access the newly created
+ repository during "git clone", which is a regression in Git 2.44.
+ This has been corrected.
+ (merge 199f44cb2e ps/remote-helper-repo-initialization-fix later to maint).
+
+ * Various parts of upload-pack has been updated to bound the resource
+ consumption relative to the size of the repository to protect from
+ abusive clients.
+ (merge 6cd05e768b jk/upload-pack-bounded-resources later to maint).
+
+ * The upload-pack program, when talking over v2, accepted the
+ packfile-uris protocol extension from the client, even if it did
+ not advertise the capability, which has been corrected.
+ (merge a922bfa3b5 jk/upload-pack-v2-capability-cleanup later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge f0e578c69c rs/use-xstrncmpz later to maint).
(merge 83e6eb7d7a ba/credential-test-clean-fix later to maint).
@@ -108,3 +141,4 @@ Fixes since v2.44
(merge f39addd0d9 rs/name-rev-with-mempool later to maint).
(merge 9a97b43e03 rs/submodule-prefix-simplify later to maint).
(merge 40b8076462 ak/rebase-autosquash later to maint).
+ (merge 3223204456 eg/add-uflags later to maint).
diff --git a/ReviewingGuidelines.html b/ReviewingGuidelines.html
index 6a7bf1ed9..4aa5d90ea 100644
--- a/ReviewingGuidelines.html
+++ b/ReviewingGuidelines.html
@@ -735,7 +735,7 @@ asciidoc.install();
+ When true, the object-info capability is advertised by
+ servers. Defaults to false.
+
+
+
uploadarchive.allowUnreachable
diff --git a/git-log.html b/git-log.html
index c2b14a450..bdc259e02 100644
--- a/git-log.html
+++ b/git-log.html
@@ -1534,8 +1534,11 @@ See also git-reflog(1).
- After a failed merge, show refs that touch files having a
- conflict and don’t exist on all heads to merge.
+ Show commits touching conflicted paths in the range HEAD...<other>,
+ where <other> is the first existing pseudoref in MERGE_HEAD,
+ CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works
+ when the index has unmerged entries. This option can be used to show
+ relevant commits when resolving conflicts from a 3-way merge.
diff --git a/git-merge-tree.html b/git-merge-tree.html
index a429f6aea..4a9700b2d 100644
--- a/git-merge-tree.html
+++ b/git-merge-tree.html
@@ -847,7 +847,7 @@ etc.
---merge-base=<commit>
+--merge-base=<tree-ish>
@@ -855,6 +855,8 @@ etc.
specify a merge-base for the merge, and specifying multiple bases is
currently not supported. This option is incompatible with --stdin.
+
As the merge-base is provided directly, <branch1> and <branch2> do not need
+to specify commits; trees are enough.
@@ -1152,7 +1154,7 @@ large repositories).
diff --git a/git-merge-tree.txt b/git-merge-tree.txt
index b50acace3..dd388fa21 100644
--- a/git-merge-tree.txt
+++ b/git-merge-tree.txt
@@ -64,10 +64,13 @@ OPTIONS
share no common history. This flag can be given to override that
check and make the merge proceed anyway.
---merge-base=::
+--merge-base=::
Instead of finding the merge-bases for and ,
specify a merge-base for the merge, and specifying multiple bases is
currently not supported. This option is incompatible with `--stdin`.
++
+As the merge-base is provided directly, and do not need
+to specify commits; trees are enough.
[[OUTPUT]]
OUTPUT
diff --git a/git-remote-helpers.html b/git-remote-helpers.html
index 2054cdcd0..556df3e0a 100644
--- a/git-remote-helpers.html
+++ b/git-remote-helpers.html
@@ -735,7 +735,7 @@ asciidoc.install();
git-remote-helpers
-2024-03-05
+2024-03-07
diff --git a/git-replay.html b/git-replay.html
index f1cdc57ab..2acbdce0c 100644
--- a/git-replay.html
+++ b/git-replay.html
@@ -1348,8 +1348,11 @@ See also git-reflog(1).
- After a failed merge, show refs that touch files having a
- conflict and don’t exist on all heads to merge.
+ Show commits touching conflicted paths in the range HEAD...<other>,
+ where <other> is the first existing pseudoref in MERGE_HEAD,
+ CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works
+ when the index has unmerged entries. This option can be used to show
+ relevant commits when resolving conflicts from a 3-way merge.
diff --git a/git-rev-list.html b/git-rev-list.html
index d17afc3b3..d8c4450cd 100644
--- a/git-rev-list.html
+++ b/git-rev-list.html
@@ -1370,8 +1370,11 @@ See also git-reflog(1).
- After a failed merge, show refs that touch files having a
- conflict and don’t exist on all heads to merge.
+ Show commits touching conflicted paths in the range HEAD...<other>,
+ where <other> is the first existing pseudoref in MERGE_HEAD,
+ CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works
+ when the index has unmerged entries. This option can be used to show
+ relevant commits when resolving conflicts from a 3-way merge.
@@ -2238,6 +2241,9 @@ allow object traversal to continue for EXPECTED promisor missing objects.
Unexpected missing objects will raise an error.
The form --missing=print is like allow-any, but will also print a
list of the missing objects. Object IDs are prefixed with a “?” character.
+
If some tips passed to the traversal are missing, they will be
+considered as missing too, and the traversal will ignore them. In case
+we cannot get their Object ID though, an error will be raised.
--exclude-promisor-objects
diff --git a/git-shortlog.html b/git-shortlog.html
index d3d2b1421..8ddba1066 100644
--- a/git-shortlog.html
+++ b/git-shortlog.html
@@ -1473,8 +1473,11 @@ See also git-reflog(1).
- After a failed merge, show refs that touch files having a
- conflict and don’t exist on all heads to merge.
+ Show commits touching conflicted paths in the range HEAD...<other>,
+ where <other> is the first existing pseudoref in MERGE_HEAD,
+ CHERRY_PICK_HEAD, REVERT_HEAD or REBASE_HEAD. Only works
+ when the index has unmerged entries. This option can be used to show
+ relevant commits when resolving conflicts from a 3-way merge.
- Do not use replacement refs to replace Git objects. See
- git-replace(1) for more information.
+ Do not use replacement refs to replace Git objects.
+ This is equivalent to exporting the GIT_NO_REPLACE_OBJECTS
+ environment variable with any value.
+ See git-replace(1) for more information.
+
+
+
+--no-lazy-fetch
+
+
+
+ Do not fetch missing objects from the promisor remote on
+ demand. Useful together with git cat-file -e <object> to
+ see if the object is locally available.
+ This is equivalent to setting the GIT_NO_LAZY_FETCH
+ environment variable to 1.
@@ -3545,6 +3559,15 @@ for full details.
+GIT_NO_REPLACE_OBJECTS
+
+
+
+ Setting and exporting this environment variable tells Git to
+ ignore replacement refs and do not replace Git objects.
+
+
+
GIT_LITERAL_PATHSPECS
@@ -3586,6 +3609,16 @@ for full details.
+GIT_NO_LAZY_FETCH
+
+
+
+ Setting this Boolean environment variable to true tells Git
+ not to lazily fetch missing objects from the promisor remote
+ on demand.
+
+
+
GIT_REFLOG_ACTION
@@ -3846,7 +3879,7 @@ the Git Security mailing list <
diff --git a/git.txt b/git.txt
index 0d25224c9..e6b766d5c 100644
--- a/git.txt
+++ b/git.txt
@@ -174,8 +174,17 @@ If you just want to run git as if it was started in `` then use
directory.
--no-replace-objects::
- Do not use replacement refs to replace Git objects. See
- linkgit:git-replace[1] for more information.
+ Do not use replacement refs to replace Git objects.
+ This is equivalent to exporting the `GIT_NO_REPLACE_OBJECTS`
+ environment variable with any value.
+ See linkgit:git-replace[1] for more information.
+
+--no-lazy-fetch::
+ Do not fetch missing objects from the promisor remote on
+ demand. Useful together with `git cat-file -e
If the sideband-all feature is advertised, the following argument can be
included in the client’s request:
@@ -1173,7 +1174,8 @@ included in the client’s request:
If the packfile-uris feature is advertised, the following argument
can be included in the client’s request as well as the potential
addition of the packfile-uris section in the server’s response as
-explained below.
+explained below. Note that at most one packfile-uris line can be sent
+to the server.
packfile-uris <comma-separated-list-of-protocols>
@@ -1719,7 +1721,7 @@ headers of that bundle or bundles.
diff --git a/gitprotocol-v2.txt b/gitprotocol-v2.txt
index 0b800abd5..414bc625d 100644
--- a/gitprotocol-v2.txt
+++ b/gitprotocol-v2.txt
@@ -346,7 +346,8 @@ the 'wanted-refs' section in the server's response as explained below.
want-ref
Indicates to the server that the client wants to retrieve a
particular ref, where is the full name of a ref on the
- server.
+ server. It is a protocol error to send want-ref for the
+ same ref more than once.
If the 'sideband-all' feature is advertised, the following argument can be
included in the client's request:
@@ -361,7 +362,8 @@ included in the client's request:
If the 'packfile-uris' feature is advertised, the following argument
can be included in the client's request as well as the potential
addition of the 'packfile-uris' section in the server's response as
-explained below.
+explained below. Note that at most one `packfile-uris` line can be sent
+to the server.
packfile-uris
Indicates to the server that the client is willing to receive
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index f22127895..e1ec52da3 100644
--- a/howto/coordinate-embargoed-releases.html
+++ b/howto/coordinate-embargoed-releases.html
@@ -1038,7 +1038,7 @@ Thanks,
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html
index 89f462358..6153a193b 100644
--- a/howto/keep-canonical-history-correct.html
+++ b/howto/keep-canonical-history-correct.html
@@ -735,7 +735,7 @@ asciidoc.install();
Keep authoritative canonical history correct with git pull
-2024-03-05
+2024-03-07
@@ -939,7 +939,7 @@ tip of your master again and redo the two merges:
@@ -848,7 +848,7 @@ This is still crude and does not protect against simultaneous
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html
index af5ad2b97..ab93292de 100644
--- a/howto/recover-corrupted-blob-object.html
+++ b/howto/recover-corrupted-blob-object.html
@@ -735,7 +735,7 @@ asciidoc.install();
@@ -849,7 +849,7 @@ Please note that if the other project merges from you, then it will
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html
index b512be852..ed75319c6 100644
--- a/howto/using-signed-tag-in-pull-request.html
+++ b/howto/using-signed-tag-in-pull-request.html
@@ -735,7 +735,7 @@ asciidoc.install();
How to use a signed tag in pull requests
-2024-03-05
+2024-03-07
@@ -953,7 +953,7 @@ as part of the merge commit.
diff --git a/rev-list-options.txt b/rev-list-options.txt
index a583b52c6..408d9314d 100644
--- a/rev-list-options.txt
+++ b/rev-list-options.txt
@@ -341,8 +341,11 @@ See also linkgit:git-reflog[1].
Under `--pretty=reference`, this information will not be shown at all.
--merge::
- After a failed merge, show refs that touch files having a
- conflict and don't exist on all heads to merge.
+ Show commits touching conflicted paths in the range `HEAD...`,
+ where `` is the first existing pseudoref in `MERGE_HEAD`,
+ `CHERRY_PICK_HEAD`, `REVERT_HEAD` or `REBASE_HEAD`. Only works
+ when the index has unmerged entries. This option can be used to show
+ relevant commits when resolving conflicts from a 3-way merge.
--boundary::
Output excluded boundary commits. Boundary commits are
@@ -1019,6 +1022,10 @@ Unexpected missing objects will raise an error.
+
The form '--missing=print' is like 'allow-any', but will also print a
list of the missing objects. Object IDs are prefixed with a ``?'' character.
++
+If some tips passed to the traversal are missing, they will be
+considered as missing too, and the traversal will ignore them. In case
+we cannot get their Object ID though, an error will be raised.
--exclude-promisor-objects::
(For internal use only.) Prefilter object traversal at
diff --git a/technical/api-error-handling.html b/technical/api-error-handling.html
index 321ca93db..7657778c3 100644
--- a/technical/api-error-handling.html
+++ b/technical/api-error-handling.html
@@ -735,7 +735,7 @@ asciidoc.install();