summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/RelNotes/2.29.0.txt16
-rw-r--r--Documentation/git-notes.txt2
-rw-r--r--Documentation/technical/api-parse-options.txt4
-rw-r--r--Makefile2
-rw-r--r--add-interactive.c28
-rw-r--r--add-patch.c48
-rw-r--r--argv-array.c109
-rw-r--r--bisect.c22
-rw-r--r--builtin/add.c18
-rw-r--r--builtin/am.c80
-rw-r--r--builtin/annotate.c10
-rw-r--r--builtin/bisect--helper.c20
-rw-r--r--builtin/bundle.c14
-rw-r--r--builtin/checkout.c18
-rw-r--r--builtin/clone.c38
-rw-r--r--builtin/commit.c8
-rw-r--r--builtin/describe.c44
-rw-r--r--builtin/difftool.c30
-rw-r--r--builtin/fetch.c64
-rw-r--r--builtin/gc.c78
-rw-r--r--builtin/grep.c2
-rw-r--r--builtin/log.c12
-rw-r--r--builtin/ls-remote.c6
-rw-r--r--builtin/merge.c4
-rw-r--r--builtin/pack-objects.c66
-rw-r--r--builtin/pull.c160
-rw-r--r--builtin/range-diff.c4
-rw-r--r--builtin/rebase.c90
-rw-r--r--builtin/receive-pack.c126
-rw-r--r--builtin/remote-ext.c4
-rw-r--r--builtin/remote.c26
-rw-r--r--builtin/repack.c72
-rw-r--r--builtin/replace.c18
-rw-r--r--builtin/show-branch.c16
-rw-r--r--builtin/stash.c162
-rw-r--r--builtin/submodule--helper.c144
-rw-r--r--builtin/update-ref.c2
-rw-r--r--builtin/upload-archive.c12
-rw-r--r--builtin/worktree.c68
-rw-r--r--bundle.c24
-rw-r--r--bundle.h4
-rw-r--r--column.c12
-rw-r--r--commit.c10
-rw-r--r--compat/mingw.c4
-rw-r--r--compat/terminal.c18
-rw-r--r--config.c2
-rw-r--r--connect.c69
-rw-r--r--connected.c24
-rw-r--r--contrib/completion/git-completion.bash8
-rwxr-xr-xcontrib/subtree/t/t7900-subtree.sh6
-rw-r--r--daemon.c60
-rw-r--r--diff.c32
-rw-r--r--environment.c12
-rw-r--r--exec-cmd.c18
-rw-r--r--exec-cmd.h4
-rw-r--r--fast-import.c4
-rw-r--r--fetch-pack.c46
-rw-r--r--fsmonitor.c6
-rw-r--r--git.c32
-rw-r--r--gpg-interface.c22
-rw-r--r--graph.c16
-rw-r--r--http-backend.c8
-rw-r--r--http-push.c18
-rw-r--r--http.c8
-rw-r--r--imap-send.c2
-rw-r--r--line-log.c8
-rw-r--r--list-objects-filter-options.c2
-rw-r--r--ls-refs.c18
-rw-r--r--ls-refs.h4
-rw-r--r--merge-recursive.c8
-rw-r--r--merge-recursive.h13
-rw-r--r--merge.c18
-rw-r--r--midx.c12
-rw-r--r--pager.c8
-rw-r--r--parse-options-cb.c8
-rw-r--r--pathspec.c10
-rw-r--r--quote.c8
-rw-r--r--quote.h8
-rw-r--r--range-diff.c40
-rw-r--r--range-diff.h4
-rw-r--r--ref-filter.c12
-rw-r--r--refs.c8
-rw-r--r--refs.h4
-rw-r--r--refspec.c10
-rw-r--r--refspec.h4
-rw-r--r--remote-curl.c102
-rw-r--r--remote-testsvn.c10
-rw-r--r--remote.c20
-rw-r--r--remote.h4
-rw-r--r--revision.c30
-rw-r--r--run-command.c72
-rw-r--r--run-command.h12
-rw-r--r--send-pack.c18
-rw-r--r--sequencer.c126
-rw-r--r--serve.c20
-rw-r--r--serve.h4
-rw-r--r--sha1-file.c17
-rw-r--r--strvec.c109
-rw-r--r--strvec.h (renamed from argv-array.h)58
-rw-r--r--sub-process.c2
-rw-r--r--submodule.c218
-rw-r--r--submodule.h6
-rw-r--r--t/helper/test-run-command.c52
-rw-r--r--t/helper/test-trace2.c2
-rwxr-xr-xt/t1450-fsck.sh2
-rwxr-xr-xt/t5300-pack-object.sh36
-rwxr-xr-xt/t6038-merge-text-auto.sh26
-rwxr-xr-xt/t8002-blame.sh11
-rw-r--r--tmp-objdir.c20
-rw-r--r--transport-helper.c36
-rw-r--r--transport-internal.h4
-rw-r--r--transport.c12
-rw-r--r--transport.h2
-rw-r--r--unpack-trees.c12
-rw-r--r--unpack-trees.h4
-rw-r--r--upload-pack.c53
-rw-r--r--upload-pack.h4
-rw-r--r--worktree.c18
-rw-r--r--wt-status.c19
119 files changed, 1764 insertions, 1700 deletions
diff --git a/Documentation/RelNotes/2.29.0.txt b/Documentation/RelNotes/2.29.0.txt
index 7f6b582436..41a2348191 100644
--- a/Documentation/RelNotes/2.29.0.txt
+++ b/Documentation/RelNotes/2.29.0.txt
@@ -31,6 +31,18 @@ Performance, Internal Implementation, Development Support etc.
* Dev support to limit the use of test_must_fail to only git commands.
+ * While packing many objects in a repository with a promissor remote,
+ lazily fetching missing objects from the promissor remote one by
+ one may be inefficient---the code now attempts to fetch all the
+ missing objects in batch (obviously this won't work for a lazy
+ clone that lazily fetches tree objects as you cannot even enumerate
+ what blobs are missing until you learn which trees are missing).
+
+ * The pretend-object mechanism checks if the given object already
+ exists in the object store before deciding to keep the data
+ in-core, but the check would have triggered lazy fetching of such
+ an object from a promissor remote.
+
Fixes since v2.28
-----------------
@@ -40,7 +52,6 @@ Fixes since v2.28
taught to fail when $elsewhere is not an empty directory.
(merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).
-
* With the base fix to 2.27 regresion, any new extensions in a v0
repository would still be silently honored, which is not quite
right. Instead, complain and die loudly.
@@ -68,6 +79,9 @@ Fixes since v2.28
* Fix to a regression introduced during 2.27 cycle.
(merge cada7308ad en/fill-directory-exponential later to maint).
+ * Command line completion (in contrib/) update.
+ (merge 688b87c81b mp/complete-show-color-moved later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 84544f2ea3 sk/typofixes later to maint).
(merge b17f411ab5 ar/help-guides-doc later to maint).
diff --git a/Documentation/git-notes.txt b/Documentation/git-notes.txt
index ced2e8280e..0a4200674c 100644
--- a/Documentation/git-notes.txt
+++ b/Documentation/git-notes.txt
@@ -223,7 +223,7 @@ are taken from notes refs. A notes ref is usually a branch which
contains "files" whose paths are the object names for the objects
they describe, with some directory separators included for performance
reasons footnote:[Permitted pathnames have the form
-'ab'`/`'cd'`/`'ef'`/`'...'`/`'abcdef...': a sequence of directory
+'bf'`/`'fe'`/`'30'`/`'...'`/`'680d5a...': a sequence of directory
names of two hexadecimal digits each followed by a filename with the
rest of the object ID.].
diff --git a/Documentation/technical/api-parse-options.txt b/Documentation/technical/api-parse-options.txt
index 2e2e7c10c6..5a60bbfa7f 100644
--- a/Documentation/technical/api-parse-options.txt
+++ b/Documentation/technical/api-parse-options.txt
@@ -232,9 +232,9 @@ There are some macros to easily define options:
will be overwritten, so this should only be used for options where
the last one specified on the command line wins.
-`OPT_PASSTHRU_ARGV(short, long, &argv_array_var, arg_str, description, flags)`::
+`OPT_PASSTHRU_ARGV(short, long, &strvec_var, arg_str, description, flags)`::
Introduce an option where all instances of it on the command-line will
- be reconstructed into an argv_array. This is useful when you need to
+ be reconstructed into a strvec. This is useful when you need to
pass the command-line option, which can be specified multiple times,
to another command.
diff --git a/Makefile b/Makefile
index 372139f1f2..65f8cfb236 100644
--- a/Makefile
+++ b/Makefile
@@ -828,7 +828,6 @@ LIB_OBJS += apply.o
LIB_OBJS += archive-tar.o
LIB_OBJS += archive-zip.o
LIB_OBJS += archive.o
-LIB_OBJS += argv-array.o
LIB_OBJS += attr.o
LIB_OBJS += base85.o
LIB_OBJS += bisect.o
@@ -986,6 +985,7 @@ LIB_OBJS += sigchain.o
LIB_OBJS += split-index.o
LIB_OBJS += stable-qsort.o
LIB_OBJS += strbuf.o
+LIB_OBJS += strvec.o
LIB_OBJS += streaming.o
LIB_OBJS += string-list.o
LIB_OBJS += sub-process.o
diff --git a/add-interactive.c b/add-interactive.c
index 29cd2fe020..555c4abf32 100644
--- a/add-interactive.c
+++ b/add-interactive.c
@@ -935,18 +935,18 @@ static int run_patch(struct add_i_state *s, const struct pathspec *ps,
opts->prompt = N_("Patch update");
count = list_and_choose(s, files, opts);
if (count > 0) {
-