summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/RelNotes/2.35.0.txt60
-rw-r--r--Documentation/config/gpg.txt4
-rw-r--r--Documentation/git-am.txt16
-rw-r--r--Documentation/git-clone.txt8
-rw-r--r--Documentation/git-fmt-merge-msg.txt6
-rw-r--r--Documentation/git-format-patch.txt6
-rw-r--r--Documentation/git-ls-files.txt5
-rw-r--r--Documentation/git-merge.txt8
-rw-r--r--Documentation/git-repack.txt5
-rw-r--r--Documentation/git-sparse-checkout.txt100
10 files changed, 162 insertions, 56 deletions
diff --git a/Documentation/RelNotes/2.35.0.txt b/Documentation/RelNotes/2.35.0.txt
index dc72843e16..ff90dd4776 100644
--- a/Documentation/RelNotes/2.35.0.txt
+++ b/Documentation/RelNotes/2.35.0.txt
@@ -62,6 +62,24 @@ UI, Workflows & Features
with the "--allow-empty" option. It also learned to honor the
"--quiet" option given from the command line.
+ * The "init" and "set" subcommands in "git sparse-checkout" have been
+ unified for a better user experience and performance.
+
+ * Many git commands that deal with working tree files try to remove a
+ directory that becomes empty (i.e. "git switch" from a branch that
+ has the directory to another branch that does not would attempt
+ remove all files in the directory and the directory itself). This
+ drops users into an unfamiliar situation if the command was run in
+ a subdirectory that becomes subject to removal due to the command.
+ The commands have been taught to keep an empty directory if it is
+ the directory they were started in to avoid surprising users.
+
+ * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
+ done to a piece of e-mail without a patch in it.
+
+ * The default merge message prepared by "git merge" records the name
+ of the current branch; the name can be overridden with a new option
+ to allow users to pretend a merge is made on a different branch.
Performance, Internal Implementation, Development Support etc.
@@ -130,6 +148,29 @@ Performance, Internal Implementation, Development Support etc.
* The DEVELOPER=yes build uses -std=gnu99 now.
+ * "git format-patch" uses a single rev_info instance and then exits.
+ Mark the structure with UNLEAK() macro to squelch leak sanitizer.
+
+ * New interface into the tmp-objdir API to help in-core use of the
+ quarantine feature.
+
+ * Broken &&-chains in the test scripts have been corrected.
+
+ * The RCS keyword substitution in "git p4" used to be done assuming
+ that the contents are UTF-8 text, which can trigger decoding
+ errors. We now treat the contents as a bytestring for robustness
+ and correctness.
+
+ * The conditions to choose different definitions of the FLEX_ARRAY
+ macro for vendor compilers has been simplified to make it easier to
+ maintain.
+
+ * Correctness and performance update to "diff --color-moved" feature.
+
+ * "git upload-pack" (the other side of "git fetch") used a 8kB buffer
+ but most of its payload came on 64kB "packets". The buffer size
+ has been enlarged so that such a packet fits.
+
Fixes since v2.34
-----------------
@@ -254,6 +295,21 @@ Fixes since v2.34
which has been corrected.
(merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).
+ * Among some code paths that ask an yes/no question, only one place
+ gave a prompt that looked different from the others, which has been
+ updated to match what the others create.
+ (merge 0fc8ed154c km/help-prompt-fix later to maint).
+
+ * "git log --invert-grep --author=<name>" used to exclude commits
+ written by the given author, but now "--invert-grep" only affects
+ the matches made by the "--grep=<pattern>" option.
+ (merge 794c000267 rs/log-invert-grep-with-headers later to maint).
+
+ * "git grep --perl-regexp" failed to match UTF-8 characters with
+ wildcard when the pattern consists only of ASCII letters, which has
+ been corrected.
+ (merge 32e3e8bc55 rs/pcre2-utf later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
(merge f9b2b6684d ja/doc-cleanup later to maint).
@@ -272,3 +328,7 @@ Fixes since v2.34
(merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
(merge eafd6e7e55 ab/die-with-bug later to maint).
(merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
+ (merge 47ca93d071 ds/repack-fixlets later to maint).
+ (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
+ (merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
+ (merge 999bba3e0b rs/daemon-plug-leak later to maint).
diff --git a/Documentation/config/gpg.txt b/Documentation/config/gpg.txt
index c9be554c73..0cb189a077 100644
--- a/Documentation/config/gpg.txt
+++ b/Documentation/config/gpg.txt
@@ -34,7 +34,7 @@ gpg.minTrustLevel::
* `fully`
* `ultimate`
-gpg.ssh.defaultKeyCommand:
+gpg.ssh.defaultKeyCommand::
This command that will be run when user.signingkey is not set and a ssh
signature is requested. On successful exit a valid ssh public key is
expected in the first line of its output. To automatically use the first
@@ -44,7 +44,7 @@ gpg.ssh.allowedSignersFile::
A file containing ssh public keys which you are willing to trust.
The file consists of one or more lines of principals followed by an ssh
public key.
- e.g.: user1@example.com,user2@example.com ssh-rsa AAAAX1...
+ e.g.: `user1@example.com,user2@example.com ssh-rsa AAAAX1...`
See ssh-keygen(1) "ALLOWED SIGNERS" for details.
The principal is only used to identify the key and is available when
verifying a signature.
diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index 0a4a984dfd..09107fb106 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -16,8 +16,9 @@ SYNOPSIS
[--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
[--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
[--quoted-cr=<action>]
+ [--empty=(stop|drop|keep)]
[(<mbox> | <Maildir>)...]
-'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)])
+'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)] | --allow-empty)
DESCRIPTION
-----------
@@ -63,6 +64,14 @@ OPTIONS
--quoted-cr=<action>::
This flag will be passed down to 'git mailinfo' (see linkgit:git-mailinfo[1]).
+--empty=(stop|drop|keep)::
+ By default, or when the option is set to 'stop', the command
+ errors out on an input e-mail message lacking a patch
+ and stops into the middle of the current am session. When this
+ option is set to 'drop', skip such an e-mail message instead.
+ When this option is set to 'keep', create an empty commit,
+ recording the contents of the e-mail message as its log.
+
-m::
--message-id::
Pass the `-m` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]),
@@ -191,6 +200,11 @@ default. You can use `--no-utf8` to override this.
the e-mail message; if `diff`, show the diff portion only.
Defaults to `raw`.
+--allow-empty::
+ After a patch failure on an input e-mail message lacking a patch,
+ create an empty commit with the contents of the e-mail message
+ as its log message.
+
DISCUSSION
----------
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 9685ea0691..984d194934 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -167,10 +167,10 @@ objects from the source repository into a pack in the cloned repository.
configuration variables are created.
--sparse::
- Initialize the sparse-checkout file so the working
- directory starts with only the files in the root
- of the repository. The sparse-checkout file can be
- modified to grow the working directory as needed.
+ Employ a sparse-checkout, with only files in the toplevel
+ directory initially being present. The
+ linkgit:git-sparse-checkout[1] command can be used to grow the
+ working directory as needed.
--filter=<filter-spec>::
Use the partial clone feature and request that the server sends
diff --git a/Documentation/git-fmt-merge-msg.txt b/Documentation/git-fmt-merge-msg.txt
index 6793d8fc05..6f28812f38 100644
--- a/Documentation/git-fmt-merge-msg.txt
+++ b/Documentation/git-fmt-merge-msg.txt
@@ -9,7 +9,7 @@ git-fmt-merge-msg - Produce a merge commit message
SYNOPSIS
--------
[verse]
-'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log]
+'git fmt-merge-msg' [-m <message>] [--into-name <branch>] [--log[=<n>] | --no-log]
'git fmt-merge-msg' [-m <message>] [--log[=<n>] | --no-log] -F <file>
DESCRIPTION
@@ -44,6 +44,10 @@ OPTIONS
Use <message> instead of the branch names for the first line
of the log message. For use with `--log`.
+--into-name <branch>::
+ Prepare the merge message as if merging to the branch `<branch>`,
+ instead of the name of the real branch to which the merge is made.
+
-F <file>::
--file <file>::
Take the list of merged objects from <file> instead of
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 113eabc107..be797d7a28 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -18,7 +18,7 @@ SYNOPSIS
[-n | --numbered | -N | --no-numbered]
[--start-number <n>] [--numbered-files]
[--in-reply-to=<message id>] [--suffix=.<sfx>]
- [--ignore-if-in-upstream]
+ [--ignore-if-in-upstream] [--always]
[--cover-from-description=<mode>]
[--rfc] [--subject-prefix=<subject prefix>]
[(--reroll-count|-v) <n>]
@@ -192,6 +192,10 @@ will want to ensure that threading is disabled for `git send-email`.
patches being generated, and any patch that matches is
ignored.
+--always::
+ Include patches for commits that do not introduce any change,
+ which are omitted by default.
+
--cover-from-description=<mode>::
Controls which parts of the cover letter will be automatically
populated using the branch's description.
diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
index 2e3d695fa2..48cc7c0b6f 100644
--- a/Documentation/git-ls-files.txt
+++ b/Documentation/git-ls-files.txt
@@ -187,6 +187,11 @@ Both the <eolinfo> in the index ("i/<eolinfo>")
and in the working tree ("w/<eolinfo>") are shown for regular files,
followed by the ("attr/<eolattr>").
+--sparse::
+ If the index is sparse, show the sparse directories without expanding
+ to the contained files. Sparse directories will be shown with a
+ trailing slash, such as "x/" for a sparse directory "x".
+
\--::
Do not interpret any more arguments as options.
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index e8cecf5a51..3125473cc1 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -12,7 +12,8 @@ SYNOPSIS
'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
[--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
[--[no-]allow-unrelated-histories]
- [--[no-]rerere-autoupdate] [-m <msg>] [-F <file>] [<commit>...]
+ [--[no-]rerere-autoupdate] [-m <msg>] [-F <file>]
+ [--into-name <branch>] [<commit>...]
'git merge' (--continue | --abort | --quit)
DESCRIPTION
@@ -76,6 +77,11 @@ The 'git fmt-merge-msg' command can be
used to give a good default for automated 'git merge'
invocations. The automated message can include the branch description.
+--into-name <branch>::
+ Prepare the default merge message as if merging to the branch
+ `<branch>`, instead of the name of the real branch to which
+ the merge is made.
+
-F <file>::
--file=<file>::
Read the commit message to be used for the merge commit (in
diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt
index 7183fb498f..ee30edc178 100644
--- a/Documentation/git-repack.txt
+++ b/Documentation/git-repack.txt
@@ -76,8 +76,9 @@ to the new separate pack will be written.
linkgit:git-pack-objects[1].
-q::
- Pass the `-q` option to 'git pack-objects'. See
- linkgit:git-pack-objects[1].
+--quiet::
+ Show no progress over the standard error stream and pass the `-q`
+ option to 'git pack-objects'. See linkgit:git-pack-objects[1].
-n::
Do not update the server information with
diff --git a/Documentation/git-sparse-checkout.txt b/Documentation/git-sparse-checkout.txt
index 9a78dd721e..b81dbe0654 100644
--- a/Documentation/git-sparse-checkout.txt
+++ b/Documentation/git-sparse-checkout.txt
@@ -30,28 +30,36 @@ COMMANDS
'list'::
Describe the patterns in the sparse-checkout file.
-'init'::
- Enable the `core.sparseCheckout` setting. If the
- sparse-checkout file does not exist, then populate it with
- patterns that match every file in the root directory and
- no other directories, then will remove all directories tracked
- by Git. Add patterns to the sparse-checkout file to
- repopulate the working directory.
+'set'::
+ Enable the necessary config settings
+ (extensions.worktreeConfig, core.sparseCheckout,
+ core.sparseCheckoutCone) if they are not already enabled, and
+ write a set of patterns to the sparse-checkout file from the
+ list of arguments following the 'set' subcommand. Update the
+ working directory to match the new patterns.
+
-To avoid interfering with other worktrees, it first enables the
-`extensions.worktreeConfig` setting and makes sure to set the
-`core.sparseCheckout` setting in the worktree-specific config file.
+When the `--stdin` option is provided, the patterns are read from
+standard in as a newline-delimited list instead of from the arguments.
+
-When `--cone` is provided, the `core.sparseCheckoutCone` setting is
-also set, allowing for better performance with a limited set of
-patterns (see 'CONE PATTERN SET' below).
+When `--cone` is passed or `core.sparseCheckoutCone` is enabled, the
+input list is considered a list of directories instead of
+sparse-checkout patterns. This allows for better performance with a
+limited set of patterns (see 'CONE PATTERN SET' below). Note that the
+set command will write patterns to the sparse-checkout file to include
+all files contained in those directories (recursively) as well as
+files that are siblings of ancestor directories. The input format
+matches the output of `git ls-tree --name-only`. This includes
+interpreting pathnames that begin with a double quote (") as C-style
+quoted strings. This may become the default in the future; --no-cone
+can be passed to request non-cone mode.
+
-Use the `--[no-]sparse-index` option to toggle the use of the sparse
-index format. This reduces the size of the index to be more closely
-aligned with your sparse-checkout definition. This can have significant
-performance advantages for commands such as `git status` or `git add`.
-This feature is still experimental. Some commands might be slower with
-a sparse index until they are properly integrated with the feature.
+Use the `--[no-]sparse-index` option to use a sparse index (the
+default is to not use it). A sparse index reduces the size of the
+index to be more closely aligned with your sparse-checkout
+definition. This can have significant performance advantages for
+commands such as `git status` or `git add`. This feature is still
+experimental. Some commands might be slower with a sparse index until
+they are properly integrated with the feature.
+
**WARNING:** Using a sparse index requires modifying the index in a way
that is not completely understood by external tools. If you have trouble
@@ -60,23 +68,6 @@ to rewrite your index to not be sparse. Older versions of Git will not
understand the sparse directory entries index extension and may fail to
interact with your repository until it is disabled.
-'set'::
- Write a set of patterns to the sparse-checkout file, as given as
- a list of arguments following the 'set' subcommand. Update the
- working directory to match the new patterns. Enable the
- core.sparseCheckout config setting if it is not already enabled.
-+
-When the `--stdin` option is provided, the patterns are read from
-standard in as a newline-delimited list instead of from the arguments.
-+
-When `core.sparseCheckoutCone` is enabled, the input list is considered a
-list of directories instead of sparse-checkout patterns. The command writes
-patterns to the sparse-checkout file to include all files contained in those
-directories (recursively) as well as files that are siblings of ancestor
-directories. The input format matches the output of `git ls-tree --name-only`.
-This includes interpreting pathnames that begin with a double quote (") as
-C-style quoted strings.
-
'add'::
Update the sparse-checkout file to include additional patterns.
By default, these patterns are read from the command-line arguments,
@@ -93,12 +84,35 @@ C-style quoted strings.
cases, it can make sense to run `git sparse-checkout reapply` later
after cleaning up affected paths (e.g. resolving conflicts, undoing
or committing changes, etc.).
++
+The `reapply` command can also take `--[no-]cone` and `--[no-]sparse-index`
+flags, with the same meaning as the flags from the `set` command, in order
+to change which sparsity mode you are using without needing to also respecify
+all sparsity paths.
'disable'::
Disable the `core.sparseCheckout` config setting, and restore the
- working directory to include all files. Leaves the sparse-checkout
- file intact so a later 'git sparse-checkout init' command may
- return the working directory to the same state.
+ working directory to include all files.
+
+'init'::
+ Deprecated command that behaves like `set` with no specified paths.
+ May be removed in the future.
++
+Historically, `set` did not handle all the necessary config settings,
+which meant that both `init` and `set` had to be called. Invoking
+both meant the `init` step would first remove nearly all tracked files
+(and in cone mode, ignored files too), then the `set` step would add
+many of the tracked files (but not ignored files) back. In addition
+to the lost files, the performance and UI of this combination was
+poor.
++
+Also, historically, `init` would not actually initialize the
+sparse-checkout file if it already existed. This meant it was
+possible to return to a sparse-checkout without remembering which
+paths to pass to a subsequent 'set' or 'add' command. However,
+`--cone` and `--sparse-index` options would not be remembered across
+the disable command, so the easy restore of calling a plain `init`
+decreased in utility.
SPARSE CHECKOUT
---------------
@@ -107,7 +121,7 @@ SPARSE CHECKOUT
It uses the skip-worktree bit (see linkgit:git-update-index[1]) to tell
Git whether a file in the working directory is worth looking at. If
the skip-worktree bit is set, then the file is ignored in the working
-directory. Git will not populate the contents of those files, which
+directory. Git will avoid populating the contents of those files, which
makes a sparse checkout helpful when working in a repository with many
files, but only a few are important to the current user.
@@ -117,10 +131,8 @@ directory, it updates the skip-worktree bits in the index based
on this file. The files matching the patterns in the file will
appear in the working directory, and the rest will not.
-To enable the sparse-checkout feature, run `git sparse-checkout init` to
-initialize a simple sparse-checkout file and enable the `core.sparseCheckout`
-config setting. Then, run `git sparse-checkout set` to modify the patterns in
-the sparse-checkout file.
+To enable the sparse-checkout feature, run `git sparse-checkout set` to
+set the patterns you want to use.
To repopulate the working directory with all files, use the
`git sparse-checkout disable` command.