From f4609b896fac842433bd495c166d5987852a6a73 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 21 Nov 2020 19:20:35 +0100 Subject: merge(3p/git): Merge git subtree at v2.29.2 This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb --- third_party/default.nix | 8 +- third_party/git/.cirrus.yml | 15 + third_party/git/.editorconfig | 2 +- third_party/git/.github/CONTRIBUTING.md | 3 + third_party/git/.github/workflows/main.yml | 350 + third_party/git/.gitignore | 11 +- third_party/git/.mailmap | 6 + third_party/git/.travis.yml | 12 +- third_party/git/.tsan-suppressions | 6 + third_party/git/CODE_OF_CONDUCT.md | 93 + third_party/git/Documentation/CodingGuidelines | 29 +- third_party/git/Documentation/Makefile | 37 +- .../git/Documentation/MyFirstContribution.txt | 109 +- .../git/Documentation/MyFirstObjectWalk.txt | 902 + third_party/git/Documentation/RelNotes/1.5.0.txt | 4 +- third_party/git/Documentation/RelNotes/1.6.2.txt | 2 +- third_party/git/Documentation/RelNotes/1.6.3.txt | 2 +- third_party/git/Documentation/RelNotes/1.6.4.txt | 2 +- third_party/git/Documentation/RelNotes/1.6.5.4.txt | 2 +- third_party/git/Documentation/RelNotes/1.6.5.txt | 2 +- third_party/git/Documentation/RelNotes/1.6.6.txt | 2 +- third_party/git/Documentation/RelNotes/1.7.0.2.txt | 2 +- .../git/Documentation/RelNotes/1.7.10.4.txt | 2 +- .../git/Documentation/RelNotes/1.7.12.3.txt | 2 +- third_party/git/Documentation/RelNotes/1.7.5.3.txt | 2 +- third_party/git/Documentation/RelNotes/1.8.0.txt | 2 +- third_party/git/Documentation/RelNotes/1.8.4.1.txt | 2 +- third_party/git/Documentation/RelNotes/1.8.4.txt | 2 +- third_party/git/Documentation/RelNotes/2.1.3.txt | 2 +- third_party/git/Documentation/RelNotes/2.10.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.10.2.txt | 2 +- third_party/git/Documentation/RelNotes/2.11.1.txt | 2 +- third_party/git/Documentation/RelNotes/2.12.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.13.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.13.3.txt | 4 +- third_party/git/Documentation/RelNotes/2.14.0.txt | 4 +- third_party/git/Documentation/RelNotes/2.14.6.txt | 54 + third_party/git/Documentation/RelNotes/2.15.4.txt | 11 + third_party/git/Documentation/RelNotes/2.16.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.16.3.txt | 2 +- third_party/git/Documentation/RelNotes/2.16.6.txt | 8 + third_party/git/Documentation/RelNotes/2.17.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.17.3.txt | 12 + third_party/git/Documentation/RelNotes/2.17.4.txt | 16 + third_party/git/Documentation/RelNotes/2.17.5.txt | 22 + third_party/git/Documentation/RelNotes/2.18.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.18.2.txt | 8 + third_party/git/Documentation/RelNotes/2.18.3.txt | 5 + third_party/git/Documentation/RelNotes/2.18.4.txt | 5 + third_party/git/Documentation/RelNotes/2.19.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.19.3.txt | 8 + third_party/git/Documentation/RelNotes/2.19.4.txt | 5 + third_party/git/Documentation/RelNotes/2.19.5.txt | 5 + third_party/git/Documentation/RelNotes/2.20.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.20.2.txt | 18 + third_party/git/Documentation/RelNotes/2.20.3.txt | 5 + third_party/git/Documentation/RelNotes/2.20.4.txt | 5 + third_party/git/Documentation/RelNotes/2.21.1.txt | 12 + third_party/git/Documentation/RelNotes/2.21.2.txt | 5 + third_party/git/Documentation/RelNotes/2.21.3.txt | 5 + third_party/git/Documentation/RelNotes/2.22.2.txt | 8 + third_party/git/Documentation/RelNotes/2.22.3.txt | 5 + third_party/git/Documentation/RelNotes/2.22.4.txt | 5 + third_party/git/Documentation/RelNotes/2.23.1.txt | 8 + third_party/git/Documentation/RelNotes/2.23.2.txt | 5 + third_party/git/Documentation/RelNotes/2.23.3.txt | 5 + third_party/git/Documentation/RelNotes/2.24.0.txt | 398 + third_party/git/Documentation/RelNotes/2.24.1.txt | 8 + third_party/git/Documentation/RelNotes/2.24.2.txt | 5 + third_party/git/Documentation/RelNotes/2.24.3.txt | 5 + third_party/git/Documentation/RelNotes/2.25.0.txt | 370 + third_party/git/Documentation/RelNotes/2.25.1.txt | 55 + third_party/git/Documentation/RelNotes/2.25.2.txt | 60 + third_party/git/Documentation/RelNotes/2.25.3.txt | 5 + third_party/git/Documentation/RelNotes/2.25.4.txt | 5 + third_party/git/Documentation/RelNotes/2.26.0.txt | 341 + third_party/git/Documentation/RelNotes/2.26.1.txt | 5 + third_party/git/Documentation/RelNotes/2.26.2.txt | 5 + third_party/git/Documentation/RelNotes/2.27.0.txt | 525 + third_party/git/Documentation/RelNotes/2.28.0.txt | 236 + third_party/git/Documentation/RelNotes/2.29.0.txt | 514 + third_party/git/Documentation/RelNotes/2.29.1.txt | 11 + third_party/git/Documentation/RelNotes/2.29.2.txt | 12 + third_party/git/Documentation/RelNotes/2.3.3.txt | 2 +- third_party/git/Documentation/RelNotes/2.3.7.txt | 2 +- third_party/git/Documentation/RelNotes/2.4.3.txt | 2 +- third_party/git/Documentation/RelNotes/2.5.0.txt | 3 +- third_party/git/Documentation/RelNotes/2.7.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.7.1.txt | 2 +- third_party/git/Documentation/RelNotes/2.7.3.txt | 2 +- third_party/git/Documentation/RelNotes/2.8.0.txt | 4 +- third_party/git/Documentation/RelNotes/2.8.3.txt | 4 +- third_party/git/Documentation/RelNotes/2.9.0.txt | 2 +- third_party/git/Documentation/RelNotes/2.9.3.txt | 2 +- third_party/git/Documentation/SubmittingPatches | 35 +- third_party/git/Documentation/asciidoc.conf | 25 +- .../git/Documentation/asciidoctor-extensions.rb | 24 +- third_party/git/Documentation/blame-options.txt | 6 + third_party/git/Documentation/cmd-list.perl | 27 +- third_party/git/Documentation/config.txt | 121 +- third_party/git/Documentation/config/add.txt | 5 + third_party/git/Documentation/config/advice.txt | 9 + third_party/git/Documentation/config/branch.txt | 7 +- .../git/Documentation/config/commitgraph.txt | 8 + third_party/git/Documentation/config/core.txt | 35 +- .../git/Documentation/config/credential.txt | 10 +- third_party/git/Documentation/config/diff.txt | 6 +- .../git/Documentation/config/extensions.txt | 8 + third_party/git/Documentation/config/feature.txt | 26 + third_party/git/Documentation/config/fetch.txt | 40 +- .../git/Documentation/config/fmt-merge-msg.txt | 12 + third_party/git/Documentation/config/format.txt | 36 +- third_party/git/Documentation/config/gc.txt | 2 +- third_party/git/Documentation/config/gpg.txt | 15 + third_party/git/Documentation/config/http.txt | 33 +- third_party/git/Documentation/config/index.txt | 1 + third_party/git/Documentation/config/init.txt | 4 + third_party/git/Documentation/config/log.txt | 6 + .../git/Documentation/config/maintenance.txt | 16 + third_party/git/Documentation/config/merge.txt | 10 + third_party/git/Documentation/config/mergetool.txt | 10 + third_party/git/Documentation/config/pack.txt | 10 +- third_party/git/Documentation/config/protocol.txt | 9 +- third_party/git/Documentation/config/pull.txt | 7 +- third_party/git/Documentation/config/push.txt | 11 +- third_party/git/Documentation/config/rebase.txt | 6 + third_party/git/Documentation/config/receive.txt | 22 + third_party/git/Documentation/config/remote.txt | 8 + third_party/git/Documentation/config/sendemail.txt | 5 + third_party/git/Documentation/config/stash.txt | 18 +- third_party/git/Documentation/config/submodule.txt | 16 +- third_party/git/Documentation/config/tag.txt | 9 +- third_party/git/Documentation/config/tar.txt | 6 + third_party/git/Documentation/config/trace2.txt | 15 + .../git/Documentation/config/uploadpack.txt | 18 + third_party/git/Documentation/config/user.txt | 7 +- third_party/git/Documentation/date-formats.txt | 4 +- third_party/git/Documentation/diff-format.txt | 2 +- .../git/Documentation/diff-generate-patch.txt | 35 +- third_party/git/Documentation/diff-options.txt | 27 +- third_party/git/Documentation/doc-diff | 19 +- third_party/git/Documentation/fetch-options.txt | 57 +- third_party/git/Documentation/git-add.txt | 16 +- third_party/git/Documentation/git-am.txt | 19 +- third_party/git/Documentation/git-apply.txt | 20 +- third_party/git/Documentation/git-archive.txt | 6 + .../git/Documentation/git-bisect-lk2009.txt | 22 +- third_party/git/Documentation/git-bisect.txt | 17 +- third_party/git/Documentation/git-branch.txt | 12 +- third_party/git/Documentation/git-bugreport.txt | 54 + third_party/git/Documentation/git-bundle.txt | 65 +- third_party/git/Documentation/git-cat-file.txt | 2 +- third_party/git/Documentation/git-check-attr.txt | 2 +- third_party/git/Documentation/git-check-ignore.txt | 14 +- third_party/git/Documentation/git-checkout.txt | 55 +- third_party/git/Documentation/git-cherry-pick.txt | 5 +- third_party/git/Documentation/git-clean.txt | 16 +- third_party/git/Documentation/git-clone.txt | 31 +- third_party/git/Documentation/git-commit-graph.txt | 63 +- third_party/git/Documentation/git-commit-tree.txt | 30 +- third_party/git/Documentation/git-commit.txt | 86 +- third_party/git/Documentation/git-config.txt | 71 +- .../git/Documentation/git-credential-store.txt | 4 + third_party/git/Documentation/git-credential.txt | 37 +- third_party/git/Documentation/git-cvsserver.txt | 2 +- third_party/git/Documentation/git-diff.txt | 25 +- third_party/git/Documentation/git-fast-export.txt | 54 +- third_party/git/Documentation/git-fast-import.txt | 71 +- third_party/git/Documentation/git-fetch.txt | 12 +- .../git/Documentation/git-filter-branch.txt | 282 +- third_party/git/Documentation/git-for-each-ref.txt | 52 +- third_party/git/Documentation/git-format-patch.txt | 59 +- third_party/git/Documentation/git-gc.txt | 17 +- third_party/git/Documentation/git-grep.txt | 43 +- third_party/git/Documentation/git-gui.txt | 10 +- third_party/git/Documentation/git-help.txt | 8 +- third_party/git/Documentation/git-http-fetch.txt | 9 +- third_party/git/Documentation/git-imap-send.txt | 34 +- third_party/git/Documentation/git-index-pack.txt | 14 +- third_party/git/Documentation/git-init.txt | 16 +- third_party/git/Documentation/git-log.txt | 68 +- third_party/git/Documentation/git-ls-files.txt | 2 +- third_party/git/Documentation/git-ls-remote.txt | 36 +- third_party/git/Documentation/git-mailinfo.txt | 7 +- third_party/git/Documentation/git-maintenance.txt | 79 + third_party/git/Documentation/git-merge-base.txt | 98 +- third_party/git/Documentation/git-merge-index.txt | 26 +- third_party/git/Documentation/git-merge.txt | 13 +- .../git/Documentation/git-multi-pack-index.txt | 20 +- third_party/git/Documentation/git-notes.txt | 8 +- third_party/git/Documentation/git-p4.txt | 45 +- third_party/git/Documentation/git-pack-objects.txt | 21 +- third_party/git/Documentation/git-pull.txt | 20 +- third_party/git/Documentation/git-range-diff.txt | 8 +- third_party/git/Documentation/git-read-tree.txt | 6 +- third_party/git/Documentation/git-rebase.txt | 310 +- third_party/git/Documentation/git-receive-pack.txt | 52 +- third_party/git/Documentation/git-remote.txt | 20 +- third_party/git/Documentation/git-replace.txt | 10 +- third_party/git/Documentation/git-reset.txt | 54 +- third_party/git/Documentation/git-restore.txt | 48 +- third_party/git/Documentation/git-rev-list.txt | 94 +- third_party/git/Documentation/git-rev-parse.txt | 10 +- third_party/git/Documentation/git-revert.txt | 5 +- third_party/git/Documentation/git-rm.txt | 61 +- third_party/git/Documentation/git-send-email.txt | 12 +- third_party/git/Documentation/git-shortlog.txt | 34 +- third_party/git/Documentation/git-show-index.txt | 13 +- .../git/Documentation/git-sparse-checkout.txt | 239 + third_party/git/Documentation/git-stash.txt | 147 +- third_party/git/Documentation/git-status.txt | 18 +- third_party/git/Documentation/git-submodule.txt | 37 +- third_party/git/Documentation/git-svn.txt | 13 +- third_party/git/Documentation/git-switch.txt | 4 +- third_party/git/Documentation/git-tag.txt | 13 +- third_party/git/Documentation/git-update-index.txt | 24 +- third_party/git/Documentation/git-update-ref.txt | 41 +- third_party/git/Documentation/git-worktree.txt | 164 +- third_party/git/Documentation/git.txt | 97 +- third_party/git/Documentation/gitattributes.txt | 12 +- third_party/git/Documentation/gitcli.txt | 15 +- third_party/git/Documentation/gitcore-tutorial.txt | 2 +- third_party/git/Documentation/gitcredentials.txt | 112 +- third_party/git/Documentation/giteveryday.txt | 10 +- third_party/git/Documentation/gitfaq.txt | 441 + third_party/git/Documentation/githooks.txt | 191 +- third_party/git/Documentation/gitk.txt | 8 +- third_party/git/Documentation/gitmodules.txt | 32 +- .../git/Documentation/gitremote-helpers.txt | 52 +- .../git/Documentation/gitrepository-layout.txt | 12 +- third_party/git/Documentation/gitsubmodules.txt | 24 +- third_party/git/Documentation/gitweb.conf.txt | 6 +- third_party/git/Documentation/gitworkflows.txt | 18 +- .../git/Documentation/howto/maintain-git.txt | 104 +- .../howto/rebase-from-internal-branch.txt | 32 +- .../Documentation/howto/revert-branch-rebase.txt | 32 +- .../howto/separating-topic-branches.txt | 2 +- .../Documentation/howto/update-hook-example.txt | 6 +- third_party/git/Documentation/manpage-1.72.xsl | 14 - third_party/git/Documentation/manpage-base.xsl | 35 - .../git/Documentation/manpage-bold-literal.xsl | 9 +- third_party/git/Documentation/manpage-normal.xsl | 25 +- .../git/Documentation/manpage-suppress-sp.xsl | 21 - third_party/git/Documentation/manpage.xsl | 3 + third_party/git/Documentation/merge-options.txt | 47 +- third_party/git/Documentation/merge-strategies.txt | 2 +- .../git/Documentation/object-format-disclaimer.txt | 6 + third_party/git/Documentation/pretty-formats.txt | 44 +- third_party/git/Documentation/pretty-options.txt | 14 +- third_party/git/Documentation/pull-fetch-param.txt | 19 +- .../git/Documentation/ref-reachability-filters.txt | 7 + .../git/Documentation/rev-list-description.txt | 61 + third_party/git/Documentation/rev-list-options.txt | 218 +- third_party/git/Documentation/revisions.txt | 5 +- .../technical/api-allocation-growing.txt | 39 - .../git/Documentation/technical/api-argv-array.txt | 65 - .../git/Documentation/technical/api-config.txt | 319 - .../Documentation/technical/api-credentials.txt | 271 - .../git/Documentation/technical/api-diff.txt | 174 - .../technical/api-directory-listing.txt | 130 - .../Documentation/technical/api-gitattributes.txt | 154 - .../git/Documentation/technical/api-grep.txt | 8 - .../Documentation/technical/api-history-graph.txt | 173 - .../git/Documentation/technical/api-merge.txt | 72 +- .../Documentation/technical/api-object-access.txt | 15 - .../git/Documentation/technical/api-oid-array.txt | 90 - .../Documentation/technical/api-parse-options.txt | 4 +- .../git/Documentation/technical/api-quote.txt | 10 - .../Documentation/technical/api-ref-iteration.txt | 78 - .../git/Documentation/technical/api-remote.txt | 127 - .../technical/api-revision-walking.txt | 72 - .../Documentation/technical/api-run-command.txt | 264 - .../git/Documentation/technical/api-setup.txt | 47 - .../git/Documentation/technical/api-sigchain.txt | 41 - .../technical/api-submodule-config.txt | 66 - .../git/Documentation/technical/api-trace.txt | 140 - .../git/Documentation/technical/api-trace2.txt | 285 +- .../Documentation/technical/api-tree-walking.txt | 147 - .../technical/api-xdiff-interface.txt | 7 - .../git/Documentation/technical/bundle-format.txt | 76 + .../technical/commit-graph-format.txt | 43 +- .../git/Documentation/technical/commit-graph.txt | 28 +- .../technical/hash-function-transition.txt | 20 +- .../git/Documentation/technical/http-protocol.txt | 7 +- .../git/Documentation/technical/index-format.txt | 38 +- .../Documentation/technical/multi-pack-index.txt | 6 +- .../git/Documentation/technical/pack-format.txt | 48 +- .../git/Documentation/technical/pack-protocol.txt | 49 +- .../git/Documentation/technical/packfile-uri.txt | 78 + .../git/Documentation/technical/partial-clone.txt | 142 +- .../technical/protocol-capabilities.txt | 44 +- .../git/Documentation/technical/protocol-v2.txt | 61 +- .../git/Documentation/technical/racy-git.txt | 2 +- .../git/Documentation/technical/reftable.txt | 1083 + third_party/git/Documentation/technical/rerere.txt | 2 +- .../git/Documentation/technical/shallow.txt | 2 +- .../git/Documentation/trace2-target-values.txt | 4 +- third_party/git/Documentation/urls.txt | 3 + third_party/git/Documentation/user-manual.conf | 10 - third_party/git/Documentation/user-manual.txt | 383 +- third_party/git/GIT-VERSION-GEN | 2 +- third_party/git/INSTALL | 10 +- third_party/git/Makefile | 407 +- third_party/git/README.md | 4 +- third_party/git/RelNotes | 2 +- third_party/git/abspath.c | 18 +- third_party/git/add-interactive.c | 1176 + third_party/git/add-interactive.h | 41 + third_party/git/add-patch.c | 1742 + third_party/git/advice.c | 103 +- third_party/git/advice.h | 55 +- third_party/git/alloc.c | 18 +- third_party/git/alloc.h | 2 +- third_party/git/apply.c | 139 +- third_party/git/apply.h | 1 + third_party/git/archive-tar.c | 46 +- third_party/git/archive-zip.c | 58 +- third_party/git/archive.c | 132 +- third_party/git/archive.h | 10 +- third_party/git/argv-array.c | 109 - third_party/git/argv-array.h | 27 - third_party/git/attr.c | 37 +- third_party/git/attr.h | 141 +- third_party/git/azure-pipelines.yml | 387 - third_party/git/banned.h | 2 +- third_party/git/bisect.c | 253 +- third_party/git/bisect.h | 36 +- third_party/git/blame.c | 167 +- third_party/git/blame.h | 10 +- third_party/git/blob.c | 2 +- third_party/git/bloom.c | 327 + third_party/git/bloom.h | 112 + third_party/git/branch.c | 5 +- third_party/git/builtin.h | 23 +- third_party/git/builtin/add.c | 148 +- third_party/git/builtin/am.c | 234 +- third_party/git/builtin/annotate.c | 10 +- third_party/git/builtin/bisect--helper.c | 471 +- third_party/git/builtin/blame.c | 83 +- third_party/git/builtin/branch.c | 20 +- third_party/git/builtin/bugreport.c | 194 + third_party/git/builtin/bundle.c | 220 +- third_party/git/builtin/cat-file.c | 24 +- third_party/git/builtin/check-ignore.c | 41 +- third_party/git/builtin/checkout-index.c | 4 +- third_party/git/builtin/checkout.c | 249 +- third_party/git/builtin/clean.c | 134 +- third_party/git/builtin/clone.c | 157 +- third_party/git/builtin/commit-graph.c | 271 +- third_party/git/builtin/commit-tree.c | 12 +- third_party/git/builtin/commit.c | 174 +- third_party/git/builtin/config.c | 77 +- third_party/git/builtin/credential-cache--daemon.c | 318 + third_party/git/builtin/credential-cache.c | 157 + third_party/git/builtin/credential-store.c | 195 + third_party/git/builtin/describe.c | 105 +- third_party/git/builtin/diff-files.c | 7 + third_party/git/builtin/diff-tree.c | 9 + third_party/git/builtin/diff.c | 152 +- third_party/git/builtin/difftool.c | 86 +- third_party/git/builtin/env--helper.c | 13 +- third_party/git/builtin/fast-export.c | 250 +- third_party/git/builtin/fast-import.c | 3634 ++ third_party/git/builtin/fetch-pack.c | 25 +- third_party/git/builtin/fetch.c | 503 +- third_party/git/builtin/fmt-merge-msg.c | 656 +- third_party/git/builtin/for-each-ref.c | 4 +- third_party/git/builtin/fsck.c | 135 +- third_party/git/builtin/gc.c | 434 +- third_party/git/builtin/grep.c | 184 +- third_party/git/builtin/help.c | 90 +- third_party/git/builtin/index-pack.c | 527 +- third_party/git/builtin/init-db.c | 134 +- third_party/git/builtin/interpret-trailers.c | 4 +- third_party/git/builtin/log.c | 440 +- third_party/git/builtin/ls-files.c | 29 +- third_party/git/builtin/ls-remote.c | 18 +- third_party/git/builtin/merge-base.c | 12 +- third_party/git/builtin/merge-recursive.c | 4 + third_party/git/builtin/merge-tree.c | 5 +- third_party/git/builtin/merge.c | 97 +- third_party/git/builtin/mktag.c | 7 +- third_party/git/builtin/multi-pack-index.c | 18 +- third_party/git/builtin/mv.c | 7 +- third_party/git/builtin/name-rev.c | 291 +- third_party/git/builtin/notes.c | 38 +- third_party/git/builtin/pack-objects.c | 501 +- third_party/git/builtin/patch-id.c | 16 +- third_party/git/builtin/prune-packed.c | 44 +- third_party/git/builtin/prune.c | 2 + third_party/git/builtin/pull.c | 259 +- third_party/git/builtin/push.c | 163 +- third_party/git/builtin/range-diff.c | 7 +- third_party/git/builtin/read-tree.c | 14 +- third_party/git/builtin/rebase.c | 870 +- third_party/git/builtin/receive-pack.c | 718 +- third_party/git/builtin/reflog.c | 13 +- third_party/git/builtin/remote-ext.c | 4 +- third_party/git/builtin/remote.c | 225 +- third_party/git/builtin/repack.c | 100 +- third_party/git/builtin/replace.c | 30 +- third_party/git/builtin/reset.c | 47 +- third_party/git/builtin/rev-list.c | 135 +- third_party/git/builtin/rev-parse.c | 33 +- third_party/git/builtin/rm.c | 28 +- third_party/git/builtin/send-pack.c | 31 +- third_party/git/builtin/shortlog.c | 217 +- third_party/git/builtin/show-branch.c | 24 +- third_party/git/builtin/show-index.c | 40 +- third_party/git/builtin/show-ref.c | 12 +- third_party/git/builtin/sparse-checkout.c | 663 + third_party/git/builtin/stash.c | 353 +- third_party/git/builtin/submodule--helper.c | 749 +- third_party/git/builtin/tag.c | 21 +- third_party/git/builtin/unpack-objects.c | 6 +- third_party/git/builtin/update-index.c | 28 +- third_party/git/builtin/update-ref.c | 247 +- third_party/git/builtin/upload-archive.c | 12 +- third_party/git/builtin/verify-pack.c | 23 +- third_party/git/builtin/worktree.c | 281 +- third_party/git/bulk-checkin.c | 2 +- third_party/git/bundle.c | 106 +- third_party/git/bundle.h | 6 +- third_party/git/cache-tree.c | 103 +- third_party/git/cache-tree.h | 3 +- third_party/git/cache.h | 193 +- third_party/git/checkout.c | 3 +- third_party/git/ci/config/allow-ref.sample | 27 + third_party/git/ci/install-dependencies.sh | 28 +- third_party/git/ci/install-docker-dependencies.sh | 18 + third_party/git/ci/lib.sh | 53 +- third_party/git/ci/print-test-failures.sh | 7 + third_party/git/ci/run-build-and-tests.sh | 8 + third_party/git/ci/run-docker-build.sh | 75 + third_party/git/ci/run-docker.sh | 47 + third_party/git/ci/run-linux32-build.sh | 60 - third_party/git/ci/run-linux32-docker.sh | 31 - third_party/git/ci/run-static-analysis.sh | 3 + third_party/git/ci/test-documentation.sh | 3 + third_party/git/color.c | 75 +- third_party/git/column.c | 27 +- third_party/git/combine-diff.c | 68 +- third_party/git/command-list.txt | 9 +- third_party/git/commit-graph.c | 1028 +- third_party/git/commit-graph.h | 94 +- third_party/git/commit-reach.c | 94 +- third_party/git/commit-reach.h | 4 +- third_party/git/commit-slab-decl.h | 7 +- third_party/git/commit-slab-impl.h | 13 + third_party/git/commit-slab.h | 17 +- third_party/git/commit.c | 162 +- third_party/git/commit.h | 74 +- third_party/git/common-main.c | 8 +- third_party/git/compat/bswap.h | 24 - third_party/git/compat/compiler.h | 41 + third_party/git/compat/gmtime.c | 29 - third_party/git/compat/mingw.c | 468 +- third_party/git/compat/mingw.h | 39 +- third_party/git/compat/nedmalloc/malloc.c.h | 12 +- third_party/git/compat/obstack.h | 8 +- third_party/git/compat/poll/poll.c | 31 +- third_party/git/compat/qsort.c | 62 - third_party/git/compat/regex/regcomp.c | 2 +- third_party/git/compat/regex/regex.c | 1 + third_party/git/compat/regex/regex.h | 7 +- third_party/git/compat/regex/regex_internal.c | 2 +- third_party/git/compat/regex/regex_internal.h | 1 - third_party/git/compat/regex/regexec.c | 4 +- third_party/git/compat/terminal.c | 249 +- third_party/git/compat/terminal.h | 3 + third_party/git/compat/vcbuild/README | 8 +- third_party/git/compat/vcbuild/find_vs_env.bat | 2 +- third_party/git/compat/vcbuild/scripts/clink.pl | 58 +- third_party/git/compat/win32/path-utils.c | 24 + third_party/git/compat/win32/path-utils.h | 21 +- third_party/git/compat/win32/pthread.h | 8 +- third_party/git/compat/winansi.c | 14 +- third_party/git/config.c | 198 +- third_party/git/config.h | 369 +- third_party/git/config.mak.dev | 1 - third_party/git/config.mak.uname | 43 +- third_party/git/configure.ac | 51 +- third_party/git/connect.c | 233 +- third_party/git/connect.h | 7 + third_party/git/connected.c | 82 +- third_party/git/connected.h | 8 - .../git/contrib/buildsystems/CMakeLists.txt | 988 + .../git/contrib/buildsystems/Generators/Vcxproj.pm | 19 +- third_party/git/contrib/buildsystems/engine.pl | 6 +- third_party/git/contrib/coccinelle/commit.cocci | 20 +- third_party/git/contrib/coccinelle/hashmap.cocci | 16 + third_party/git/contrib/coccinelle/object_id.cocci | 32 - .../git/contrib/completion/git-completion.bash | 774 +- .../git/contrib/completion/git-completion.zsh | 7 +- third_party/git/contrib/completion/git-prompt.sh | 32 +- .../git/contrib/credential/netrc/.gitignore | 1 + third_party/git/contrib/credential/netrc/Makefile | 26 +- .../contrib/credential/netrc/git-credential-netrc | 440 - .../credential/netrc/git-credential-netrc.perl | 440 + .../git/contrib/diff-highlight/DiffHighlight.pm | 4 +- .../git/contrib/fast-import/import-tars.perl | 2 + third_party/git/contrib/hg-to-git/hg-to-git.py | 50 +- .../git/contrib/hooks/multimail/git_multimail.py | 8 +- .../contrib/hooks/multimail/post-receive.example | 2 +- third_party/git/contrib/hooks/post-receive-email | 2 +- third_party/git/contrib/hooks/update-paranoid | 2 +- third_party/git/contrib/mw-to-git/.perlcriticrc | 2 +- third_party/git/contrib/mw-to-git/git-mw.perl | 2 +- .../contrib/mw-to-git/git-remote-mediawiki.perl | 82 +- .../git/contrib/mw-to-git/git-remote-mediawiki.txt | 2 +- third_party/git/contrib/mw-to-git/t/.gitignore | 2 +- third_party/git/contrib/mw-to-git/t/README | 10 +- .../contrib/mw-to-git/t/install-wiki/.gitignore | 1 - .../mw-to-git/t/install-wiki/LocalSettings.php | 129 - .../mw-to-git/t/install-wiki/db_install.php | 120 - .../contrib/mw-to-git/t/t9360-mw-to-git-clone.sh | 10 +- .../mw-to-git/t/t9363-mw-to-git-export-import.sh | 9 +- .../git/contrib/mw-to-git/t/test-gitmw-lib.sh | 164 +- third_party/git/contrib/mw-to-git/t/test-gitmw.pl | 22 +- third_party/git/contrib/mw-to-git/t/test.config | 23 +- third_party/git/contrib/subtree/Makefile | 6 +- third_party/git/contrib/subtree/git-subtree.txt | 6 +- third_party/git/contrib/svn-fe/.gitignore | 4 - third_party/git/contrib/svn-fe/Makefile | 105 - third_party/git/contrib/svn-fe/svn-fe.c | 18 - third_party/git/contrib/svn-fe/svn-fe.txt | 71 - third_party/git/contrib/svn-fe/svnrdump_sim.py | 68 - third_party/git/convert.c | 126 +- third_party/git/convert.h | 35 +- third_party/git/credential-cache--daemon.c | 297 - third_party/git/credential-cache.c | 136 - third_party/git/credential-store.c | 194 - third_party/git/credential.c | 212 +- third_party/git/credential.h | 166 +- third_party/git/csum-file.c | 2 +- third_party/git/csum-file.h | 9 + third_party/git/daemon.c | 64 +- third_party/git/date.c | 112 +- third_party/git/default.nix | 2 +- third_party/git/delta-islands.c | 2 +- third_party/git/diff-delta.c | 2 + third_party/git/diff-lib.c | 47 +- third_party/git/diff.c | 415 +- third_party/git/diff.h | 174 +- third_party/git/diffcore-break.c | 24 +- third_party/git/diffcore-rename.c | 85 +- third_party/git/diffcore.h | 62 +- third_party/git/dir.c | 1219 +- third_party/git/dir.h | 237 +- third_party/git/editor.c | 13 +- third_party/git/entry.c | 12 +- third_party/git/environment.c | 40 +- third_party/git/ewah/bitmap.c | 21 +- third_party/git/ewah/ewok.h | 2 + third_party/git/exec-cmd.c | 18 +- third_party/git/exec-cmd.h | 4 +- third_party/git/fast-import.c | 3405 -- third_party/git/fetch-negotiator.c | 30 +- third_party/git/fetch-negotiator.h | 5 +- third_party/git/fetch-object.c | 40 - third_party/git/fetch-object.h | 9 - third_party/git/fetch-pack.c | 574 +- third_party/git/fetch-pack.h | 20 +- third_party/git/fmt-merge-msg.c | 686 + third_party/git/fmt-merge-msg.h | 13 + third_party/git/fsck.c | 622 +- third_party/git/fsck.h | 39 +- third_party/git/fsmonitor.c | 178 +- third_party/git/fuzz-commit-graph.c | 8 +- third_party/git/generate-cmdlist.sh | 21 +- third_party/git/generate-configlist.sh | 21 + third_party/git/git-add--interactive.perl | 104 +- third_party/git/git-bisect.sh | 82 +- third_party/git/git-compat-util.h | 118 +- third_party/git/git-cvsexportcommit.perl | 26 +- third_party/git/git-cvsimport.perl | 10 +- third_party/git/git-cvsserver.perl | 37 +- third_party/git/git-filter-branch.sh | 14 + third_party/git/git-gui/README.md | 174 + third_party/git/git-gui/git-gui--askpass | 5 + third_party/git/git-gui/git-gui.sh | 344 +- third_party/git/git-gui/lib/blame.tcl | 25 +- third_party/git/git-gui/lib/branch.tcl | 2 + third_party/git/git-gui/lib/checkout_op.tcl | 21 +- third_party/git/git-gui/lib/choose_repository.tcl | 147 +- third_party/git/git-gui/lib/chord.tcl | 158 + third_party/git/git-gui/lib/commit.tcl | 4 +- third_party/git/git-gui/lib/console.tcl | 2 + third_party/git/git-gui/lib/diff.tcl | 129 +- third_party/git/git-gui/lib/index.tcl | 537 +- third_party/git/git-gui/lib/merge.tcl | 14 +- third_party/git/git-gui/lib/mergetool.tcl | 2 +- third_party/git/git-gui/lib/status_bar.tcl | 231 +- third_party/git/git-gui/lib/themed.tcl | 38 + third_party/git/git-gui/po/de.po | 3622 +- third_party/git/git-gui/po/git-gui.pot | 2526 +- third_party/git/git-gui/po/glossary/de.po | 315 +- .../git/git-gui/po/glossary/git-gui-glossary.pot | 250 +- .../git/git-gui/po/glossary/git-gui-glossary.txt | 101 +- third_party/git/git-gui/po/ja.po | 9 +- third_party/git/git-legacy-stash.sh | 797 - third_party/git/git-mergetool--lib.sh | 35 +- third_party/git/git-p4.py | 795 +- third_party/git/git-rebase--preserve-merges.sh | 10 - third_party/git/git-send-email.perl | 18 +- third_party/git/git-submodule.sh | 284 +- third_party/git/git-svn.perl | 34 +- third_party/git/git.c | 80 +- third_party/git/gitk-git/gitk | 10684 +++--- third_party/git/gitk-git/po/zh_cn.po | 1367 + third_party/git/gitweb/gitweb.perl | 71 +- .../git/gitweb/static/js/blame_incremental.js | 2 +- third_party/git/gpg-interface.c | 242 +- third_party/git/gpg-interface.h | 19 +- third_party/git/graph.c | 680 +- third_party/git/graph.h | 121 + third_party/git/grep.c | 275 +- third_party/git/grep.h | 40 +- third_party/git/hash.h | 21 + third_party/git/hashmap.c | 60 +- third_party/git/hashmap.h | 181 +- third_party/git/help.c | 145 +- third_party/git/help.h | 7 +- third_party/git/hex.c | 65 +- third_party/git/http-backend.c | 8 +- third_party/git/http-fetch.c | 132 +- third_party/git/http-push.c | 42 +- third_party/git/http-walker.c | 5 +- third_party/git/http.c | 232 +- third_party/git/http.h | 35 +- third_party/git/ident.c | 72 +- third_party/git/imap-send.c | 4 +- third_party/git/interdiff.c | 28 - third_party/git/interdiff.h | 8 - third_party/git/kwset.h | 4 + third_party/git/line-log.c | 122 +- third_party/git/line-log.h | 5 +- third_party/git/list-objects-filter-options.c | 358 +- third_party/git/list-objects-filter-options.h | 74 +- third_party/git/list-objects-filter.c | 385 +- third_party/git/list-objects-filter.h | 40 +- third_party/git/list-objects.c | 59 +- third_party/git/ll-merge.c | 21 +- third_party/git/ll-merge.h | 74 +- third_party/git/lockfile.c | 18 +- third_party/git/lockfile.h | 32 +- third_party/git/log-tree.c | 131 +- third_party/git/log-tree.h | 4 +- third_party/git/ls-refs.c | 23 +- third_party/git/ls-refs.h | 4 +- third_party/git/mailinfo.c | 79 +- third_party/git/mem-pool.c | 69 +- third_party/git/mem-pool.h | 14 +- third_party/git/merge-recursive.c | 972 +- third_party/git/merge-recursive.h | 163 +- third_party/git/merge.c | 22 +- third_party/git/mergetools/bc | 5 + third_party/git/mergetools/bc3 | 1 - third_party/git/mergetools/gvimdiff2 | 1 - third_party/git/mergetools/gvimdiff3 | 1 - third_party/git/mergetools/meld | 85 +- third_party/git/mergetools/nvimdiff | 1 + third_party/git/mergetools/vimdiff | 21 +- third_party/git/mergetools/vimdiff2 | 1 - third_party/git/mergetools/vimdiff3 | 1 - third_party/git/midx.c | 219 +- third_party/git/midx.h | 12 +- third_party/git/name-hash.c | 61 +- third_party/git/negotiator/noop.c | 44 + third_party/git/negotiator/noop.h | 8 + third_party/git/notes-utils.c | 2 +- third_party/git/notes.c | 69 +- third_party/git/notes.h | 26 +- third_party/git/object-store.h | 103 +- third_party/git/object.c | 24 +- third_party/git/object.h | 16 +- third_party/git/oid-array.c | 96 + third_party/git/oid-array.h | 109 + third_party/git/oidmap.c | 20 +- third_party/git/oidmap.h | 6 +- third_party/git/oidset.c | 14 +- third_party/git/oidset.h | 17 +- third_party/git/pack-bitmap-write.c | 5 +- third_party/git/pack-bitmap.c | 536 +- third_party/git/pack-bitmap.h | 17 +- third_party/git/pack-check.c | 32 +- third_party/git/pack-objects.c | 31 +- third_party/git/pack-objects.h | 27 +- third_party/git/pack-write.c | 25 +- third_party/git/packfile.c | 257 +- third_party/git/packfile.h | 21 +- third_party/git/pager.c | 8 +- third_party/git/parse-options-cb.c | 53 +- third_party/git/parse-options.c | 67 +- third_party/git/parse-options.h | 37 +- third_party/git/patch-ids.c | 18 +- third_party/git/path.c | 274 +- third_party/git/path.h | 14 +- third_party/git/pathspec.c | 47 +- third_party/git/pathspec.h | 45 +- third_party/git/perl/Git.pm | 28 +- third_party/git/perl/Git/IndexInfo.pm | 6 +- third_party/git/perl/Git/SVN.pm | 87 +- third_party/git/perl/Git/SVN/Editor.pm | 8 +- third_party/git/perl/Git/SVN/Fetcher.pm | 6 +- third_party/git/perl/Git/SVN/Log.pm | 2 +- third_party/git/perl/Git/SVN/Ra.pm | 4 +- third_party/git/pkt-line.c | 18 +- third_party/git/pkt-line.h | 16 +- third_party/git/po/TEAMS | 14 +- third_party/git/po/bg.po | 13019 ++++---- third_party/git/po/ca.po | 16148 +++++---- third_party/git/po/de.po | 13221 ++++---- third_party/git/po/es.po | 12201 ++++--- third_party/git/po/fr.po | 13035 ++++---- third_party/git/po/git.pot | 12174 ++++--- third_party/git/po/it.po | 13410 ++++---- third_party/git/po/pt_PT.po | 33307 ++++++++++++------- third_party/git/po/sv.po | 13519 ++++---- third_party/git/po/tr.po | 25391 ++++++++++++++ third_party/git/po/vi.po | 13453 ++++---- third_party/git/po/zh_CN.po | 12723 ++++--- third_party/git/po/zh_TW.po | 25378 ++++++++++++++ third_party/git/pretty.c | 91 +- third_party/git/pretty.h | 4 + third_party/git/progress.c | 99 +- third_party/git/progress.h | 8 + third_party/git/promisor-remote.c | 259 + third_party/git/promisor-remote.h | 41 + third_party/git/prompt.c | 12 + third_party/git/prompt.h | 2 + third_party/git/protocol.c | 13 +- third_party/git/prune-packed.c | 43 + third_party/git/prune-packed.h | 9 + third_party/git/quote.c | 81 +- third_party/git/quote.h | 20 +- third_party/git/range-diff.c | 76 +- third_party/git/range-diff.h | 6 +- third_party/git/reachable.c | 4 +- third_party/git/read-cache.c | 110 +- third_party/git/rebase-interactive.c | 95 +- third_party/git/rebase-interactive.h | 7 +- third_party/git/rebase.c | 35 + third_party/git/rebase.h | 15 + third_party/git/ref-filter.c | 331 +- third_party/git/ref-filter.h | 13 +- third_party/git/refs.c | 413 +- third_party/git/refs.h | 108 +- third_party/git/refs/debug.c | 398 + third_party/git/refs/files-backend.c | 87 +- third_party/git/refs/packed-backend.c | 24 +- third_party/git/refs/refs-internal.h | 49 +- third_party/git/refspec.c | 62 +- third_party/git/refspec.h | 25 +- third_party/git/remote-curl.c | 256 +- third_party/git/remote-testsvn.c | 337 - third_party/git/remote.c | 226 +- third_party/git/remote.h | 87 +- third_party/git/replace-object.c | 11 +- third_party/git/replace-object.h | 7 +- third_party/git/repo-settings.c | 74 + third_party/git/repository.c | 4 +- third_party/git/repository.h | 52 +- third_party/git/rerere.c | 10 +- third_party/git/reset.c | 141 + third_party/git/reset.h | 20 + third_party/git/revision.c | 446 +- third_party/git/revision.h | 97 +- third_party/git/run-command.c | 88 +- third_party/git/run-command.h | 264 +- third_party/git/send-pack.c | 229 +- third_party/git/sequencer.c | 1155 +- third_party/git/sequencer.h | 40 +- third_party/git/serve.c | 47 +- third_party/git/serve.h | 4 +- third_party/git/server-info.c | 2 +- third_party/git/setup.c | 223 +- third_party/git/sha1-array.c | 96 - third_party/git/sha1-array.h | 29 - third_party/git/sha1-file.c | 242 +- third_party/git/sha1-lookup.c | 12 +- third_party/git/sha1-name.c | 138 +- third_party/git/sha1dc/sha1.c | 4 +- third_party/git/sha1dc_git.c | 2 +- third_party/git/sha256/gcrypt.h | 6 + third_party/git/shallow.c | 75 +- third_party/git/shallow.h | 81 + third_party/git/shell.c | 8 +- third_party/git/shortlog.h | 8 +- third_party/git/sideband.c | 2 +- third_party/git/sigchain.h | 45 + third_party/git/split-index.c | 6 +- third_party/git/stable-qsort.c | 62 + third_party/git/strbuf.c | 71 +- third_party/git/strbuf.h | 47 +- third_party/git/streaming.c | 28 +- third_party/git/streaming.h | 4 +- third_party/git/string-list.h | 8 +- third_party/git/strvec.c | 109 + third_party/git/strvec.h | 89 + third_party/git/sub-process.c | 22 +- third_party/git/sub-process.h | 6 +- third_party/git/submodule-config.c | 99 +- third_party/git/submodule-config.h | 40 +- third_party/git/submodule.c | 392 +- third_party/git/submodule.h | 17 +- third_party/git/t/README | 84 +- third_party/git/t/chainlint.sed | 66 +- third_party/git/t/check-non-portable-shell.pl | 2 +- third_party/git/t/gitweb-lib.sh | 7 +- third_party/git/t/helper/.gitignore | 7 +- third_party/git/t/helper/test-advise.c | 22 + third_party/git/t/helper/test-bloom.c | 97 + third_party/git/t/helper/test-config.c | 20 +- third_party/git/t/helper/test-date.c | 27 +- third_party/git/t/helper/test-drop-caches.c | 11 +- third_party/git/t/helper/test-dump-fsmonitor.c | 2 +- third_party/git/t/helper/test-dump-split-index.c | 2 + third_party/git/t/helper/test-hashmap.c | 50 +- .../git/t/helper/test-lazy-init-name-hash.c | 12 +- third_party/git/t/helper/test-line-buffer.c | 81 - third_party/git/t/helper/test-oid-array.c | 39 + third_party/git/t/helper/test-parse-options.c | 2 + .../git/t/helper/test-parse-pathspec-file.c | 33 + third_party/git/t/helper/test-path-utils.c | 118 +- third_party/git/t/helper/test-pkt-line.c | 6 +- third_party/git/t/helper/test-proc-receive.c | 176 + third_party/git/t/helper/test-progress.c | 74 + third_party/git/t/helper/test-reach.c | 6 +- third_party/git/t/helper/test-read-cache.c | 5 +- third_party/git/t/helper/test-read-graph.c | 47 + third_party/git/t/helper/test-read-midx.c | 8 +- third_party/git/t/helper/test-ref-store.c | 2 +- third_party/git/t/helper/test-regex.c | 94 +- third_party/git/t/helper/test-repository.c | 14 +- third_party/git/t/helper/test-run-command.c | 341 +- third_party/git/t/helper/test-sha1-array.c | 36 - .../t/helper/test-submodule-nested-repo-config.c | 6 +- third_party/git/t/helper/test-svn-fe.c | 52 - third_party/git/t/helper/test-tool.c | 9 +- third_party/git/t/helper/test-tool.h | 8 +- third_party/git/t/helper/test-trace2.c | 2 +- third_party/git/t/helper/test-windows-named-pipe.c | 2 +- third_party/git/t/lib-bash.sh | 6 +- third_party/git/t/lib-credential.sh | 5 +- third_party/git/t/lib-git-daemon.sh | 2 +- third_party/git/t/lib-git-p4.sh | 2 +- third_party/git/t/lib-git-svn.sh | 21 +- third_party/git/t/lib-gpg.sh | 110 +- third_party/git/t/lib-httpd.sh | 6 +- third_party/git/t/lib-httpd/apache.conf | 14 +- third_party/git/t/lib-httpd/apply-one-time-perl.sh | 27 + third_party/git/t/lib-httpd/apply-one-time-sed.sh | 22 - .../incomplete-body-upload-pack-v2-http.sh | 3 + .../incomplete-length-upload-pack-v2-http.sh | 3 + third_party/git/t/lib-log-graph.sh | 28 + third_party/git/t/lib-pack.sh | 40 +- third_party/git/t/lib-rebase.sh | 37 +- third_party/git/t/lib-submodule-update.sh | 144 +- third_party/git/t/lib-t6000.sh | 5 +- third_party/git/t/oid-info/hash-info | 9 + third_party/git/t/perf/README | 9 + third_party/git/t/perf/aggregate.perl | 21 +- third_party/git/t/perf/bisect_regression | 2 +- third_party/git/t/perf/p1400-update-ref.sh | 39 + third_party/git/t/perf/p5302-pack-index.sh | 47 +- third_party/git/t/perf/p5303-many-packs.sh | 23 + third_party/git/t/perf/p5310-pack-bitmaps.sh | 36 +- third_party/git/t/perf/p5600-clone-reference.sh | 27 - third_party/git/t/perf/p5601-clone-reference.sh | 27 + third_party/git/t/perf/p9300-fast-import-export.sh | 23 + third_party/git/t/perf/perf-lib.sh | 6 +- third_party/git/t/t0000-basic.sh | 177 +- third_party/git/t/t0001-init.sh | 105 +- third_party/git/t/t0002-gitfile.sh | 2 +- third_party/git/t/t0003-attributes.sh | 47 +- third_party/git/t/t0006-date.sh | 6 + third_party/git/t/t0007-git-var.sh | 2 +- third_party/git/t/t0008-ignores.sh | 39 +- third_party/git/t/t0014-alias.sh | 7 + third_party/git/t/t0018-advice.sh | 32 + third_party/git/t/t0020-crlf.sh | 18 +- third_party/git/t/t0021-conversion.sh | 206 +- third_party/git/t/t0021/rot13-filter.pl | 6 + third_party/git/t/t0027-auto-crlf.sh | 2 +- third_party/git/t/t0028-working-tree-encoding.sh | 45 +- third_party/git/t/t0040-parse-options.sh | 33 +- third_party/git/t/t0050-filesystem.sh | 20 + third_party/git/t/t0060-path-utils.sh | 47 +- third_party/git/t/t0061-run-command.sh | 25 +- third_party/git/t/t0064-sha1-array.sh | 16 +- third_party/git/t/t0067-parse_pathspec_file.sh | 108 + third_party/git/t/t0081-line-buffer.sh | 90 - third_party/git/t/t0090-cache-tree.sh | 5 +- third_party/git/t/t0091-bugreport.sh | 76 + third_party/git/t/t0095-bloom.sh | 117 + third_party/git/t/t0211-trace2-perf.sh | 4 +- third_party/git/t/t0212-trace2-event.sh | 56 + third_party/git/t/t0300-credentials.sh | 396 +- third_party/git/t/t0302-credential-store.sh | 91 +- third_party/git/t/t0410-partial-clone.sh | 136 +- third_party/git/t/t0500-progress-display.sh | 312 + third_party/git/t/t1006-cat-file.sh | 2 - .../git/t/t1011-read-tree-sparse-checkout.sh | 26 +- third_party/git/t/t1013-read-tree-submodule.sh | 4 +- third_party/git/t/t1014-read-tree-confusing.sh | 1 + third_party/git/t/t1050-large.sh | 21 +- third_party/git/t/t1090-sparse-checkout-scope.sh | 1 - third_party/git/t/t1091-sparse-checkout-builtin.sh | 629 + third_party/git/t/t1300-config.sh | 266 +- third_party/git/t/t1302-repo-version.sh | 9 +- third_party/git/t/t1305-config-include.sh | 2 +- third_party/git/t/t1306-xdg-files.sh | 8 +- third_party/git/t/t1307-config-blob.sh | 2 +- third_party/git/t/t1308-config-set.sh | 26 +- third_party/git/t/t1309-early-config.sh | 9 +- third_party/git/t/t1400-update-ref.sh | 266 +- third_party/git/t/t1404-update-ref-errors.sh | 64 +- third_party/git/t/t1405-main-ref-store.sh | 5 +- third_party/git/t/t1406-submodule-ref-store.sh | 2 +- third_party/git/t/t1409-avoid-packing-refs.sh | 16 +- third_party/git/t/t1410-reflog.sh | 5 +- third_party/git/t/t1414-reflog-walk.sh | 3 +- third_party/git/t/t1415-worktree-refs.sh | 18 +- third_party/git/t/t1416-ref-transaction-hooks.sh | 136 + third_party/git/t/t1450-fsck.sh | 76 +- third_party/git/t/t1500-rev-parse.sh | 24 + third_party/git/t/t1501-work-tree.sh | 2 +- third_party/git/t/t1506-rev-parse-diagnosis.sh | 99 +- third_party/git/t/t1507-rev-parse-upstream.sh | 116 +- third_party/git/t/t1509-root-work-tree.sh | 4 +- .../git/t/t1512-rev-parse-disambiguation.sh | 4 +- third_party/git/t/t1600-index.sh | 35 +- third_party/git/t/t2013-checkout-submodule.sh | 4 +- third_party/git/t/t2018-checkout-branch.sh | 107 +- third_party/git/t/t2022-checkout-paths.sh | 11 + third_party/git/t/t2024-checkout-dwim.sh | 28 +- third_party/git/t/t2025-checkout-no-overlay.sh | 12 + third_party/git/t/t2026-checkout-pathspec-file.sh | 163 + third_party/git/t/t2027-checkout-track.sh | 24 + third_party/git/t/t2060-switch.sh | 8 + third_party/git/t/t2070-restore.sh | 39 + third_party/git/t/t2072-restore-pathspec-file.sh | 177 + third_party/git/t/t2107-update-index-basic.sh | 1 - third_party/git/t/t2203-add-intent.sh | 52 +- third_party/git/t/t2400-worktree-add.sh | 37 +- third_party/git/t/t2401-worktree-prune.sh | 24 + third_party/git/t/t2402-worktree-list.sh | 6 + third_party/git/t/t2403-worktree-move.sh | 21 + third_party/git/t/t2404-worktree-config.sh | 4 +- third_party/git/t/t2405-worktree-submodule.sh | 90 + third_party/git/t/t2406-worktree-repair.sh | 179 + third_party/git/t/t3000-ls-files-others.sh | 137 + third_party/git/t/t3005-ls-files-relative.sh | 12 +- .../git/t/t3007-ls-files-recurse-submodules.sh | 1 - .../git/t/t3008-ls-files-lazy-init-name-hash.sh | 2 +- ...3011-common-prefixes-and-directory-traversal.sh | 209 + third_party/git/t/t3030-merge-recursive.sh | 735 - third_party/git/t/t3031-merge-criscross.sh | 95 - .../git/t/t3032-merge-recursive-space-options.sh | 207 - third_party/git/t/t3033-merge-toplevel.sh | 152 - .../git/t/t3034-merge-recursive-rename-options.sh | 330 - third_party/git/t/t3035-merge-sparse.sh | 58 - third_party/git/t/t3060-ls-files-with-tree.sh | 4 +- third_party/git/t/t3200-branch.sh | 108 +- third_party/git/t/t3201-branch-contains.sh | 82 +- third_party/git/t/t3206-range-diff.sh | 559 +- third_party/git/t/t3206/history.export | 31 +- third_party/git/t/t3210-pack-refs.sh | 2 +- third_party/git/t/t3301-notes.sh | 400 +- third_party/git/t/t3305-notes-fanout.sh | 117 +- third_party/git/t/t3306-notes-prune.sh | 45 +- third_party/git/t/t3308-notes-merge.sh | 82 +- .../git/t/t3309-notes-merge-auto-resolve.sh | 228 +- .../git/t/t3310-notes-merge-manual-resolve.sh | 106 +- third_party/git/t/t3311-notes-merge-fanout.sh | 60 +- third_party/git/t/t3400-rebase.sh | 102 +- third_party/git/t/t3401-rebase-and-am-rename.sh | 4 +- third_party/git/t/t3402-rebase-merge.sh | 77 + third_party/git/t/t3403-rebase-skip.sh | 111 + third_party/git/t/t3404-rebase-interactive.sh | 889 +- third_party/git/t/t3406-rebase-message.sh | 27 +- third_party/git/t/t3407-rebase-abort.sh | 6 +- third_party/git/t/t3415-rebase-autosquash.sh | 169 +- third_party/git/t/t3416-rebase-onto-threedots.sh | 57 + third_party/git/t/t3417-rebase-whitespace-fix.sh | 4 +- third_party/git/t/t3418-rebase-continue.sh | 14 + third_party/git/t/t3419-rebase-patch-id.sh | 113 +- third_party/git/t/t3420-rebase-autostash.sh | 54 +- third_party/git/t/t3421-rebase-topology-linear.sh | 85 +- .../git/t/t3422-rebase-incompatible-options.sh | 12 - third_party/git/t/t3424-rebase-empty.sh | 170 + third_party/git/t/t3425-rebase-topology-merges.sh | 8 +- third_party/git/t/t3426-rebase-submodule.sh | 10 +- third_party/git/t/t3427-rebase-subtree.sh | 162 +- third_party/git/t/t3429-rebase-edit-todo.sh | 53 +- third_party/git/t/t3430-rebase-merges.sh | 83 +- third_party/git/t/t3431-rebase-fork-point.sh | 77 + third_party/git/t/t3432-rebase-fast-forward.sh | 138 + .../git/t/t3433-rebase-across-mode-change.sh | 48 + third_party/git/t/t3434-rebase-i18n.sh | 84 + third_party/git/t/t3434/ISO8859-1.txt | 3 + third_party/git/t/t3434/eucJP.txt | 4 + third_party/git/t/t3435-rebase-gpg-sign.sh | 71 + third_party/git/t/t3436-rebase-more-options.sh | 180 + third_party/git/t/t3500-cherry.sh | 23 + third_party/git/t/t3501-revert-cherry-pick.sh | 8 +- third_party/git/t/t3504-cherry-pick-rerere.sh | 6 +- third_party/git/t/t3506-cherry-pick-ff.sh | 8 +- third_party/git/t/t3507-cherry-pick-conflict.sh | 75 +- .../git/t/t3508-cherry-pick-many-commits.sh | 2 +- third_party/git/t/t3510-cherry-pick-sequence.sh | 3 +- third_party/git/t/t3512-cherry-pick-submodule.sh | 2 +- third_party/git/t/t3513-revert-submodule.sh | 9 +- third_party/git/t/t3514-cherry-pick-revert-gpg.sh | 86 + third_party/git/t/t3600-rm.sh | 24 +- third_party/git/t/t3601-rm-pathspec-file.sh | 79 + third_party/git/t/t3700-add.sh | 6 +- third_party/git/t/t3701-add-interactive.sh | 257 +- third_party/git/t/t3704-add-pathspec-file.sh | 159 + third_party/git/t/t3800-mktag.sh | 48 +- third_party/git/t/t3900-i18n-commit.sh | 37 + third_party/git/t/t3903-stash.sh | 85 +- third_party/git/t/t3904-stash-patch.sh | 6 +- third_party/git/t/t3905-stash-include-untracked.sh | 4 +- third_party/git/t/t3906-stash-submodule.sh | 51 +- third_party/git/t/t3908-stash-in-worktree.sh | 27 + third_party/git/t/t3909-stash-pathspec-file.sh | 100 + third_party/git/t/t4000-diff-format.sh | 2 +- third_party/git/t/t4002-diff-basic.sh | 365 +- third_party/git/t/t4005-diff-rename-2.sh | 4 +- third_party/git/t/t4009-diff-rename-4.sh | 19 +- third_party/git/t/t4010-diff-pathspec.sh | 24 +- third_party/git/t/t4011-diff-symlink.sh | 40 +- third_party/git/t/t4013-diff-various.sh | 83 +- .../git/t/t4013/diff.diff-tree_--format=%N_note | 6 + .../t/t4013/diff.diff-tree_--pretty_--notes_note | 12 + .../git/t/t4013/diff.diff-tree_--pretty_note | 9 + .../diff.diff-tree_--root_-p_--abbrev=10_initial | 29 + ...tree_--root_-p_--full-index_--abbrev=10_initial | 29 + .../diff.diff-tree_--root_-p_--full-index_initial | 29 + .../git/t/t4013/diff.log_--decorate=full_--all | 15 + third_party/git/t/t4013/diff.log_--decorate_--all | 15 + ....log_--diff-merges=off_-p_--first-parent_master | 78 + ....log_--first-parent_--diff-merges=off_-p_master | 78 + ...f.log_--no-diff-merges_-p_--first-parent_master | 78 + .../git/t/t4013/diff.log_-p_--first-parent_master | 22 + third_party/git/t/t4014-format-patch.sh | 1155 +- third_party/git/t/t4015-diff-whitespace.sh | 251 +- third_party/git/t/t4018-diff-funcname.sh | 4 +- third_party/git/t/t4018/dts-labels | 9 + third_party/git/t/t4018/dts-node-unitless | 8 + third_party/git/t/t4018/dts-nodes | 8 + third_party/git/t/t4018/dts-nodes-boolean-prop | 9 + third_party/git/t/t4018/dts-nodes-comment1 | 8 + third_party/git/t/t4018/dts-nodes-comment2 | 8 + third_party/git/t/t4018/dts-nodes-multiline-prop | 13 + third_party/git/t/t4018/dts-reference | 9 + third_party/git/t/t4018/dts-root | 5 + third_party/git/t/t4018/dts-root-comment | 8 + third_party/git/t/t4018/elixir-do-not-pick-end | 5 + third_party/git/t/t4018/elixir-ex-unit-test | 6 + third_party/git/t/t4018/elixir-function | 5 + third_party/git/t/t4018/elixir-macro | 5 + third_party/git/t/t4018/elixir-module | 9 + third_party/git/t/t4018/elixir-module-func | 8 + third_party/git/t/t4018/elixir-nested-module | 9 + third_party/git/t/t4018/elixir-private-function | 5 + third_party/git/t/t4018/elixir-protocol | 6 + .../git/t/t4018/elixir-protocol-implementation | 5 + third_party/git/t/t4018/fortran-block-data | 5 + third_party/git/t/t4018/fortran-comment | 13 + third_party/git/t/t4018/fortran-comment-keyword | 14 + third_party/git/t/t4018/fortran-comment-legacy | 13 + .../git/t/t4018/fortran-comment-legacy-star | 13 + third_party/git/t/t4018/fortran-external-function | 9 + .../git/t/t4018/fortran-external-subroutine | 5 + third_party/git/t/t4018/fortran-module | 5 + third_party/git/t/t4018/fortran-module-procedure | 13 + third_party/git/t/t4018/fortran-program | 5 + third_party/git/t/t4018/markdown-heading-indented | 6 + .../git/t/t4018/markdown-heading-non-headings | 17 + third_party/git/t/t4018/python-async-def | 4 + third_party/git/t/t4018/python-class | 4 + third_party/git/t/t4018/python-def | 4 + third_party/git/t/t4018/python-indented-async-def | 7 + third_party/git/t/t4018/python-indented-class | 5 + third_party/git/t/t4018/python-indented-def | 7 + third_party/git/t/t4026-color.sh | 12 + third_party/git/t/t4027-diff-submodule.sh | 15 +- third_party/git/t/t4034-diff-words.sh | 94 +- third_party/git/t/t4034/dts/expect | 37 + third_party/git/t/t4034/dts/post | 32 + third_party/git/t/t4034/dts/pre | 32 + third_party/git/t/t4038-diff-combined.sh | 23 +- third_party/git/t/t4039-diff-assume-unchanged.sh | 3 +- third_party/git/t/t4041-diff-submodule-option.sh | 20 +- .../git/t/t4044-diff-index-unique-abbrev.sh | 46 +- third_party/git/t/t4045-diff-relative.sh | 82 +- third_party/git/t/t4048-diff-combined-binary.sh | 58 +- third_party/git/t/t4054-diff-bogus-tree.sh | 3 +- third_party/git/t/t4057-diff-combined-paths.sh | 4 +- .../t/t4060-diff-submodule-option-diff-format.sh | 126 +- third_party/git/t/t4061-diff-indent.sh | 2 +- third_party/git/t/t4064-diff-oidfind.sh | 55 + third_party/git/t/t4066-diff-emit-delay.sh | 10 +- third_party/git/t/t4067-diff-partial-clone.sh | 89 +- third_party/git/t/t4068-diff-symmetric.sh | 91 + third_party/git/t/t4100/t-apply-1.patch | 4 +- third_party/git/t/t4100/t-apply-3.patch | 2 +- third_party/git/t/t4100/t-apply-5.patch | 4 +- third_party/git/t/t4100/t-apply-7.patch | 2 +- third_party/git/t/t4104-apply-boundary.sh | 57 +- third_party/git/t/t4108-apply-threeway.sh | 55 +- third_party/git/t/t4117-apply-reject.sh | 6 +- third_party/git/t/t4124-apply-ws-rule.sh | 17 +- third_party/git/t/t4134-apply-submodule.sh | 4 +- third_party/git/t/t4137-apply-submodule.sh | 12 +- third_party/git/t/t4138-apply-ws-expansion.sh | 16 +- third_party/git/t/t4140-apply-ita.sh | 56 + third_party/git/t/t4150-am.sh | 106 +- third_party/git/t/t4200-rerere.sh | 4 +- third_party/git/t/t4201-shortlog.sh | 141 + third_party/git/t/t4202-log.sh | 410 +- third_party/git/t/t4203-mailmap.sh | 122 +- third_party/git/t/t4204-patch-id.sh | 2 +- third_party/git/t/t4205-log-pretty-formats.sh | 81 +- third_party/git/t/t4208-log-magic-pathspec.sh | 4 + third_party/git/t/t4210-log-i18n.sh | 80 +- third_party/git/t/t4211-line-log.sh | 160 +- third_party/git/t/t4211/expect.beginning-of-file | 43 - third_party/git/t/t4211/expect.end-of-file | 62 - third_party/git/t/t4211/expect.move-support-f | 80 - third_party/git/t/t4211/expect.multiple | 104 - .../git/t/t4211/expect.multiple-overlapping | 187 - third_party/git/t/t4211/expect.multiple-superset | 187 - .../git/t/t4211/expect.parallel-change-f-to-main | 160 - third_party/git/t/t4211/expect.simple-f | 59 - third_party/git/t/t4211/expect.simple-f-to-main | 100 - third_party/git/t/t4211/expect.simple-main | 68 - third_party/git/t/t4211/expect.simple-main-to-end | 70 - third_party/git/t/t4211/expect.two-ranges | 102 - third_party/git/t/t4211/expect.vanishes-early | 39 - .../git/t/t4211/sha1/expect.beginning-of-file | 43 + third_party/git/t/t4211/sha1/expect.end-of-file | 62 + third_party/git/t/t4211/sha1/expect.move-support-f | 80 + third_party/git/t/t4211/sha1/expect.multiple | 104 + .../git/t/t4211/sha1/expect.multiple-overlapping | 187 + .../git/t/t4211/sha1/expect.multiple-superset | 187 + .../t/t4211/sha1/expect.parallel-change-f-to-main | 160 + third_party/git/t/t4211/sha1/expect.simple-f | 59 + .../git/t/t4211/sha1/expect.simple-f-to-main | 100 + third_party/git/t/t4211/sha1/expect.simple-main | 68 + .../git/t/t4211/sha1/expect.simple-main-to-end | 70 + third_party/git/t/t4211/sha1/expect.two-ranges | 102 + third_party/git/t/t4211/sha1/expect.vanishes-early | 39 + .../git/t/t4211/sha256/expect.beginning-of-file | 43 + third_party/git/t/t4211/sha256/expect.end-of-file | 62 + .../git/t/t4211/sha256/expect.move-support-f | 80 + third_party/git/t/t4211/sha256/expect.multiple | 104 + .../git/t/t4211/sha256/expect.multiple-overlapping | 187 + .../git/t/t4211/sha256/expect.multiple-superset | 187 + .../t4211/sha256/expect.parallel-change-f-to-main | 160 + third_party/git/t/t4211/sha256/expect.simple-f | 59 + .../git/t/t4211/sha256/expect.simple-f-to-main | 100 + third_party/git/t/t4211/sha256/expect.simple-main | 68 + .../git/t/t4211/sha256/expect.simple-main-to-end | 70 + third_party/git/t/t4211/sha256/expect.two-ranges | 102 + .../git/t/t4211/sha256/expect.vanishes-early | 39 + third_party/git/t/t4213-log-tabexpand.sh | 2 +- third_party/git/t/t4214-log-graph-octopus.sh | 339 +- third_party/git/t/t4215-log-skewed-merges.sh | 373 + third_party/git/t/t4216-log-bloom.sh | 405 + third_party/git/t/t4254-am-corrupt.sh | 53 +- third_party/git/t/t4255-am-submodule.sh | 12 +- third_party/git/t/t4256-am-format-flowed.sh | 2 +- third_party/git/t/t4300-merge-tree.sh | 188 +- third_party/git/t/t5000-tar-tree.sh | 29 + third_party/git/t/t5003-archive-zip.sh | 52 +- third_party/git/t/t5004-archive-corner-cases.sh | 19 + third_party/git/t/t5100-mailinfo.sh | 15 + third_party/git/t/t5150-request-pull.sh | 8 +- third_party/git/t/t5300-pack-object.sh | 42 +- third_party/git/t/t5302-pack-index.sh | 363 +- third_party/git/t/t5307-pack-missing-commit.sh | 4 +- third_party/git/t/t5308-pack-detect-duplicates.sh | 20 +- third_party/git/t/t5309-pack-delta-cycles.sh | 18 +- third_party/git/t/t5310-pack-bitmaps.sh | 36 +- third_party/git/t/t5313-pack-bounds-checks.sh | 18 +- third_party/git/t/t5314-pack-cycle-detection.sh | 2 +- .../git/t/t5317-pack-objects-filter-objects.sh | 34 +- third_party/git/t/t5318-commit-graph.sh | 190 +- third_party/git/t/t5319-multi-pack-index.sh | 243 +- third_party/git/t/t5319/no-objects.midx | Bin 0 -> 1116 bytes third_party/git/t/t5321-pack-large-objects.sh | 4 +- third_party/git/t/t5322-pack-objects-sparse.sh | 4 +- third_party/git/t/t5324-split-commit-graph.sh | 112 +- third_party/git/t/t5400-send-pack.sh | 2 +- third_party/git/t/t5407-post-rewrite-hook.sh | 16 +- .../git/t/t5409-colorize-remote-messages.sh | 3 +- third_party/git/t/t5411-proc-receive-hook.sh | 117 + third_party/git/t/t5411/common-functions.sh | 56 + .../git/t/t5411/once-0010-report-status-v1.sh | 94 + .../git/t/t5411/test-0000-standard-git-push.sh | 143 + .../test-0001-standard-git-push--porcelain.sh | 147 + .../git/t/t5411/test-0002-pre-receive-declined.sh | 33 + .../test-0003-pre-receive-declined--porcelain.sh | 34 + .../git/t/t5411/test-0010-proc-receive-settings.sh | 7 + third_party/git/t/t5411/test-0011-no-hook-error.sh | 64 + .../t/t5411/test-0012-no-hook-error--porcelain.sh | 66 + third_party/git/t/t5411/test-0013-bad-protocol.sh | 217 + .../t/t5411/test-0014-bad-protocol--porcelain.sh | 160 + third_party/git/t/t5411/test-0020-report-ng.sh | 67 + .../git/t/t5411/test-0021-report-ng--porcelain.sh | 69 + .../git/t/t5411/test-0022-report-unexpect-ref.sh | 45 + .../test-0023-report-unexpect-ref--porcelain.sh | 46 + .../git/t/t5411/test-0024-report-unknown-ref.sh | 34 + .../test-0025-report-unknown-ref--porcelain.sh | 35 + third_party/git/t/t5411/test-0026-push-options.sh | 79 + .../t/t5411/test-0027-push-options--porcelain.sh | 82 + third_party/git/t/t5411/test-0030-report-ok.sh | 35 + .../git/t/t5411/test-0031-report-ok--porcelain.sh | 36 + .../git/t/t5411/test-0032-report-with-options.sh | 256 + .../test-0033-report-with-options--porcelain.sh | 265 + third_party/git/t/t5411/test-0034-report-ft.sh | 44 + .../git/t/t5411/test-0035-report-ft--porcelain.sh | 45 + .../test-0036-report-multi-rewrite-for-one-ref.sh | 227 + ...-report-multi-rewrite-for-one-ref--porcelain.sh | 172 + .../git/t/t5411/test-0038-report-mixed-refs.sh | 89 + .../test-0039-report-mixed-refs--porcelain.sh | 91 + .../git/t/t5411/test-0040-process-all-refs.sh | 113 + .../t5411/test-0041-process-all-refs--porcelain.sh | 114 + .../test-0050-proc-receive-refs-with-modifiers.sh | 135 + third_party/git/t/t5500-fetch-pack.sh | 127 +- third_party/git/t/t5504-fetch-receive-strict.sh | 17 +- third_party/git/t/t5505-remote.sh | 96 +- third_party/git/t/t5509-fetch-push-namespaces.sh | 13 +- third_party/git/t/t5510-fetch.sh | 145 +- third_party/git/t/t5512-ls-remote.sh | 109 +- third_party/git/t/t5514-fetch-multiple.sh | 13 +- third_party/git/t/t5515-fetch-merge-logic.sh | 63 +- third_party/git/t/t5516-fetch-push.sh | 42 +- third_party/git/t/t5517-push-mirror.sh | 10 + third_party/git/t/t5520-pull.sh | 423 +- third_party/git/t/t5521-pull-options.sh | 29 +- third_party/git/t/t5523-push-upstream.sh | 20 +- third_party/git/t/t5528-push-default.sh | 8 +- third_party/git/t/t5530-upload-pack-error.sh | 25 +- third_party/git/t/t5534-push-signed.sh | 22 + third_party/git/t/t5535-fetch-push-symref.sh | 2 +- third_party/git/t/t5537-fetch-shallow.sh | 134 +- third_party/git/t/t5539-fetch-http-shallow.sh | 6 +- third_party/git/t/t5540-http-push-webdav.sh | 22 +- third_party/git/t/t5541-http-push-smart.sh | 90 +- third_party/git/t/t5543-atomic-push.sh | 89 + third_party/git/t/t5545-push-options.sh | 5 +- third_party/git/t/t5548-push-porcelain.sh | 279 + third_party/git/t/t5550-http-fetch-dumb.sh | 68 +- third_party/git/t/t5551-http-fetch-smart.sh | 68 +- .../git/t/t5552-skipping-fetch-negotiator.sh | 41 +- third_party/git/t/t5553-set-upstream.sh | 178 + third_party/git/t/t5554-noop-fetch-negotiator.sh | 22 + .../git/t/t5562-http-backend-content-length.sh | 19 +- third_party/git/t/t5572-pull-submodule.sh | 20 +- third_party/git/t/t5573-pull-verify-signatures.sh | 64 + third_party/git/t/t5580-clone-push-unc.sh | 77 - third_party/git/t/t5580-unc-paths.sh | 89 + third_party/git/t/t5581-http-curl-verbose.sh | 2 +- third_party/git/t/t5582-fetch-negative-refspec.sh | 189 + third_party/git/t/t5601-clone.sh | 34 +- third_party/git/t/t5604-clone-reference.sh | 7 +- third_party/git/t/t5606-clone-options.sh | 24 + third_party/git/t/t5607-clone-bundle.sh | 46 +- third_party/git/t/t5608-clone-2gb.sh | 13 +- third_party/git/t/t5611-clone-config.sh | 13 +- third_party/git/t/t5612-clone-refspec.sh | 26 +- third_party/git/t/t5616-partial-clone.sh | 333 +- third_party/git/t/t5617-clone-submodules-remote.sh | 13 +- third_party/git/t/t5700-protocol-v1.sh | 6 +- third_party/git/t/t5701-git-serve.sh | 25 + third_party/git/t/t5702-protocol-v2.sh | 240 +- third_party/git/t/t5703-upload-pack-ref-in-want.sh | 282 +- third_party/git/t/t5704-protocol-violations.sh | 35 + third_party/git/t/t5801-remote-helpers.sh | 11 +- third_party/git/t/t5801/git-remote-testgit | 6 + third_party/git/t/t6000-rev-list-misc.sh | 44 +- third_party/git/t/t6002-rev-list-bisect.sh | 45 + third_party/git/t/t6006-rev-list-format.sh | 36 +- .../git/t/t6011-rev-list-with-bad-commit.sh | 2 +- third_party/git/t/t6012-rev-list-simplify.sh | 120 + .../git/t/t6016-rev-list-graph-simplify-history.sh | 30 +- third_party/git/t/t6018-rev-list-glob.sh | 11 +- third_party/git/t/t6019-rev-list-ancestry-path.sh | 4 +- third_party/git/t/t6020-merge-df.sh | 107 - third_party/git/t/t6021-merge-criss-cross.sh | 96 - third_party/git/t/t6022-merge-rename.sh | 899 - third_party/git/t/t6023-merge-file.sh | 362 - third_party/git/t/t6024-recursive-merge.sh | 122 - third_party/git/t/t6025-merge-symlinks.sh | 61 - third_party/git/t/t6026-merge-attr.sh | 207 - third_party/git/t/t6027-merge-binary.sh | 67 - third_party/git/t/t6028-merge-up-to-date.sh | 92 - third_party/git/t/t6029-merge-subtree.sh | 152 - third_party/git/t/t6030-bisect-porcelain.sh | 130 +- third_party/git/t/t6031-merge-filemode.sh | 100 - third_party/git/t/t6032-merge-large-rename.sh | 103 - third_party/git/t/t6033-merge-crlf.sh | 44 - third_party/git/t/t6034-merge-rename-nocruft.sh | 99 - third_party/git/t/t6035-merge-dir-to-symlink.sh | 172 - third_party/git/t/t6036-recursive-corner-cases.sh | 1797 - third_party/git/t/t6037-merge-ours-theirs.sh | 108 - third_party/git/t/t6038-merge-text-auto.sh | 217 - third_party/git/t/t6039-merge-ignorecase.sh | 53 - third_party/git/t/t6040-tracking-info.sh | 20 +- third_party/git/t/t6041-bisect-submodule.sh | 9 +- .../git/t/t6042-merge-rename-corner-cases.sh | 1359 - .../git/t/t6043-merge-rename-directories.sh | 4517 --- .../git/t/t6044-merge-unrelated-index-changes.sh | 216 - third_party/git/t/t6045-merge-rename-delete.sh | 23 - .../git/t/t6046-merge-skip-unneeded-updates.sh | 763 - third_party/git/t/t6050-replace.sh | 2 +- third_party/git/t/t6100-rev-list-in-order.sh | 4 +- third_party/git/t/t6101-rev-parse-parents.sh | 2 +- .../git/t/t6102-rev-list-unexpected-objects.sh | 2 +- .../git/t/t6112-rev-list-filters-objects.sh | 194 +- third_party/git/t/t6113-rev-list-bitmap-filters.sh | 77 + third_party/git/t/t6120-describe.sh | 158 +- third_party/git/t/t6130-pathspec-noglob.sh | 1 + third_party/git/t/t6132-pathspec-exclude.sh | 33 + third_party/git/t/t6136-pathspec-in-bare.sh | 38 + third_party/git/t/t6200-fmt-merge-msg.sh | 43 + third_party/git/t/t6300-for-each-ref.sh | 267 +- third_party/git/t/t6301-for-each-ref-errors.sh | 2 +- third_party/git/t/t6302-for-each-ref-filter.sh | 4 +- third_party/git/t/t6400-merge-df.sh | 150 + third_party/git/t/t6401-merge-criss-cross.sh | 67 + third_party/git/t/t6402-merge-rename.sh | 910 + third_party/git/t/t6403-merge-file.sh | 390 + third_party/git/t/t6404-recursive-merge.sh | 131 + third_party/git/t/t6405-merge-symlinks.sh | 62 + third_party/git/t/t6406-merge-attr.sh | 207 + third_party/git/t/t6407-merge-binary.sh | 67 + third_party/git/t/t6408-merge-up-to-date.sh | 92 + third_party/git/t/t6409-merge-subtree.sh | 152 + third_party/git/t/t6411-merge-filemode.sh | 100 + third_party/git/t/t6412-merge-large-rename.sh | 103 + third_party/git/t/t6413-merge-crlf.sh | 44 + third_party/git/t/t6414-merge-rename-nocruft.sh | 97 + third_party/git/t/t6415-merge-dir-to-symlink.sh | 172 + third_party/git/t/t6416-recursive-corner-cases.sh | 1820 + third_party/git/t/t6417-merge-ours-theirs.sh | 108 + third_party/git/t/t6418-merge-text-auto.sh | 204 + third_party/git/t/t6419-merge-ignorecase.sh | 53 + .../git/t/t6422-merge-rename-corner-cases.sh | 1449 + .../git/t/t6423-merge-rename-directories.sh | 4702 +++ .../git/t/t6424-merge-unrelated-index-changes.sh | 216 + third_party/git/t/t6425-merge-rename-delete.sh | 24 + .../git/t/t6426-merge-skip-unneeded-updates.sh | 770 + third_party/git/t/t6427-diff3-conflict-markers.sh | 211 + third_party/git/t/t6430-merge-recursive.sh | 770 + third_party/git/t/t6431-merge-criscross.sh | 95 + .../git/t/t6432-merge-recursive-space-options.sh | 207 + third_party/git/t/t6433-merge-toplevel.sh | 174 + .../git/t/t6434-merge-recursive-rename-options.sh | 330 + third_party/git/t/t6435-merge-sparse.sh | 58 + third_party/git/t/t6436-merge-overwrite.sh | 195 + third_party/git/t/t6437-submodule-merge.sh | 455 + .../t/t6438-submodule-directory-file-conflicts.sh | 19 + third_party/git/t/t6439-merge-co-error-msgs.sh | 138 + third_party/git/t/t6500-gc.sh | 33 +- third_party/git/t/t6501-freshen-objects.sh | 20 +- third_party/git/t/t6600-test-reach.sh | 32 + third_party/git/t/t7001-mv.sh | 19 +- third_party/git/t/t7003-filter-branch.sh | 3 +- third_party/git/t/t7004-tag.sh | 14 +- third_party/git/t/t7008-filter-branch-null-sha1.sh | 55 + third_party/git/t/t7008-grep-binary.sh | 249 - third_party/git/t/t7009-filter-branch-null-sha1.sh | 55 - third_party/git/t/t7012-skip-worktree-writing.sh | 15 + third_party/git/t/t7030-verify-tag.sh | 38 +- third_party/git/t/t7061-wtstatus-ignore.sh | 34 +- third_party/git/t/t7063-status-untracked-cache.sh | 204 +- third_party/git/t/t7102-reset.sh | 93 +- third_party/git/t/t7105-reset-patch.sh | 21 + third_party/git/t/t7107-reset-pathspec-file.sh | 178 + third_party/git/t/t7112-reset-submodule.sh | 7 +- third_party/git/t/t7201-co.sh | 6 +- third_party/git/t/t7300-clean.sh | 73 +- third_party/git/t/t7400-submodule-basic.sh | 94 +- third_party/git/t/t7401-submodule-summary.sh | 155 +- third_party/git/t/t7405-submodule-merge.sh | 455 - third_party/git/t/t7406-submodule-update.sh | 61 +- third_party/git/t/t7408-submodule-reference.sh | 8 +- third_party/git/t/t7410-submodule-checkout-to.sh | 77 - third_party/git/t/t7415-submodule-names.sh | 57 + third_party/git/t/t7416-submodule-dash-url.sh | 157 +- third_party/git/t/t7417-submodule-path-url.sh | 17 + third_party/git/t/t7419-submodule-set-branch.sh | 13 +- third_party/git/t/t7420-submodule-set-url.sh | 55 + third_party/git/t/t7421-submodule-summary-add.sh | 69 + .../git/t/t7500-commit-template-squash-signoff.sh | 9 + .../git/t/t7501-commit-basic-functionality.sh | 83 +- .../t7503-pre-commit-and-pre-merge-commit-hooks.sh | 281 + third_party/git/t/t7503-pre-commit-hook.sh | 139 - third_party/git/t/t7505-prepare-commit-msg-hook.sh | 8 +- third_party/git/t/t7505/expected-rebase-i | 3 +- third_party/git/t/t7506-status-submodule.sh | 12 +- third_party/git/t/t7508-status.sh | 45 +- third_party/git/t/t7510-signed-commit.sh | 55 +- third_party/git/t/t7512-status-help.sh | 18 +- third_party/git/t/t7513-interpret-trailers.sh | 2 +- third_party/git/t/t7518-ident-corner-cases.sh | 13 +- third_party/git/t/t7519-status-fsmonitor.sh | 37 +- third_party/git/t/t7519/fsmonitor-all | 1 - third_party/git/t/t7519/fsmonitor-all-v2 | 21 + third_party/git/t/t7519/fsmonitor-env | 24 + third_party/git/t/t7519/fsmonitor-watchman | 16 +- third_party/git/t/t7519/fsmonitor-watchman-v2 | 173 + third_party/git/t/t7526-commit-pathspec-file.sh | 164 + third_party/git/t/t7600-merge.sh | 160 +- third_party/git/t/t7601-merge-pull-config.sh | 57 + third_party/git/t/t7607-merge-overwrite.sh | 195 - third_party/git/t/t7609-merge-co-error-msgs.sh | 138 - third_party/git/t/t7612-merge-verify-signatures.sh | 22 + third_party/git/t/t7613-merge-submodule.sh | 19 - third_party/git/t/t7700-repack.sh | 172 +- third_party/git/t/t7800-difftool.sh | 13 +- third_party/git/t/t7810-grep.sh | 47 + third_party/git/t/t7811-grep-open.sh | 1 - third_party/git/t/t7812-grep-icase-non-ascii.sh | 31 + third_party/git/t/t7814-grep-recurse-submodules.sh | 32 +- third_party/git/t/t7815-grep-binary.sh | 148 + third_party/git/t/t7816-grep-binary-pattern.sh | 127 + third_party/git/t/t7900-maintenance.sh | 65 + third_party/git/t/t8002-blame.sh | 29 +- third_party/git/t/t8003-blame-corner-cases.sh | 30 +- third_party/git/t/t8011-blame-split-file.sh | 2 +- third_party/git/t/t8013-blame-ignore-revs.sh | 61 +- third_party/git/t/t8014-blame-ignore-fuzzy.sh | 2 +- third_party/git/t/t9001-send-email.sh | 61 +- third_party/git/t/t9010-svn-fe.sh | 1107 - third_party/git/t/t9011-svn-da.sh | 248 - third_party/git/t/t9020-remote-svn.sh | 89 - third_party/git/t/t9100-git-svn-basic.sh | 30 +- third_party/git/t/t9101-git-svn-props.sh | 12 +- third_party/git/t/t9104-git-svn-follow-parent.sh | 3 +- .../git/t/t9106-git-svn-commit-diff-clobber.sh | 3 +- third_party/git/t/t9108-git-svn-glob.sh | 4 +- third_party/git/t/t9109-git-svn-multi-glob.sh | 6 +- third_party/git/t/t9116-git-svn-log.sh | 12 +- .../git/t/t9141-git-svn-multiple-branches.sh | 8 +- .../git/t/t9160-git-svn-preserve-empty-dirs.sh | 4 +- .../git/t/t9164-git-svn-dcommit-concurrent.sh | 4 +- .../git/t/t9168-git-svn-partially-globbed-names.sh | 8 +- third_party/git/t/t9300-fast-import.sh | 383 +- third_party/git/t/t9301-fast-import-notes.sh | 14 +- third_party/git/t/t9350-fast-export.sh | 85 +- third_party/git/t/t9351-fast-export-anonymize.sh | 54 +- third_party/git/t/t9400-git-cvsserver-server.sh | 2 +- third_party/git/t/t9401-git-cvsserver-crlf.sh | 8 +- third_party/git/t/t9402-git-cvsserver-refs.sh | 2 +- .../git/t/t9500-gitweb-standalone-no-errors.sh | 92 +- .../git/t/t9502-gitweb-standalone-parse-output.sh | 7 +- third_party/git/t/t9700/test.pl | 12 +- third_party/git/t/t9800-git-p4-basic.sh | 1 - third_party/git/t/t9809-git-p4-client-view.sh | 2 +- third_party/git/t/t9810-git-p4-rcs.sh | 1 - third_party/git/t/t9819-git-p4-case-folding.sh | 2 +- third_party/git/t/t9831-git-p4-triggers.sh | 2 +- third_party/git/t/t9832-unshelve.sh | 5 +- third_party/git/t/t9834-git-p4-file-dir-bug.sh | 70 + third_party/git/t/t9902-completion.sh | 619 +- third_party/git/t/t9903-bash-prompt.sh | 8 +- third_party/git/t/test-lib-functions.sh | 232 +- third_party/git/t/test-lib.sh | 207 +- third_party/git/t/test-terminal.perl | 32 +- third_party/git/tag.c | 30 +- third_party/git/tag.h | 1 + third_party/git/tar.h | 5 + third_party/git/tempfile.c | 6 +- third_party/git/tempfile.h | 10 +- .../git/templates/hooks--fsmonitor-watchman.sample | 167 +- third_party/git/templates/hooks--pre-commit.sample | 2 +- .../git/templates/hooks--pre-merge-commit.sample | 13 + third_party/git/templates/hooks--pre-push.sample | 18 +- third_party/git/templates/hooks--update.sample | 12 +- third_party/git/tmp-objdir.c | 20 +- third_party/git/trace.c | 22 +- third_party/git/trace.h | 139 +- third_party/git/trace2.c | 9 + third_party/git/trace2.h | 137 +- third_party/git/trace2/tr2_cfg.c | 58 + third_party/git/trace2/tr2_cfg.h | 8 + third_party/git/trace2/tr2_dst.c | 120 +- third_party/git/trace2/tr2_dst.h | 1 + third_party/git/trace2/tr2_sid.c | 2 +- third_party/git/trace2/tr2_sysenv.c | 5 + third_party/git/trace2/tr2_sysenv.h | 3 + third_party/git/trace2/tr2_tgt_event.c | 36 +- third_party/git/trace2/tr2_tgt_normal.c | 37 +- third_party/git/trace2/tr2_tgt_perf.c | 108 +- third_party/git/trailer.c | 40 +- third_party/git/trailer.h | 45 +- third_party/git/transport-helper.c | 272 +- third_party/git/transport-internal.h | 10 +- third_party/git/transport.c | 290 +- third_party/git/transport.h | 31 +- third_party/git/tree-diff.c | 33 +- third_party/git/tree-walk.c | 89 +- third_party/git/tree-walk.h | 142 +- third_party/git/tree.c | 20 +- third_party/git/unicode-width.h | 43 +- third_party/git/unpack-trees.c | 533 +- third_party/git/unpack-trees.h | 36 +- third_party/git/upload-pack.c | 1053 +- third_party/git/upload-pack.h | 4 +- third_party/git/url.c | 8 +- third_party/git/url.h | 8 + third_party/git/urlmatch.c | 14 +- third_party/git/urlmatch.h | 14 + third_party/git/usage.c | 20 +- third_party/git/userdiff.c | 37 +- third_party/git/utf8.c | 15 +- third_party/git/vcs-svn/LICENSE | 32 - third_party/git/vcs-svn/fast_export.c | 365 - third_party/git/vcs-svn/line_buffer.c | 126 - third_party/git/vcs-svn/line_buffer.txt | 77 - third_party/git/vcs-svn/sliding_window.c | 79 - third_party/git/vcs-svn/svndiff.c | 309 - third_party/git/vcs-svn/svndump.c | 540 - third_party/git/walker.c | 17 +- third_party/git/walker.h | 1 + third_party/git/worktree.c | 260 +- third_party/git/worktree.h | 61 +- third_party/git/wrapper.c | 103 +- third_party/git/wt-status.c | 199 +- third_party/git/wt-status.h | 26 +- third_party/git/xdiff-interface.c | 12 +- third_party/git/xdiff-interface.h | 2 +- third_party/git/xdiff/xdiffi.c | 99 +- third_party/git/xdiff/xemit.c | 17 + 1541 files changed, 259535 insertions(+), 127418 deletions(-) create mode 100644 third_party/git/.cirrus.yml create mode 100644 third_party/git/.github/workflows/main.yml create mode 100644 third_party/git/CODE_OF_CONDUCT.md create mode 100644 third_party/git/Documentation/MyFirstObjectWalk.txt create mode 100644 third_party/git/Documentation/RelNotes/2.14.6.txt create mode 100644 third_party/git/Documentation/RelNotes/2.15.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.16.6.txt create mode 100644 third_party/git/Documentation/RelNotes/2.17.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.17.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.17.5.txt create mode 100644 third_party/git/Documentation/RelNotes/2.18.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.18.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.18.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.19.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.19.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.19.5.txt create mode 100644 third_party/git/Documentation/RelNotes/2.20.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.20.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.20.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.21.1.txt create mode 100644 third_party/git/Documentation/RelNotes/2.21.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.21.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.22.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.22.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.22.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.23.1.txt create mode 100644 third_party/git/Documentation/RelNotes/2.23.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.23.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.24.0.txt create mode 100644 third_party/git/Documentation/RelNotes/2.24.1.txt create mode 100644 third_party/git/Documentation/RelNotes/2.24.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.24.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.25.0.txt create mode 100644 third_party/git/Documentation/RelNotes/2.25.1.txt create mode 100644 third_party/git/Documentation/RelNotes/2.25.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.25.3.txt create mode 100644 third_party/git/Documentation/RelNotes/2.25.4.txt create mode 100644 third_party/git/Documentation/RelNotes/2.26.0.txt create mode 100644 third_party/git/Documentation/RelNotes/2.26.1.txt create mode 100644 third_party/git/Documentation/RelNotes/2.26.2.txt create mode 100644 third_party/git/Documentation/RelNotes/2.27.0.txt create mode 100644 third_party/git/Documentation/RelNotes/2.28.0.txt create mode 100644 third_party/git/Documentation/RelNotes/2.29.0.txt create mode 100644 third_party/git/Documentation/RelNotes/2.29.1.txt create mode 100644 third_party/git/Documentation/RelNotes/2.29.2.txt create mode 100644 third_party/git/Documentation/config/commitgraph.txt create mode 100644 third_party/git/Documentation/config/extensions.txt create mode 100644 third_party/git/Documentation/config/feature.txt create mode 100644 third_party/git/Documentation/config/maintenance.txt create mode 100644 third_party/git/Documentation/config/tar.txt create mode 100644 third_party/git/Documentation/git-bugreport.txt create mode 100644 third_party/git/Documentation/git-maintenance.txt create mode 100644 third_party/git/Documentation/git-sparse-checkout.txt create mode 100644 third_party/git/Documentation/gitfaq.txt delete mode 100644 third_party/git/Documentation/manpage-1.72.xsl delete mode 100644 third_party/git/Documentation/manpage-base.xsl delete mode 100644 third_party/git/Documentation/manpage-suppress-sp.xsl create mode 100644 third_party/git/Documentation/manpage.xsl create mode 100644 third_party/git/Documentation/object-format-disclaimer.txt create mode 100644 third_party/git/Documentation/ref-reachability-filters.txt create mode 100644 third_party/git/Documentation/rev-list-description.txt delete mode 100644 third_party/git/Documentation/technical/api-allocation-growing.txt delete mode 100644 third_party/git/Documentation/technical/api-argv-array.txt delete mode 100644 third_party/git/Documentation/technical/api-config.txt delete mode 100644 third_party/git/Documentation/technical/api-credentials.txt delete mode 100644 third_party/git/Documentation/technical/api-diff.txt delete mode 100644 third_party/git/Documentation/technical/api-directory-listing.txt delete mode 100644 third_party/git/Documentation/technical/api-gitattributes.txt delete mode 100644 third_party/git/Documentation/technical/api-grep.txt delete mode 100644 third_party/git/Documentation/technical/api-history-graph.txt delete mode 100644 third_party/git/Documentation/technical/api-object-access.txt delete mode 100644 third_party/git/Documentation/technical/api-oid-array.txt delete mode 100644 third_party/git/Documentation/technical/api-quote.txt delete mode 100644 third_party/git/Documentation/technical/api-ref-iteration.txt delete mode 100644 third_party/git/Documentation/technical/api-remote.txt delete mode 100644 third_party/git/Documentation/technical/api-revision-walking.txt delete mode 100644 third_party/git/Documentation/technical/api-run-command.txt delete mode 100644 third_party/git/Documentation/technical/api-setup.txt delete mode 100644 third_party/git/Documentation/technical/api-sigchain.txt delete mode 100644 third_party/git/Documentation/technical/api-submodule-config.txt delete mode 100644 third_party/git/Documentation/technical/api-trace.txt delete mode 100644 third_party/git/Documentation/technical/api-tree-walking.txt delete mode 100644 third_party/git/Documentation/technical/api-xdiff-interface.txt create mode 100644 third_party/git/Documentation/technical/bundle-format.txt create mode 100644 third_party/git/Documentation/technical/packfile-uri.txt create mode 100644 third_party/git/Documentation/technical/reftable.txt create mode 100644 third_party/git/add-interactive.c create mode 100644 third_party/git/add-interactive.h create mode 100644 third_party/git/add-patch.c delete mode 100644 third_party/git/argv-array.c delete mode 100644 third_party/git/argv-array.h delete mode 100644 third_party/git/azure-pipelines.yml create mode 100644 third_party/git/bloom.c create mode 100644 third_party/git/bloom.h create mode 100644 third_party/git/builtin/bugreport.c create mode 100644 third_party/git/builtin/credential-cache--daemon.c create mode 100644 third_party/git/builtin/credential-cache.c create mode 100644 third_party/git/builtin/credential-store.c create mode 100644 third_party/git/builtin/fast-import.c create mode 100644 third_party/git/builtin/sparse-checkout.c create mode 100755 third_party/git/ci/config/allow-ref.sample create mode 100755 third_party/git/ci/install-docker-dependencies.sh create mode 100755 third_party/git/ci/run-docker-build.sh create mode 100755 third_party/git/ci/run-docker.sh delete mode 100755 third_party/git/ci/run-linux32-build.sh delete mode 100755 third_party/git/ci/run-linux32-docker.sh create mode 100644 third_party/git/compat/compiler.h delete mode 100644 third_party/git/compat/gmtime.c delete mode 100644 third_party/git/compat/qsort.c create mode 100644 third_party/git/contrib/buildsystems/CMakeLists.txt create mode 100644 third_party/git/contrib/coccinelle/hashmap.cocci create mode 100644 third_party/git/contrib/credential/netrc/.gitignore delete mode 100755 third_party/git/contrib/credential/netrc/git-credential-netrc create mode 100755 third_party/git/contrib/credential/netrc/git-credential-netrc.perl delete mode 100644 third_party/git/contrib/mw-to-git/t/install-wiki/.gitignore delete mode 100644 third_party/git/contrib/mw-to-git/t/install-wiki/LocalSettings.php delete mode 100644 third_party/git/contrib/mw-to-git/t/install-wiki/db_install.php delete mode 100644 third_party/git/contrib/svn-fe/.gitignore delete mode 100644 third_party/git/contrib/svn-fe/Makefile delete mode 100644 third_party/git/contrib/svn-fe/svn-fe.c delete mode 100644 third_party/git/contrib/svn-fe/svn-fe.txt delete mode 100755 third_party/git/contrib/svn-fe/svnrdump_sim.py delete mode 100644 third_party/git/credential-cache--daemon.c delete mode 100644 third_party/git/credential-cache.c delete mode 100644 third_party/git/credential-store.c delete mode 100644 third_party/git/fast-import.c delete mode 100644 third_party/git/fetch-object.c delete mode 100644 third_party/git/fetch-object.h create mode 100644 third_party/git/fmt-merge-msg.c create mode 100755 third_party/git/generate-configlist.sh create mode 100644 third_party/git/git-gui/README.md create mode 100644 third_party/git/git-gui/lib/chord.tcl delete mode 100755 third_party/git/git-legacy-stash.sh create mode 100644 third_party/git/gitk-git/po/zh_cn.po delete mode 100644 third_party/git/interdiff.c delete mode 100644 third_party/git/interdiff.h delete mode 100644 third_party/git/mergetools/bc3 delete mode 100644 third_party/git/mergetools/gvimdiff2 delete mode 100644 third_party/git/mergetools/gvimdiff3 create mode 100644 third_party/git/mergetools/nvimdiff delete mode 100644 third_party/git/mergetools/vimdiff2 delete mode 100644 third_party/git/mergetools/vimdiff3 create mode 100644 third_party/git/negotiator/noop.c create mode 100644 third_party/git/negotiator/noop.h create mode 100644 third_party/git/oid-array.c create mode 100644 third_party/git/oid-array.h create mode 100644 third_party/git/po/tr.po create mode 100644 third_party/git/po/zh_TW.po create mode 100644 third_party/git/promisor-remote.c create mode 100644 third_party/git/promisor-remote.h create mode 100644 third_party/git/prune-packed.c create mode 100644 third_party/git/prune-packed.h create mode 100644 third_party/git/rebase.c create mode 100644 third_party/git/rebase.h create mode 100644 third_party/git/refs/debug.c delete mode 100644 third_party/git/remote-testsvn.c create mode 100644 third_party/git/repo-settings.c create mode 100644 third_party/git/reset.c create mode 100644 third_party/git/reset.h delete mode 100644 third_party/git/sha1-array.c delete mode 100644 third_party/git/sha1-array.h create mode 100644 third_party/git/shallow.h create mode 100644 third_party/git/stable-qsort.c create mode 100644 third_party/git/strvec.c create mode 100644 third_party/git/strvec.h create mode 100644 third_party/git/t/helper/test-advise.c create mode 100644 third_party/git/t/helper/test-bloom.c delete mode 100644 third_party/git/t/helper/test-line-buffer.c create mode 100644 third_party/git/t/helper/test-oid-array.c create mode 100644 third_party/git/t/helper/test-parse-pathspec-file.c create mode 100644 third_party/git/t/helper/test-proc-receive.c create mode 100644 third_party/git/t/helper/test-progress.c create mode 100644 third_party/git/t/helper/test-read-graph.c delete mode 100644 third_party/git/t/helper/test-sha1-array.c delete mode 100644 third_party/git/t/helper/test-svn-fe.c mode change 100755 => 100644 third_party/git/t/lib-credential.sh mode change 100755 => 100644 third_party/git/t/lib-gpg.sh create mode 100644 third_party/git/t/lib-httpd/apply-one-time-perl.sh delete mode 100644 third_party/git/t/lib-httpd/apply-one-time-sed.sh create mode 100644 third_party/git/t/lib-httpd/incomplete-body-upload-pack-v2-http.sh create mode 100644 third_party/git/t/lib-httpd/incomplete-length-upload-pack-v2-http.sh create mode 100644 third_party/git/t/lib-log-graph.sh mode change 100755 => 100644 third_party/git/t/lib-submodule-update.sh create mode 100755 third_party/git/t/perf/p1400-update-ref.sh delete mode 100755 third_party/git/t/perf/p5600-clone-reference.sh create mode 100755 third_party/git/t/perf/p5601-clone-reference.sh create mode 100755 third_party/git/t/perf/p9300-fast-import-export.sh create mode 100755 third_party/git/t/t0018-advice.sh create mode 100755 third_party/git/t/t0067-parse_pathspec_file.sh delete mode 100755 third_party/git/t/t0081-line-buffer.sh create mode 100755 third_party/git/t/t0091-bugreport.sh create mode 100755 third_party/git/t/t0095-bloom.sh create mode 100755 third_party/git/t/t0500-progress-display.sh create mode 100755 third_party/git/t/t1091-sparse-checkout-builtin.sh create mode 100755 third_party/git/t/t1416-ref-transaction-hooks.sh create mode 100755 third_party/git/t/t2026-checkout-pathspec-file.sh create mode 100755 third_party/git/t/t2027-checkout-track.sh create mode 100755 third_party/git/t/t2072-restore-pathspec-file.sh create mode 100755 third_party/git/t/t2405-worktree-submodule.sh create mode 100755 third_party/git/t/t2406-worktree-repair.sh create mode 100755 third_party/git/t/t3011-common-prefixes-and-directory-traversal.sh delete mode 100755 third_party/git/t/t3030-merge-recursive.sh delete mode 100755 third_party/git/t/t3031-merge-criscross.sh delete mode 100755 third_party/git/t/t3032-merge-recursive-space-options.sh delete mode 100755 third_party/git/t/t3033-merge-toplevel.sh delete mode 100755 third_party/git/t/t3034-merge-recursive-rename-options.sh delete mode 100755 third_party/git/t/t3035-merge-sparse.sh create mode 100755 third_party/git/t/t3424-rebase-empty.sh create mode 100755 third_party/git/t/t3431-rebase-fork-point.sh create mode 100755 third_party/git/t/t3432-rebase-fast-forward.sh create mode 100755 third_party/git/t/t3433-rebase-across-mode-change.sh create mode 100755 third_party/git/t/t3434-rebase-i18n.sh create mode 100644 third_party/git/t/t3434/ISO8859-1.txt create mode 100644 third_party/git/t/t3434/eucJP.txt create mode 100755 third_party/git/t/t3435-rebase-gpg-sign.sh create mode 100755 third_party/git/t/t3436-rebase-more-options.sh create mode 100755 third_party/git/t/t3514-cherry-pick-revert-gpg.sh create mode 100755 third_party/git/t/t3601-rm-pathspec-file.sh create mode 100755 third_party/git/t/t3704-add-pathspec-file.sh create mode 100755 third_party/git/t/t3908-stash-in-worktree.sh create mode 100755 third_party/git/t/t3909-stash-pathspec-file.sh create mode 100644 third_party/git/t/t4013/diff.diff-tree_--format=%N_note create mode 100644 third_party/git/t/t4013/diff.diff-tree_--pretty_--notes_note create mode 100644 third_party/git/t/t4013/diff.diff-tree_--pretty_note create mode 100644 third_party/git/t/t4013/diff.diff-tree_--root_-p_--abbrev=10_initial create mode 100644 third_party/git/t/t4013/diff.diff-tree_--root_-p_--full-index_--abbrev=10_initial create mode 100644 third_party/git/t/t4013/diff.diff-tree_--root_-p_--full-index_initial create mode 100644 third_party/git/t/t4013/diff.log_--diff-merges=off_-p_--first-parent_master create mode 100644 third_party/git/t/t4013/diff.log_--first-parent_--diff-merges=off_-p_master create mode 100644 third_party/git/t/t4013/diff.log_--no-diff-merges_-p_--first-parent_master create mode 100644 third_party/git/t/t4018/dts-labels create mode 100644 third_party/git/t/t4018/dts-node-unitless create mode 100644 third_party/git/t/t4018/dts-nodes create mode 100644 third_party/git/t/t4018/dts-nodes-boolean-prop create mode 100644 third_party/git/t/t4018/dts-nodes-comment1 create mode 100644 third_party/git/t/t4018/dts-nodes-comment2 create mode 100644 third_party/git/t/t4018/dts-nodes-multiline-prop create mode 100644 third_party/git/t/t4018/dts-reference create mode 100644 third_party/git/t/t4018/dts-root create mode 100644 third_party/git/t/t4018/dts-root-comment create mode 100644 third_party/git/t/t4018/elixir-do-not-pick-end create mode 100644 third_party/git/t/t4018/elixir-ex-unit-test create mode 100644 third_party/git/t/t4018/elixir-function create mode 100644 third_party/git/t/t4018/elixir-macro create mode 100644 third_party/git/t/t4018/elixir-module create mode 100644 third_party/git/t/t4018/elixir-module-func create mode 100644 third_party/git/t/t4018/elixir-nested-module create mode 100644 third_party/git/t/t4018/elixir-private-function create mode 100644 third_party/git/t/t4018/elixir-protocol create mode 100644 third_party/git/t/t4018/elixir-protocol-implementation create mode 100644 third_party/git/t/t4018/fortran-block-data create mode 100644 third_party/git/t/t4018/fortran-comment create mode 100644 third_party/git/t/t4018/fortran-comment-keyword create mode 100644 third_party/git/t/t4018/fortran-comment-legacy create mode 100644 third_party/git/t/t4018/fortran-comment-legacy-star create mode 100644 third_party/git/t/t4018/fortran-external-function create mode 100644 third_party/git/t/t4018/fortran-external-subroutine create mode 100644 third_party/git/t/t4018/fortran-module create mode 100644 third_party/git/t/t4018/fortran-module-procedure create mode 100644 third_party/git/t/t4018/fortran-program create mode 100644 third_party/git/t/t4018/markdown-heading-indented create mode 100644 third_party/git/t/t4018/markdown-heading-non-headings create mode 100644 third_party/git/t/t4018/python-async-def create mode 100644 third_party/git/t/t4018/python-class create mode 100644 third_party/git/t/t4018/python-def create mode 100644 third_party/git/t/t4018/python-indented-async-def create mode 100644 third_party/git/t/t4018/python-indented-class create mode 100644 third_party/git/t/t4018/python-indented-def create mode 100644 third_party/git/t/t4034/dts/expect create mode 100644 third_party/git/t/t4034/dts/post create mode 100644 third_party/git/t/t4034/dts/pre create mode 100755 third_party/git/t/t4068-diff-symmetric.sh create mode 100755 third_party/git/t/t4140-apply-ita.sh delete mode 100644 third_party/git/t/t4211/expect.beginning-of-file delete mode 100644 third_party/git/t/t4211/expect.end-of-file delete mode 100644 third_party/git/t/t4211/expect.move-support-f delete mode 100644 third_party/git/t/t4211/expect.multiple delete mode 100644 third_party/git/t/t4211/expect.multiple-overlapping delete mode 100644 third_party/git/t/t4211/expect.multiple-superset delete mode 100644 third_party/git/t/t4211/expect.parallel-change-f-to-main delete mode 100644 third_party/git/t/t4211/expect.simple-f delete mode 100644 third_party/git/t/t4211/expect.simple-f-to-main delete mode 100644 third_party/git/t/t4211/expect.simple-main delete mode 100644 third_party/git/t/t4211/expect.simple-main-to-end delete mode 100644 third_party/git/t/t4211/expect.two-ranges delete mode 100644 third_party/git/t/t4211/expect.vanishes-early create mode 100644 third_party/git/t/t4211/sha1/expect.beginning-of-file create mode 100644 third_party/git/t/t4211/sha1/expect.end-of-file create mode 100644 third_party/git/t/t4211/sha1/expect.move-support-f create mode 100644 third_party/git/t/t4211/sha1/expect.multiple create mode 100644 third_party/git/t/t4211/sha1/expect.multiple-overlapping create mode 100644 third_party/git/t/t4211/sha1/expect.multiple-superset create mode 100644 third_party/git/t/t4211/sha1/expect.parallel-change-f-to-main create mode 100644 third_party/git/t/t4211/sha1/expect.simple-f create mode 100644 third_party/git/t/t4211/sha1/expect.simple-f-to-main create mode 100644 third_party/git/t/t4211/sha1/expect.simple-main create mode 100644 third_party/git/t/t4211/sha1/expect.simple-main-to-end create mode 100644 third_party/git/t/t4211/sha1/expect.two-ranges create mode 100644 third_party/git/t/t4211/sha1/expect.vanishes-early create mode 100644 third_party/git/t/t4211/sha256/expect.beginning-of-file create mode 100644 third_party/git/t/t4211/sha256/expect.end-of-file create mode 100644 third_party/git/t/t4211/sha256/expect.move-support-f create mode 100644 third_party/git/t/t4211/sha256/expect.multiple create mode 100644 third_party/git/t/t4211/sha256/expect.multiple-overlapping create mode 100644 third_party/git/t/t4211/sha256/expect.multiple-superset create mode 100644 third_party/git/t/t4211/sha256/expect.parallel-change-f-to-main create mode 100644 third_party/git/t/t4211/sha256/expect.simple-f create mode 100644 third_party/git/t/t4211/sha256/expect.simple-f-to-main create mode 100644 third_party/git/t/t4211/sha256/expect.simple-main create mode 100644 third_party/git/t/t4211/sha256/expect.simple-main-to-end create mode 100644 third_party/git/t/t4211/sha256/expect.two-ranges create mode 100644 third_party/git/t/t4211/sha256/expect.vanishes-early create mode 100755 third_party/git/t/t4215-log-skewed-merges.sh create mode 100755 third_party/git/t/t4216-log-bloom.sh create mode 100644 third_party/git/t/t5319/no-objects.midx create mode 100755 third_party/git/t/t5411-proc-receive-hook.sh create mode 100644 third_party/git/t/t5411/common-functions.sh create mode 100644 third_party/git/t/t5411/once-0010-report-status-v1.sh create mode 100644 third_party/git/t/t5411/test-0000-standard-git-push.sh create mode 100644 third_party/git/t/t5411/test-0001-standard-git-push--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0002-pre-receive-declined.sh create mode 100644 third_party/git/t/t5411/test-0003-pre-receive-declined--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0010-proc-receive-settings.sh create mode 100644 third_party/git/t/t5411/test-0011-no-hook-error.sh create mode 100644 third_party/git/t/t5411/test-0012-no-hook-error--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0013-bad-protocol.sh create mode 100644 third_party/git/t/t5411/test-0014-bad-protocol--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0020-report-ng.sh create mode 100644 third_party/git/t/t5411/test-0021-report-ng--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0022-report-unexpect-ref.sh create mode 100644 third_party/git/t/t5411/test-0023-report-unexpect-ref--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0024-report-unknown-ref.sh create mode 100644 third_party/git/t/t5411/test-0025-report-unknown-ref--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0026-push-options.sh create mode 100644 third_party/git/t/t5411/test-0027-push-options--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0030-report-ok.sh create mode 100644 third_party/git/t/t5411/test-0031-report-ok--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0032-report-with-options.sh create mode 100644 third_party/git/t/t5411/test-0033-report-with-options--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0034-report-ft.sh create mode 100644 third_party/git/t/t5411/test-0035-report-ft--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0036-report-multi-rewrite-for-one-ref.sh create mode 100644 third_party/git/t/t5411/test-0037-report-multi-rewrite-for-one-ref--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0038-report-mixed-refs.sh create mode 100644 third_party/git/t/t5411/test-0039-report-mixed-refs--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0040-process-all-refs.sh create mode 100644 third_party/git/t/t5411/test-0041-process-all-refs--porcelain.sh create mode 100644 third_party/git/t/t5411/test-0050-proc-receive-refs-with-modifiers.sh create mode 100755 third_party/git/t/t5548-push-porcelain.sh create mode 100755 third_party/git/t/t5553-set-upstream.sh create mode 100755 third_party/git/t/t5554-noop-fetch-negotiator.sh delete mode 100755 third_party/git/t/t5580-clone-push-unc.sh create mode 100755 third_party/git/t/t5580-unc-paths.sh create mode 100755 third_party/git/t/t5582-fetch-negative-refspec.sh create mode 100755 third_party/git/t/t5704-protocol-violations.sh delete mode 100755 third_party/git/t/t6020-merge-df.sh delete mode 100755 third_party/git/t/t6021-merge-criss-cross.sh delete mode 100755 third_party/git/t/t6022-merge-rename.sh delete mode 100755 third_party/git/t/t6023-merge-file.sh delete mode 100755 third_party/git/t/t6024-recursive-merge.sh delete mode 100755 third_party/git/t/t6025-merge-symlinks.sh delete mode 100755 third_party/git/t/t6026-merge-attr.sh delete mode 100755 third_party/git/t/t6027-merge-binary.sh delete mode 100755 third_party/git/t/t6028-merge-up-to-date.sh delete mode 100755 third_party/git/t/t6029-merge-subtree.sh delete mode 100755 third_party/git/t/t6031-merge-filemode.sh delete mode 100755 third_party/git/t/t6032-merge-large-rename.sh delete mode 100755 third_party/git/t/t6033-merge-crlf.sh delete mode 100755 third_party/git/t/t6034-merge-rename-nocruft.sh delete mode 100755 third_party/git/t/t6035-merge-dir-to-symlink.sh delete mode 100755 third_party/git/t/t6036-recursive-corner-cases.sh delete mode 100755 third_party/git/t/t6037-merge-ours-theirs.sh delete mode 100755 third_party/git/t/t6038-merge-text-auto.sh delete mode 100755 third_party/git/t/t6039-merge-ignorecase.sh delete mode 100755 third_party/git/t/t6042-merge-rename-corner-cases.sh delete mode 100755 third_party/git/t/t6043-merge-rename-directories.sh delete mode 100755 third_party/git/t/t6044-merge-unrelated-index-changes.sh delete mode 100755 third_party/git/t/t6045-merge-rename-delete.sh delete mode 100755 third_party/git/t/t6046-merge-skip-unneeded-updates.sh create mode 100755 third_party/git/t/t6113-rev-list-bitmap-filters.sh create mode 100755 third_party/git/t/t6136-pathspec-in-bare.sh create mode 100755 third_party/git/t/t6400-merge-df.sh create mode 100755 third_party/git/t/t6401-merge-criss-cross.sh create mode 100755 third_party/git/t/t6402-merge-rename.sh create mode 100755 third_party/git/t/t6403-merge-file.sh create mode 100755 third_party/git/t/t6404-recursive-merge.sh create mode 100755 third_party/git/t/t6405-merge-symlinks.sh create mode 100755 third_party/git/t/t6406-merge-attr.sh create mode 100755 third_party/git/t/t6407-merge-binary.sh create mode 100755 third_party/git/t/t6408-merge-up-to-date.sh create mode 100755 third_party/git/t/t6409-merge-subtree.sh create mode 100755 third_party/git/t/t6411-merge-filemode.sh create mode 100755 third_party/git/t/t6412-merge-large-rename.sh create mode 100755 third_party/git/t/t6413-merge-crlf.sh create mode 100755 third_party/git/t/t6414-merge-rename-nocruft.sh create mode 100755 third_party/git/t/t6415-merge-dir-to-symlink.sh create mode 100755 third_party/git/t/t6416-recursive-corner-cases.sh create mode 100755 third_party/git/t/t6417-merge-ours-theirs.sh create mode 100755 third_party/git/t/t6418-merge-text-auto.sh create mode 100755 third_party/git/t/t6419-merge-ignorecase.sh create mode 100755 third_party/git/t/t6422-merge-rename-corner-cases.sh create mode 100755 third_party/git/t/t6423-merge-rename-directories.sh create mode 100755 third_party/git/t/t6424-merge-unrelated-index-changes.sh create mode 100755 third_party/git/t/t6425-merge-rename-delete.sh create mode 100755 third_party/git/t/t6426-merge-skip-unneeded-updates.sh create mode 100755 third_party/git/t/t6427-diff3-conflict-markers.sh create mode 100755 third_party/git/t/t6430-merge-recursive.sh create mode 100755 third_party/git/t/t6431-merge-criscross.sh create mode 100755 third_party/git/t/t6432-merge-recursive-space-options.sh create mode 100755 third_party/git/t/t6433-merge-toplevel.sh create mode 100755 third_party/git/t/t6434-merge-recursive-rename-options.sh create mode 100755 third_party/git/t/t6435-merge-sparse.sh create mode 100755 third_party/git/t/t6436-merge-overwrite.sh create mode 100755 third_party/git/t/t6437-submodule-merge.sh create mode 100755 third_party/git/t/t6438-submodule-directory-file-conflicts.sh create mode 100755 third_party/git/t/t6439-merge-co-error-msgs.sh create mode 100755 third_party/git/t/t7008-filter-branch-null-sha1.sh delete mode 100755 third_party/git/t/t7008-grep-binary.sh delete mode 100755 third_party/git/t/t7009-filter-branch-null-sha1.sh create mode 100755 third_party/git/t/t7107-reset-pathspec-file.sh delete mode 100755 third_party/git/t/t7405-submodule-merge.sh delete mode 100755 third_party/git/t/t7410-submodule-checkout-to.sh create mode 100755 third_party/git/t/t7420-submodule-set-url.sh create mode 100755 third_party/git/t/t7421-submodule-summary-add.sh create mode 100755 third_party/git/t/t7503-pre-commit-and-pre-merge-commit-hooks.sh delete mode 100755 third_party/git/t/t7503-pre-commit-hook.sh create mode 100755 third_party/git/t/t7519/fsmonitor-all-v2 create mode 100755 third_party/git/t/t7519/fsmonitor-env create mode 100755 third_party/git/t/t7519/fsmonitor-watchman-v2 create mode 100755 third_party/git/t/t7526-commit-pathspec-file.sh delete mode 100755 third_party/git/t/t7607-merge-overwrite.sh delete mode 100755 third_party/git/t/t7609-merge-co-error-msgs.sh delete mode 100755 third_party/git/t/t7613-merge-submodule.sh create mode 100755 third_party/git/t/t7815-grep-binary.sh create mode 100755 third_party/git/t/t7816-grep-binary-pattern.sh create mode 100755 third_party/git/t/t7900-maintenance.sh delete mode 100755 third_party/git/t/t9010-svn-fe.sh delete mode 100755 third_party/git/t/t9011-svn-da.sh delete mode 100755 third_party/git/t/t9020-remote-svn.sh create mode 100755 third_party/git/t/t9834-git-p4-file-dir-bug.sh create mode 100755 third_party/git/templates/hooks--pre-merge-commit.sample delete mode 100644 third_party/git/vcs-svn/LICENSE delete mode 100644 third_party/git/vcs-svn/fast_export.c delete mode 100644 third_party/git/vcs-svn/line_buffer.c delete mode 100644 third_party/git/vcs-svn/line_buffer.txt delete mode 100644 third_party/git/vcs-svn/sliding_window.c delete mode 100644 third_party/git/vcs-svn/svndiff.c delete mode 100644 third_party/git/vcs-svn/svndump.c diff --git a/third_party/default.nix b/third_party/default.nix index 2c5bfa4ad493..f8881fac817b 100644 --- a/third_party/default.nix +++ b/third_party/default.nix @@ -21,11 +21,11 @@ let ]; }; - # Tracking nixos-20.03 as of 2020-08-04. - stableCommit = "977000f149bd4ddb65bf1af09552898a0f305c72"; + # Tracking nixos-20.09 as of 2020-11-21. + stableCommit = "58f9c4c7d3a42c912362ca68577162e38ea8edfb"; stableNixpkgsSrc = fetchTarball { - url = "https://github.com/NixOS/nixpkgs-channels/archive/${stableCommit}.tar.gz"; - sha256 = "1ad3bviywxd64g4vwk4ppjkkajd3rfqjhnp6xcz3w0ih0sbn0rh5"; + url = "https://github.com/NixOS/nixpkgs/archive/${stableCommit}.tar.gz"; + sha256 = "1517dy07jf4zhzknqbgm617lgjxsn7a6k1vgq61c67f6h55qs5ij"; }; stableNixpkgs = import stableNixpkgsSrc {}; diff --git a/third_party/git/.cirrus.yml b/third_party/git/.cirrus.yml new file mode 100644 index 000000000000..c2f5fe385af1 --- /dev/null +++ b/third_party/git/.cirrus.yml @@ -0,0 +1,15 @@ +env: + CIRRUS_CLONE_DEPTH: 1 + +freebsd_12_task: + freebsd_instance: + image: freebsd-12-1-release-amd64 + install_script: + pkg install -y gettext gmake perl5 + create_user_script: + - pw useradd git + - chown -R git:git . + build_script: + - su git -c gmake + test_script: + - su git -c 'gmake test' diff --git a/third_party/git/.editorconfig b/third_party/git/.editorconfig index 42cdc4bbfb05..f9d819623d83 100644 --- a/third_party/git/.editorconfig +++ b/third_party/git/.editorconfig @@ -4,7 +4,7 @@ insert_final_newline = true # The settings for C (*.c and *.h) files are mirrored in .clang-format. Keep # them in sync. -[*.{c,h,sh,perl,pl,pm}] +[*.{c,h,sh,perl,pl,pm,txt}] indent_style = tab tab_width = 8 diff --git a/third_party/git/.github/CONTRIBUTING.md b/third_party/git/.github/CONTRIBUTING.md index e7b4e2f3c204..c8755e38de81 100644 --- a/third_party/git/.github/CONTRIBUTING.md +++ b/third_party/git/.github/CONTRIBUTING.md @@ -16,4 +16,7 @@ If you prefer video, then [this talk](https://www.youtube.com/watch?v=Q7i_qQW__q might be useful to you as the presenter walks you through the contribution process by example. +Or, you can follow the ["My First Contribution"](https://git-scm.com/docs/MyFirstContribution) +tutorial for another example of the contribution process. + Your friendly Git community! diff --git a/third_party/git/.github/workflows/main.yml b/third_party/git/.github/workflows/main.yml new file mode 100644 index 000000000000..a940997f1b66 --- /dev/null +++ b/third_party/git/.github/workflows/main.yml @@ -0,0 +1,350 @@ +name: CI/PR + +on: [push, pull_request] + +env: + DEVELOPER: 1 + +jobs: + ci-config: + runs-on: ubuntu-latest + outputs: + enabled: ${{ steps.check-ref.outputs.enabled }}${{ steps.skip-if-redundant.outputs.enabled }} + steps: + - name: try to clone ci-config branch + run: | + git -c protocol.version=2 clone \ + --no-tags \ + --single-branch \ + -b ci-config \ + --depth 1 \ + --no-checkout \ + --filter=blob:none \ + https://github.com/${{ github.repository }} \ + config-repo && + cd config-repo && + git checkout HEAD -- ci/config || : ignore + - id: check-ref + name: check whether CI is enabled for ref + run: | + enabled=yes + if test -x config-repo/ci/config/allow-ref && + ! config-repo/ci/config/allow-ref '${{ github.ref }}' + then + enabled=no + fi + echo "::set-output name=enabled::$enabled" + - name: skip if the commit or tree was already tested + id: skip-if-redundant + uses: actions/github-script@v3 + if: steps.check-ref.outputs.enabled == 'yes' + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + // Figure out workflow ID, commit and tree + const { data: run } = await github.actions.getWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.runId, + }); + const workflow_id = run.workflow_id; + const head_sha = run.head_sha; + const tree_id = run.head_commit.tree_id; + + // See whether there is a successful run for that commit or tree + const { data: runs } = await github.actions.listWorkflowRuns({ + owner: context.repo.owner, + repo: context.repo.repo, + per_page: 500, + status: 'success', + workflow_id, + }); + for (const run of runs.workflow_runs) { + if (head_sha === run.head_sha) { + core.warning(`Successful run for the commit ${head_sha}: ${run.html_url}`); + core.setOutput('enabled', ' but skip'); + break; + } + if (tree_id === run.head_commit.tree_id) { + core.warning(`Successful run for the tree ${tree_id}: ${run.html_url}`); + core.setOutput('enabled', ' but skip'); + break; + } + } + + windows-build: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - name: download git-sdk-64-minimal + shell: bash + run: | + ## Get artifact + urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds + id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" | + jq -r ".value[] | .id") + download_url="$(curl "$urlbase/$id/artifacts" | + jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')" + curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \ + -o artifacts.zip "$download_url" + + ## Unzip and remove the artifact + unzip artifacts.zip + rm artifacts.zip + - name: build + shell: powershell + env: + HOME: ${{runner.workspace}} + MSYSTEM: MINGW64 + NO_PERL: 1 + run: | + & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @" + printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude + + ci/make-test-artifacts.sh artifacts + "@ + - name: upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: windows-artifacts + path: artifacts + - name: upload git-sdk-64-minimal + uses: actions/upload-artifact@v1 + with: + name: git-sdk-64-minimal + path: git-sdk-64-minimal + windows-test: + runs-on: windows-latest + needs: [windows-build] + strategy: + matrix: + nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + steps: + - uses: actions/checkout@v1 + - name: download build artifacts + uses: actions/download-artifact@v1 + with: + name: windows-artifacts + path: ${{github.workspace}} + - name: extract build artifacts + shell: bash + run: tar xf artifacts.tar.gz + - name: download git-sdk-64-minimal + uses: actions/download-artifact@v1 + with: + name: git-sdk-64-minimal + path: ${{github.workspace}}/git-sdk-64-minimal/ + - name: test + shell: powershell + run: | + & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @" + # Let Git ignore the SDK + printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude + + ci/run-test-slice.sh ${{matrix.nr}} 10 + "@ + - name: ci/print-test-failures.sh + if: failure() + shell: powershell + run: | + & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh + - name: Upload failed tests' directories + if: failure() && env.FAILED_TEST_ARTIFACTS != '' + uses: actions/upload-artifact@v1 + with: + name: failed-tests-windows + path: ${{env.FAILED_TEST_ARTIFACTS}} + vs-build: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + env: + MSYSTEM: MINGW64 + NO_PERL: 1 + GIT_CONFIG_PARAMETERS: "'user.name=CI' 'user.email=ci@git'" + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - name: download git-sdk-64-minimal + shell: bash + run: | + ## Get artifact + urlbase=https://dev.azure.com/git-for-windows/git/_apis/build/builds + id=$(curl "$urlbase?definitions=22&statusFilter=completed&resultFilter=succeeded&\$top=1" | + jq -r ".value[] | .id") + download_url="$(curl "$urlbase/$id/artifacts" | + jq -r '.value[] | select(.name == "git-sdk-64-minimal").resource.downloadUrl')" + curl --connect-timeout 10 --retry 5 --retry-delay 0 --retry-max-time 240 \ + -o artifacts.zip "$download_url" + + ## Unzip and remove the artifact + unzip artifacts.zip + rm artifacts.zip + - name: download vcpkg artifacts + shell: powershell + run: | + $urlbase = "https://dev.azure.com/git/git/_apis/build/builds" + $id = ((Invoke-WebRequest -UseBasicParsing "${urlbase}?definitions=9&statusFilter=completed&resultFilter=succeeded&`$top=1").content | ConvertFrom-JSON).value[0].id + $downloadUrl = ((Invoke-WebRequest -UseBasicParsing "${urlbase}/$id/artifacts").content | ConvertFrom-JSON).value[0].resource.downloadUrl + (New-Object Net.WebClient).DownloadFile($downloadUrl, "compat.zip") + Expand-Archive compat.zip -DestinationPath . -Force + Remove-Item compat.zip + - name: add msbuild to PATH + uses: microsoft/setup-msbuild@v1 + - name: copy dlls to root + shell: powershell + run: | + & compat\vcbuild\vcpkg_copy_dlls.bat release + if (!$?) { exit(1) } + - name: generate Visual Studio solution + shell: bash + run: | + cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \ + -DIconv_LIBRARY=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/lib/libiconv.lib -DIconv_INCLUDE_DIR=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/include \ + -DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON + - name: MSBuild + run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142 + - name: bundle artifact tar + shell: powershell + env: + MSVC: 1 + VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg + run: | + & git-sdk-64-minimal\usr\bin\bash.exe -lc @" + mkdir -p artifacts && + eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\" + "@ + - name: upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: vs-artifacts + path: artifacts + vs-test: + runs-on: windows-latest + needs: [vs-build, windows-build] + strategy: + matrix: + nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + steps: + - uses: actions/checkout@v1 + - name: download git-sdk-64-minimal + uses: actions/download-artifact@v1 + with: + name: git-sdk-64-minimal + path: ${{github.workspace}}/git-sdk-64-minimal/ + - name: download build artifacts + uses: actions/download-artifact@v1 + with: + name: vs-artifacts + path: ${{github.workspace}} + - name: extract build artifacts + shell: bash + run: tar xf artifacts.tar.gz + - name: test + shell: powershell + env: + MSYSTEM: MINGW64 + NO_SVN_TESTS: 1 + GIT_TEST_SKIP_REBASE_P: 1 + run: | + & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @" + # Let Git ignore the SDK and the test-cache + printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude + + ci/run-test-slice.sh ${{matrix.nr}} 10 + "@ + - name: ci/print-test-failures.sh + if: failure() + shell: powershell + run: | + & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh + - name: Upload failed tests' directories + if: failure() && env.FAILED_TEST_ARTIFACTS != '' + uses: actions/upload-artifact@v1 + with: + name: failed-tests-windows + path: ${{env.FAILED_TEST_ARTIFACTS}} + regular: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + strategy: + matrix: + vector: + - jobname: linux-clang + cc: clang + pool: ubuntu-latest + - jobname: linux-gcc + cc: gcc + pool: ubuntu-latest + - jobname: osx-clang + cc: clang + pool: macos-latest + - jobname: osx-gcc + cc: gcc + pool: macos-latest + - jobname: GETTEXT_POISON + cc: gcc + pool: ubuntu-latest + env: + CC: ${{matrix.vector.cc}} + jobname: ${{matrix.vector.jobname}} + runs-on: ${{matrix.vector.pool}} + steps: + - uses: actions/checkout@v1 + - run: ci/install-dependencies.sh + - run: ci/run-build-and-tests.sh + - run: ci/print-test-failures.sh + if: failure() + - name: Upload failed tests' directories + if: failure() && env.FAILED_TEST_ARTIFACTS != '' + uses: actions/upload-artifact@v1 + with: + name: failed-tests-${{matrix.vector.jobname}} + path: ${{env.FAILED_TEST_ARTIFACTS}} + dockerized: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + strategy: + matrix: + vector: + - jobname: linux-musl + image: alpine + - jobname: Linux32 + image: daald/ubuntu32:xenial + env: + jobname: ${{matrix.vector.jobname}} + runs-on: ubuntu-latest + container: ${{matrix.vector.image}} + steps: + - uses: actions/checkout@v1 + - run: ci/install-docker-dependencies.sh + - run: ci/run-build-and-tests.sh + - run: ci/print-test-failures.sh + if: failure() + - name: Upload failed tests' directories + if: failure() && env.FAILED_TEST_ARTIFACTS != '' + uses: actions/upload-artifact@v1 + with: + name: failed-tests-${{matrix.vector.jobname}} + path: ${{env.FAILED_TEST_ARTIFACTS}} + static-analysis: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + env: + jobname: StaticAnalysis + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - run: ci/install-dependencies.sh + - run: ci/run-static-analysis.sh + documentation: + needs: ci-config + if: needs.ci-config.outputs.enabled == 'yes' + env: + jobname: Documentation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - run: ci/install-dependencies.sh + - run: ci/test-documentation.sh diff --git a/third_party/git/.gitignore b/third_party/git/.gitignore index 521d8f4fb421..6232d339247f 100644 --- a/third_party/git/.gitignore +++ b/third_party/git/.gitignore @@ -25,6 +25,7 @@ /git-bisect--helper /git-blame /git-branch +/git-bugreport /git-bundle /git-cat-file /git-check-attr @@ -83,13 +84,13 @@ /git-init-db /git-interpret-trailers /git-instaweb -/git-legacy-stash /git-log /git-ls-files /git-ls-remote /git-ls-tree /git-mailinfo /git-mailsplit +/git-maintenance /git-merge /git-merge-base /git-merge-index @@ -134,7 +135,6 @@ /git-remote-fd /git-remote-ext /git-remote-testpy -/git-remote-testsvn /git-repack /git-replace /git-request-pull @@ -158,6 +158,7 @@ /git-show-branch /git-show-index /git-show-ref +/git-sparse-checkout /git-stage /git-stash /git-status @@ -188,6 +189,7 @@ /gitweb/gitweb.cgi /gitweb/static/gitweb.js /gitweb/static/gitweb.min.* +/config-list.h /command-list.h *.tar.gz *.dsc @@ -195,6 +197,7 @@ /git.spec *.exe *.[aos] +*.o.json *.py[co] .depend/ *.gcda @@ -216,6 +219,8 @@ /tags /TAGS /cscope* +/compile_commands.json +*.hcc *.obj *.lib *.res @@ -231,10 +236,10 @@ *.ipdb *.dll .vs/ -*.manifest Debug/ Release/ /UpgradeLog*.htm /git.VC.VC.opendb /git.VC.db *.dSYM +/contrib/buildsystems/out diff --git a/third_party/git/.mailmap b/third_party/git/.mailmap index 9a5ff0475373..bde7aba756ea 100644 --- a/third_party/git/.mailmap +++ b/third_party/git/.mailmap @@ -18,6 +18,7 @@ Alexey Shumkin Alexey Shumkin Anders Kaseorg Anders Kaseorg +Andrey Mazo Mazo, Andrey Aneesh Kumar K.V Amos Waterland Amos Waterland @@ -30,6 +31,7 @@ Brandon Casey Brandon Williams brian m. carlson brian m. carlson +brian m. carlson Bryan Larsen Bryan Larsen Cheng Renquan @@ -58,7 +60,9 @@ David S. Miller David Turner David Turner Derrick Stolee +Derrick Stolee Derrick Stolee via GitGitGadget Deskin Miller +Äoàn Trần Công Danh Doan Tran Cong Danh Dirk Süsserott Eric Blake Eric Hanchrow @@ -107,6 +111,7 @@ Jim Meyering Joachim Berdal Haga Joachim Jablon Johannes Schindelin +Johannes Schindelin Johannes Schindelin via GitGitGadget Johannes Sixt Johannes Sixt Johannes Sixt @@ -285,6 +290,7 @@ William Pursell YONETANI Tomokazu YONETANI Tomokazu YOSHIFUJI Hideaki +Yi-Jyun Pan # the two anonymous contributors are different persons: anonymous anonymous diff --git a/third_party/git/.travis.yml b/third_party/git/.travis.yml index fc5730b085f1..05f3e3f8d791 100644 --- a/third_party/git/.travis.yml +++ b/third_party/git/.travis.yml @@ -16,7 +16,7 @@ compiler: matrix: include: - - env: jobname=GIT_TEST_GETTEXT_POISON + - env: jobname=GETTEXT_POISON os: linux compiler: addons: @@ -32,7 +32,15 @@ matrix: services: - docker before_install: - script: ci/run-linux32-docker.sh + script: ci/run-docker.sh + - env: jobname=linux-musl + os: linux + compiler: + addons: + services: + - docker + before_install: + script: ci/run-docker.sh - env: jobname=StaticAnalysis os: linux compiler: diff --git a/third_party/git/.tsan-suppressions b/third_party/git/.tsan-suppressions index 8c85014a0a93..5ba86d68459e 100644 --- a/third_party/git/.tsan-suppressions +++ b/third_party/git/.tsan-suppressions @@ -8,3 +8,9 @@ # in practice it (hopefully!) doesn't matter. race:^want_color$ race:^transfer_debug$ + +# A boolean value, which tells whether the replace_map has been initialized or +# not, is read racily with an update. As this variable is written to only once, +# and it's OK if the value change right after reading it, this shouldn't be a +# problem. +race:^lookup_replace_object$ diff --git a/third_party/git/CODE_OF_CONDUCT.md b/third_party/git/CODE_OF_CONDUCT.md new file mode 100644 index 000000000000..fc4645d5c08b --- /dev/null +++ b/third_party/git/CODE_OF_CONDUCT.md @@ -0,0 +1,93 @@ +# Git Code of Conduct + +This code of conduct outlines our expectations for participants within +the Git community, as well as steps for reporting unacceptable behavior. +We are committed to providing a welcoming and inspiring community for +all and expect our code of conduct to be honored. Anyone who violates +this code of conduct may be banned from the community. + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, sex characteristics, gender identity and +expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies +when an individual is representing the project or its community in public +spaces. Examples of representing a project or community include using an +official project e-mail address, posting via an official social media account, +or acting as an appointed representative at an online or offline event. +Representation of a project may be further defined and clarified by project +maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at git@sfconservancy.org. All +complaints will be reviewed and investigated and will result in a response +that is deemed necessary and appropriate to the circumstances. The project +team is obligated to maintain confidentiality with regard to the reporter of +an incident. Further details of specific enforcement policies may be posted +separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +The project leadership team can be contacted by email as a whole at +git@sfconservancy.org, or individually: + + - Ævar Arnfjörð Bjarmason + - Christian Couder + - Jeff King + - Junio C Hamano + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/third_party/git/Documentation/CodingGuidelines b/third_party/git/Documentation/CodingGuidelines index f45db5b72740..45465bc0c98f 100644 --- a/third_party/git/Documentation/CodingGuidelines +++ b/third_party/git/Documentation/CodingGuidelines @@ -75,7 +75,7 @@ For shell scripts specifically (not exhaustive): - If you want to find out if a command is available on the user's $PATH, you should use 'type ', instead of 'which '. - The output of 'which' is not machine parseable and its exit code + The output of 'which' is not machine parsable and its exit code is not reliable across platforms. - We use POSIX compliant parameter substitutions and avoid bashisms; @@ -91,16 +91,10 @@ For shell scripts specifically (not exhaustive): - No shell arrays. - - No strlen ${#parameter}. - - No pattern replacement ${parameter/pattern/string}. - We use Arithmetic Expansion $(( ... )). - - Inside Arithmetic Expansion, spell shell variables with $ in front - of them, as some shells do not grok $((x)) while accepting $(($x)) - just fine (e.g. dash older than 0.5.4). - - We do not use Process Substitution <(list) or >(list). - Do not write control structures on a single line with semicolon. @@ -203,7 +197,7 @@ For C programs: . since early 2012 with e1327023ea, we have been using an enum definition whose last element is followed by a comma. This, like an array initializer that ends with a trailing comma, can be used - to reduce the patch noise when adding a new identifer at the end. + to reduce the patch noise when adding a new identifier at the end. . since mid 2017 with cbc0f81d, we have been using designated initializers for struct (e.g. "struct t v = { .val = 'a' };"). @@ -238,6 +232,18 @@ For C programs: while( condition ) func (bar+1); + - Do not explicitly compare an integral value with constant 0 or '\0', + or a pointer value with constant NULL. For instance, to validate that + counted array is initialized but has no elements, write: + + if (!ptr || cnt) + BUG("empty array expected"); + + and not: + + if (ptr == NULL || cnt != 0); + BUG("empty array expected"); + - We avoid using braces unnecessarily. I.e. if (bla) { @@ -483,16 +489,11 @@ For Python scripts: - We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/). - - As a minimum, we aim to be compatible with Python 2.6 and 2.7. + - As a minimum, we aim to be compatible with Python 2.7. - Where required libraries do not restrict us to Python 2, we try to also be compatible with Python 3.1 and later. - - When you must differentiate between Unicode literals and byte string - literals, it is OK to use the 'b' prefix. Even though the Python - documentation for version 2.6 does not mention this prefix, it has - been supported since version 2.6.0. - Error Messages - Do not end error messages with a full stop. diff --git a/third_party/git/Documentation/Makefile b/third_party/git/Documentation/Makefile index 76f2ecfc1b1a..80d1908a44ca 100644 --- a/third_party/git/Documentation/Makefile +++ b/third_party/git/Documentation/Makefile @@ -17,6 +17,7 @@ MAN1_TXT += git.txt MAN1_TXT += gitk.txt MAN1_TXT += gitweb.txt +# man5 / man7 guides (note: new guides should also be added to command-list.txt) MAN5_TXT += gitattributes.txt MAN5_TXT += githooks.txt MAN5_TXT += gitignore.txt @@ -30,6 +31,7 @@ MAN7_TXT += gitcredentials.txt MAN7_TXT += gitcvs-migration.txt MAN7_TXT += gitdiffcore.txt MAN7_TXT += giteveryday.txt +MAN7_TXT += gitfaq.txt MAN7_TXT += gitglossary.txt MAN7_TXT += gitnamespaces.txt MAN7_TXT += gitremote-helpers.txt @@ -77,6 +79,7 @@ API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technica SP_ARTICLES += $(API_DOCS) TECH_DOCS += MyFirstContribution +TECH_DOCS += MyFirstObjectWalk TECH_DOCS += SubmittingPatches TECH_DOCS += technical/hash-function-transition TECH_DOCS += technical/http-protocol @@ -91,6 +94,7 @@ TECH_DOCS += technical/protocol-capabilities TECH_DOCS += technical/protocol-common TECH_DOCS += technical/protocol-v2 TECH_DOCS += technical/racy-git +TECH_DOCS += technical/reftable TECH_DOCS += technical/send-pack-pipeline TECH_DOCS += technical/shallow TECH_DOCS += technical/signature-format @@ -123,7 +127,8 @@ ASCIIDOC_HTML = xhtml11 ASCIIDOC_DOCBOOK = docbook ASCIIDOC_CONF = -f asciidoc.conf ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \ - -agit_version=$(GIT_VERSION) + -amanversion=$(GIT_VERSION) \ + -amanmanual='Git Manual' -amansource='Git' TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML) TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK) MANPAGE_XSL = manpage-normal.xsl @@ -147,32 +152,9 @@ endif -include ../config.mak.autogen -include ../config.mak -# -# For docbook-xsl ... -# -1.68.1, no extra settings are needed? -# 1.69.0, set ASCIIDOC_ROFF? -# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP? -# 1.71.1, set ASCIIDOC_ROFF? -# 1.72.0, set DOCBOOK_XSL_172. -# 1.73.0-, no extra settings are needed -# - -ifdef DOCBOOK_XSL_172 -ASCIIDOC_EXTRA += -a git-asciidoc-no-roff -MANPAGE_XSL = manpage-1.72.xsl -else - ifndef ASCIIDOC_ROFF - # docbook-xsl after 1.72 needs the regular XSL, but will not - # pass-thru raw roff codes from asciidoc.conf, so turn them off. - ASCIIDOC_EXTRA += -a git-asciidoc-no-roff - endif -endif ifndef NO_MAN_BOLD_LITERAL XMLTO_EXTRA += -m manpage-bold-literal.xsl endif -ifdef DOCBOOK_SUPPRESS_SP -XMLTO_EXTRA += -m manpage-suppress-sp.xsl -endif # Newer DocBook stylesheet emits warning cruft in the output when # this is not set, and if set it shows an absolute link. Older @@ -197,11 +179,13 @@ ifdef USE_ASCIIDOCTOR ASCIIDOC = asciidoctor ASCIIDOC_CONF = ASCIIDOC_HTML = xhtml5 -ASCIIDOC_DOCBOOK = docbook45 +ASCIIDOC_DOCBOOK = docbook5 ASCIIDOC_EXTRA += -acompat-mode -atabsize=8 ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;' DBLATEX_COMMON = +XMLTO_EXTRA += --skip-validation +XMLTO_EXTRA += -x manpage.xsl endif SHELL_PATH ?= $(SHELL) @@ -311,6 +295,7 @@ cmds_txt = cmds-ancillaryinterrogators.txt \ cmds-plumbingmanipulators.txt \ cmds-synchingrepositories.txt \ cmds-synchelpers.txt \ + cmds-guide.txt \ cmds-purehelpers.txt \ cmds-foreignscminterface.txt @@ -318,7 +303,7 @@ $(cmds_txt): cmd-list.made cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT) $(QUIET_GEN)$(RM) $@ && \ - $(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \ + $(PERL_PATH) ./cmd-list.perl ../command-list.txt $(cmds_txt) $(QUIET_STDERR) && \ date >$@ mergetools_txt = mergetools-diff.txt mergetools-merge.txt diff --git a/third_party/git/Documentation/MyFirstContribution.txt b/third_party/git/Documentation/MyFirstContribution.txt index f8670379c0cf..4f85a089ef9d 100644 --- a/third_party/git/Documentation/MyFirstContribution.txt +++ b/third_party/git/Documentation/MyFirstContribution.txt @@ -23,6 +23,42 @@ useful additional context: - `Documentation/SubmittingPatches` - `Documentation/howto/new-command.txt` +[[getting-help]] +=== Getting Help + +If you get stuck, you can seek help in the following places. + +==== git@vger.kernel.org + +This is the main Git project mailing list where code reviews, version +announcements, design discussions, and more take place. Those interested in +contributing are welcome to post questions here. The Git list requires +plain-text-only emails and prefers inline and bottom-posting when replying to +mail; you will be CC'd in all replies to you. Optionally, you can subscribe to +the list by sending an email to majordomo@vger.kernel.org with "subscribe git" +in the body. The https://lore.kernel.org/git[archive] of this mailing list is +available to view in a browser. + +==== https://groups.google.com/forum/#!forum/git-mentoring[git-mentoring@googlegroups.com] + +This mailing list is targeted to new contributors and was created as a place to +post questions and receive answers outside of the public eye of the main list. +Veteran contributors who are especially interested in helping mentor newcomers +are present on the list. In order to avoid search indexers, group membership is +required to view messages; anyone can join and no approval is required. + +==== https://webchat.freenode.net/#git-devel[#git-devel] on Freenode + +This IRC channel is for conversations between Git contributors. If someone is +currently online and knows the answer to your question, you can receive help +in real time. Otherwise, you can read the +https://colabti.org/irclogger/irclogger_logs/git-devel[scrollback] to see +whether someone answered you. IRC does not allow offline private messaging, so +if you try to private message someone and then log out of IRC, they cannot +respond to you. It's better to ask your questions in the channel so that you +can be answered if you disconnect and so that others can learn from the +conversation. + [[getting-started]] == Getting Started @@ -38,6 +74,26 @@ $ git clone https://github.com/git/git git $ cd git ---- +[[dependencies]] +=== Installing Dependencies + +To build Git from source, you need to have a handful of dependencies installed +on your system. For a hint of what's needed, you can take a look at +`INSTALL`, paying close attention to the section about Git's dependencies on +external programs and libraries. That document mentions a way to "test-drive" +our freshly built Git without installing; that's the method we'll be using in +this tutorial. + +Make sure that your environment has everything you need by building your brand +new clone of Git from the above step: + +---- +$ make +---- + +NOTE: The Git build is parallelizable. `-j#` is not included above but you can +use it as you prefer, here and elsewhere. + [[identify-problem]] === Identify Problem to Solve @@ -97,8 +153,8 @@ int cmd_psuh(int argc, const char **argv, const char *prefix) ---- We'll also need to add the declaration of psuh; open up `builtin.h`, find the -declaration for `cmd_push`, and add a new line for `psuh` immediately before it, -in order to keep the declarations sorted: +declaration for `cmd_pull`, and add a new line for `psuh` immediately before it, +in order to keep the declarations alphabetically sorted: ---- int cmd_psuh(int argc, const char **argv, const char *prefix); @@ -123,7 +179,7 @@ int cmd_psuh(int argc, const char **argv, const char *prefix) } ---- -Let's try to build it. Open `Makefile`, find where `builtin/push.o` is added +Let's try to build it. Open `Makefile`, find where `builtin/pull.o` is added to `BUILTIN_OBJS`, and add `builtin/psuh.o` in the same way next to it in alphabetical order. Once you've done so, move to the top-level directory and build simply with `make`. Also add the `DEVELOPER=1` variable to turn on @@ -138,9 +194,6 @@ NOTE: When you are developing the Git project, it's preferred that you use the `DEVELOPER` flag; if there's some reason it doesn't work for you, you can turn it off, but it's a good idea to mention the problem to the mailing list. -NOTE: The Git build is parallelizable. `-j#` is not included above but you can -use it as you prefer, here and elsewhere. - Great, now your new command builds happily on its own. But nobody invokes it. Let's change that. @@ -149,7 +202,7 @@ a `cmd_struct` to the `commands[]` array. `struct cmd_struct` takes a string with the command name, a function pointer to the command implementation, and a setup option flag. For now, let's keep mimicking `push`. Find the line where `cmd_push` is registered, copy it, and modify it for `cmd_psuh`, placing the new -line in alphabetical order. +line in alphabetical order (immediately before `cmd_pull`). The options are documented in `builtin.h` under "Adding a new built-in." Since we hope to print some data about the user's current workspace context later, @@ -167,7 +220,7 @@ Check it out! You've got a command! Nice work! Let's commit this. `git status` reveals modified `Makefile`, `builtin.h`, and `git.c` as well as untracked `builtin/psuh.c` and `git-psuh`. First, let's take care of the binary, -which should be ignored. Open `.gitignore` in your editor, find `/git-push`, and +which should be ignored. Open `.gitignore` in your editor, find `/git-pull`, and add an entry for your new command in alphabetical order: ---- @@ -266,14 +319,14 @@ function body: ... git_config(git_default_config, NULL); - if (git_config_get_string_const("user.name", &cfg_name) > 0) + if (git_config_get_string_tmp("user.name", &cfg_name) > 0) printf(_("No name is found in config\n")); else printf(_("Your name: %s\n"), cfg_name); ---- `git_config()` will grab the configuration from config files known to Git and -apply standard precedence rules. `git_config_get_string_const()` will look up +apply standard precedence rules. `git_config_get_string_tmp()` will look up a specific key ("user.name") and give you the value. There are a number of single-key lookup functions like this one; you can see them all (and more info about how to use `git_config()`) in `Documentation/technical/api-config.txt`. @@ -534,6 +587,28 @@ you want to pass as a parameter something which would usually be interpreted as a flag.) `parse_options()` will terminate parsing when it reaches `--` and give you the rest of the options afterwards, untouched. +Now that you have a usage hint, you can teach Git how to show it in the general +command list shown by `git help git` or `git help -a`, which is generated from +`command-list.txt`. Find the line for 'git-pull' so you can add your 'git-psuh' +line above it in alphabetical order. Now, we can add some attributes about the +command which impacts where it shows up in the aforementioned help commands. The +top of `command-list.txt` shares some information about what each attribute +means; in those help pages, the commands are sorted according to these +attributes. `git psuh` is user-facing, or porcelain - so we will mark it as +"mainporcelain". For "mainporcelain" commands, the comments at the top of +`command-list.txt` indicate we can also optionally add an attribute from another +list; since `git psuh` shows some information about the user's workspace but +doesn't modify anything, let's mark it as "info". Make sure to keep your +attributes in the same style as the rest of `command-list.txt` using spaces to +align and delineate them: + +---- +git-prune-packed plumbingmanipulators +git-psuh mainporcelain info +git-pull mainporcelain remote +git-push mainporcelain remote +---- + Build again. Now, when you run with `-h`, you should see your usage printed and your command terminated before anything else interesting happens. Great! @@ -746,6 +821,14 @@ will automatically run your PRs through the CI even without the permission given but you will not be able to `/submit` your changes until someone allows you to use the tool. +NOTE: You can typically find someone who can `/allow` you on GitGitGadget by +either examining recent pull requests where someone has been granted `/allow` +(https://github.com/gitgitgadget/git/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+%22%2Fallow%22[Search: +is:pr is:open "/allow"]), in which case both the author and the person who +granted the `/allow` can now `/allow` you, or by inquiring on the +https://webchat.freenode.net/#git-devel[#git-devel] IRC channel on Freenode +linking your pull request and asking for someone to `/allow` you. + If the CI fails, you can update your changes with `git rebase -i` and push your branch again: @@ -970,7 +1053,7 @@ reviewers the changes you've made that may not be as visible. You will also need to go and find the Message-Id of your previous cover letter. You can either note it when you send the first series, from the output of `git send-email`, or you can look it up on the -https://public-inbox.org/git[mailing list]. Find your cover letter in the +https://lore.kernel.org/git[mailing list]. Find your cover letter in the archives, click on it, then click "permalink" or "raw" to reveal the Message-Id header. It should match: @@ -1096,8 +1179,8 @@ look at the section below this one for some context.) [[after-approval]] === After Review Approval -The Git project has four integration branches: `pu`, `next`, `master`, and -`maint`. Your change will be placed into `pu` fairly early on by the maintainer +The Git project has four integration branches: `seen`, `next`, `master`, and +`maint`. Your change will be placed into `seen` fairly early on by the maintainer while it is still in the review process; from there, when it is ready for wider testing, it will be merged into `next`. Plenty of early testers use `next` and may report issues. Eventually, changes in `next` will make it to `master`, diff --git a/third_party/git/Documentation/MyFirstObjectWalk.txt b/third_party/git/Documentation/MyFirstObjectWalk.txt new file mode 100644 index 000000000000..c3f2d1a831e3 --- /dev/null +++ b/third_party/git/Documentation/MyFirstObjectWalk.txt @@ -0,0 +1,902 @@ += My First Object Walk + +== What's an Object Walk? + +The object walk is a key concept in Git - this is the process that underpins +operations like object transfer and fsck. Beginning from a given commit, the +list of objects is found by walking parent relationships between commits (commit +X based on commit W) and containment relationships between objects (tree Y is +contained within commit X, and blob Z is located within tree Y, giving our +working tree for commit X something like `y/z.txt`). + +A related concept is the revision walk, which is focused on commit objects and +their parent relationships and does not delve into other object types. The +revision walk is used for operations like `git log`. + +=== Related Reading + +- `Documentation/user-manual.txt` under "Hacking Git" contains some coverage of + the revision walker in its various incarnations. +- `revision.h` +- https://eagain.net/articles/git-for-computer-scientists/[Git for Computer Scientists] + gives a good overview of the types of objects in Git and what your object + walk is really describing. + +== Setting Up + +Create a new branch from `master`. + +---- +git checkout -b revwalk origin/master +---- + +We'll put our fiddling into a new command. For fun, let's name it `git walken`. +Open up a new file `builtin/walken.c` and set up the command handler: + +---- +/* + * "git walken" + * + * Part of the "My First Object Walk" tutorial. + */ + +#include "builtin.h" + +int cmd_walken(int argc, const char **argv, const char *prefix) +{ + trace_printf(_("cmd_walken incoming...\n")); + return 0; +} +---- + +NOTE: `trace_printf()` differs from `printf()` in that it can be turned on or +off at runtime. For the purposes of this tutorial, we will write `walken` as +though it is intended for use as a "plumbing" command: that is, a command which +is used primarily in scripts, rather than interactively by humans (a "porcelain" +command). So we will send our debug output to `trace_printf()` instead. When +running, enable trace output by setting the environment variable `GIT_TRACE`. + +Add usage text and `-h` handling, like all subcommands should consistently do +(our test suite will notice and complain if you fail to do so). + +---- +int cmd_walken(int argc, const char **argv, const char *prefix) +{ + const char * const walken_usage[] = { + N_("git walken"), + NULL, + } + struct option options[] = { + OPT_END() + }; + + argc = parse_options(argc, argv, prefix, options, walken_usage, 0); + + ... +} +---- + +Also add the relevant line in `builtin.h` near `cmd_whatchanged()`: + +---- +int cmd_walken(int argc, const char **argv, const char *prefix); +---- + +Include the command in `git.c` in `commands[]` near the entry for `whatchanged`, +maintaining alphabetical ordering: + +---- +{ "walken", cmd_walken, RUN_SETUP }, +---- + +Add it to the `Makefile` near the line for `builtin/worktree.o`: + +---- +BUILTIN_OBJS += builtin/walken.o +---- + +Build and test out your command, without forgetting to ensure the `DEVELOPER` +flag is set, and with `GIT_TRACE` enabled so the debug output can be seen: + +---- +$ echo DEVELOPER=1 >>config.mak +$ make +$ GIT_TRACE=1 ./bin-wrappers/git walken +---- + +NOTE: For a more exhaustive overview of the new command process, take a look at +`Documentation/MyFirstContribution.txt`. + +NOTE: A reference implementation can be found at +https://github.com/nasamuffin/git/tree/revwalk. + +=== `struct rev_cmdline_info` + +The definition of `struct rev_cmdline_info` can be found in `revision.h`. + +This struct is contained within the `rev_info` struct and is used to reflect +parameters provided by the user over the CLI. + +`nr` represents the number of `rev_cmdline_entry` present in the array. + +`alloc` is used by the `ALLOC_GROW` macro. Check `cache.h` - this variable is +used to track the allocated size of the list. + +Per entry, we find: + +`item` is the object provided upon which to base the object walk. Items in Git +can be blobs, trees, commits, or tags. (See `Documentation/gittutorial-2.txt`.) + +`name` is the object ID (OID) of the object - a hex string you may be familiar +with from using Git to organize your source in the past. Check the tutorial +mentioned above towards the top for a discussion of where the OID can come +from. + +`whence` indicates some information about what to do with the parents of the +specified object. We'll explore this flag more later on; take a look at +`Documentation/revisions.txt` to get an idea of what could set the `whence` +value. + +`flags` are used to hint the beginning of the revision walk and are the first +block under the `#include`s in `revision.h`. The most likely ones to be set in +the `rev_cmdline_info` are `UNINTERESTING` and `BOTTOM`, but these same flags +can be used during the walk, as well. + +=== `struct rev_info` + +This one is quite a bit longer, and many fields are only used during the walk +by `revision.c` - not configuration options. Most of the configurable flags in +`struct rev_info` have a mirror in `Documentation/rev-list-options.txt`. It's a +good idea to take some time and read through that document. + +== Basic Commit Walk + +First, let's see if we can replicate the output of `git log --oneline`. We'll +refer back to the implementation frequently to discover norms when performing +an object walk of our own. + +To do so, we'll first find all the commits, in order, which preceded the current +commit. We'll extract the name and subject of the commit from each. + +Ideally, we will also be able to find out which ones are currently at the tip of +various branches. + +=== Setting Up + +Preparing for your object walk has some distinct stages. + +1. Perform default setup for this mode, and others which may be invoked. +2. Check configuration files for relevant settings. +3. Set up the `rev_info` struct. +4. Tweak the initialized `rev_info` to suit the current walk. +5. Prepare the `rev_info` for the walk. +6. Iterate over the objects, processing each one. + +==== Default Setups + +Before examining configuration files which may modify command behavior, set up +default state for switches or options your command may have. If your command +utilizes other Git components, ask them to set up their default states as well. +For instance, `git log` takes advantage of `grep` and `diff` functionality, so +its `init_log_defaults()` sets its own state (`decoration_style`) and asks +`grep` and `diff` to initialize themselves by calling each of their +initialization functions. + +For our first example within `git walken`, we don't intend to use any other +components within Git, and we don't have any configuration to do. However, we +may want to add some later, so for now, we can add an empty placeholder. Create +a new function in `builtin/walken.c`: + +---- +static void init_walken_defaults(void) +{ + /* + * We don't actually need the same components `git log` does; leave this + * empty for now. + */ +} +---- + +Make sure to add a line invoking it inside of `cmd_walken()`. + +---- +int cmd_walken(int argc, const char **argv, const char *prefix) +{ + init_walken_defaults(); +} +---- + +==== Configuring From `.gitconfig` + +Next, we should have a look at any relevant configuration settings (i.e., +settings readable and settable from `git config`). This is done by providing a +callback to `git_config()`; within that callback, you can also invoke methods +from other components you may need that need to intercept these options. Your +callback will be invoked once per each configuration value which Git knows about +(global, local, worktree, etc.). + +Similarly to the default values, we don't have anything to do here yet +ourselves; however, we should call `git_default_config()` if we aren't calling +any other existing config callbacks. + +Add a new function to `builtin/walken.c`: + +---- +static int git_walken_config(const char *var, const char *value, void *cb) +{ + /* + * For now, we don't have any custom configuration, so fall back to + * the default config. + */ + return git_default_config(var, value, cb); +} +---- + +Make sure to invoke `git_config()` with it in your `cmd_walken()`: + +---- +int cmd_walken(int argc, const char **argv, const char *prefix) +{ + ... + + git_config(git_walken_config, NULL); + + ... +} +---- + +==== Setting Up `rev_info` + +Now that we've gathered external configuration and options, it's time to +initialize the `rev_info` object which we will use to perform the walk. This is +typically done by calling `repo_init_revisions()` with the repository you intend +to target, as well as the `prefix` argument of `cmd_walken` and your `rev_info` +struct. + +Add the `struct rev_info` and the `repo_init_revisions()` call: +---- +int cmd_walken(int argc, const char **argv, const char *prefix) +{ + /* This can go wherever you like in your declarations.*/ + struct rev_info rev; + ... + + /* This should go after the git_config() call. */ + repo_init_revisions(the_repository, &rev, prefix); + + ... +} +---- + +==== Tweaking `rev_info` For the Walk + +We're getting close, but we're still not quite ready to go. Now that `rev` is +initialized, we can modify it to fit our needs. This is usually done within a +helper for clarity, so let's add one: + +---- +static void final_rev_info_setup(struct rev_info *rev) +{ + /* + * We want to mimic the appearance of `git log --oneline`, so let's + * force oneline format. + */ + get_commit_format("oneline", rev); + + /* Start our object walk at HEAD. */ + add_head_to_pending(rev); +} +---- + +[NOTE] +==== +Instead of using the shorthand `add_head_to_pending()`, you could do +something like this: +---- + struct setup_revision_opt opt; + + memset(&opt, 0, sizeof(opt)); + opt.def = "HEAD"; + opt.revarg_opt = REVARG_COMMITTISH; + setup_revisions(argc, argv, rev, &opt); +---- +Using a `setup_revision_opt` gives you finer control over your walk's starting +point. +==== + +Then let's invoke `final_rev_info_setup()` after the call to +`repo_init_revisions()`: + +---- +int cmd_walken(int argc, const char **argv, const char *prefix) +{ + ... + + final_rev_info_setup(&rev); + + ... +} +---- + +Later, we may wish to add more arguments to `final_rev_info_setup()`. But for +now, this is all we need. + +==== Preparing `rev_info` For the Walk + +Now that `rev` is all initialized and configured, we've got one more setup step +before we get rolling. We can do this in a helper, which will both prepare the +`rev_info` for the walk, and perform the walk itself. Let's start the helper +with the call to `prepare_revision_walk()`, which can return an error without +dying on its own: + +---- +static void walken_commit_walk(struct rev_info *rev) +{ + if (prepare_revision_walk(rev)) + die(_("revision walk setup failed")); +} +---- + +NOTE: `die()` prints to `stderr` and exits the program. Since it will print to +`stderr` it's likely to be seen by a human, so we will localize it. + +==== Performing the Walk! + +Finally! We are ready to begin the walk itself. Now we can see that `rev_info` +can also be used as an iterator; we move to the next item in the walk by using +`get_revision()` repeatedly. Add the listed variable declarations at the top and +the walk loop below the `prepare_revision_walk()` call within your +`walken_commit_walk()`: + +---- +static void walken_commit_walk(struct rev_info *rev) +{ + struct commit *commit; + struct strbuf prettybuf = STRBUF_INIT; + + ... + + while ((commit = get_revision(rev))) { + strbuf_reset(&prettybuf); + pp_commit_easy(CMIT_FMT_ONELINE, commit, &prettybuf); + puts(prettybuf.buf); + } + strbuf_release(&prettybuf); +} +---- + +NOTE: `puts()` prints a `char*` to `stdout`. Since this is the part of the +command we expect to be machine-parsed, we're sending it directly to stdout. + +Give it a shot. + +---- +$ make +$ ./bin-wrappers/git walken +---- + +You should see all of the subject lines of all the commits in +your tree's history, in order, ending with the initial commit, "Initial revision +of "git", the information manager from hell". Congratulations! You've written +your first revision walk. You can play with printing some additional fields +from each commit if you're curious; have a look at the functions available in +`commit.h`. + +=== Adding a Filter + +Next, let's try to filter the commits we see based on their author. This is +equivalent to running `git log --author=`. We can add a filter by +modifying `rev_info.grep_filter`, which is a `struct grep_opt`. + +First some setup. Add `init_grep_defaults()` to `init_walken_defaults()` and add +`grep_config()` to `git_walken_config()`: + +---- +static void init_walken_defaults(void) +{ + init_grep_defaults(the_repository); +} + +... + +static int git_walken_config(const char *var, const char *value, void *cb) +{ + grep_config(var, value, cb); + return git_default_config(var, value, cb); +} +---- + +Next, we can modify the `grep_filter`. This is done with convenience functions +found in `grep.h`. For fun, we're filtering to only commits from folks using a +`gmail.com` email address - a not-very-precise guess at who may be working on +Git as a hobby. Since we're checking the author, which is a specific line in the +header, we'll use the `append_header_grep_pattern()` helper. We can use +the `enum grep_header_field` to indicate which part of the commit header we want +to search. + +In `final_rev_info_setup()`, add your filter line: + +---- +static void final_rev_info_setup(int argc, const char **argv, + const char *prefix, struct rev_info *rev) +{ + ... + + append_header_grep_pattern(&rev->grep_filter, GREP_HEADER_AUTHOR, + "gmail"); + compile_grep_patterns(&rev->grep_filter); + + ... +} +---- + +`append_header_grep_pattern()` adds your new "gmail" pattern to `rev_info`, but +it won't work unless we compile it with `compile_grep_patterns()`. + +NOTE: If you are using `setup_revisions()` (for example, if you are passing a +`setup_revision_opt` instead of using `add_head_to_pending()`), you don't need +to call `compile_grep_patterns()` because `setup_revisions()` calls it for you. + +NOTE: We could add the same filter via the `append_grep_pattern()` helper if we +wanted to, but `append_header_grep_pattern()` adds the `enum grep_context` and +`enum grep_pat_token` for us. + +=== Changing the Order + +There are a few ways that we can change the order of the commits during a +revision walk. Firstly, we can use the `enum rev_sort_order` to choose from some +typical orderings. + +`topo_order` is the same as `git log --topo-order`: we avoid showing a parent +before all of its children have been shown, and we avoid mixing commits which +are in different lines of history. (`git help log`'s section on `--topo-order` +has a very nice diagram to illustrate this.) + +Let's see what happens when we run with `REV_SORT_BY_COMMIT_DATE` as opposed to +`REV_SORT_BY_AUTHOR_DATE`. Add the following: + +---- +static void final_rev_info_setup(int argc, const char **argv, + const char *prefix, struct rev_info *rev) +{ + ... + + rev->topo_order = 1; + rev->sort_order = REV_SORT_BY_COMMIT_DATE; + + ... +} +---- + +Let's output this into a file so we can easily diff it with the walk sorted by +author date. + +---- +$ make +$ ./bin-wrappers/git walken > commit-date.txt +---- + +Then, let's sort by author date and run it again. + +---- +static void final_rev_info_setup(int argc, const char **argv, + const char *prefix, struct rev_info *rev) +{ + ... + + rev->topo_order = 1; + rev->sort_order = REV_SORT_BY_AUTHOR_DATE; + + ... +} +---- + +---- +$ make +$ ./bin-wrappers/git walken > author-date.txt +---- + +Finally, compare the two. This is a little less helpful without object names or +dates, but hopefully we get the idea. + +---- +$ diff -u commit-date.txt author-date.txt +---- + +This display indicates that commits can be reordered after they're written, for +example with `git rebase`. + +Let's try one more reordering of commits. `rev_info` exposes a `reverse` flag. +Set that flag somewhere inside of `final_rev_info_setup()`: + +---- +static void final_rev_info_setup(int argc, const char **argv, const char *prefix, + struct rev_info *rev) +{ + ... + + rev->reverse = 1; + + ... +} +---- + +Run your walk again and note the difference in order. (If you remove the grep +pattern, you should see the last commit this call gives you as your current +HEAD.) + +== Basic Object Walk + +So far we've been walking only commits. But Git has more types of objects than +that! Let's see if we can walk _all_ objects, and find out some information +about each one. + +We can base our work on an example. `git pack-objects` prepares all kinds of +objects for packing into a bitmap or packfile. The work we are interested in +resides in `builtins/pack-objects.c:get_object_list()`; examination of that +function shows that the all-object walk is being performed by +`traverse_commit_list()` or `traverse_commit_list_filtered()`. Those two +functions reside in `list-objects.c`; examining the source shows that, despite +the name, these functions traverse all kinds of objects. Let's have a look at +the arguments to `traverse_commit_list_filtered()`, which are a superset of the +arguments to the unfiltered version. + +- `struct list_objects_filter_options *filter_options`: This is a struct which + stores a filter-spec as outlined in `Documentation/rev-list-options.txt`. +- `struct rev_info *revs`: This is the `rev_info` used for the walk. +- `show_commit_fn show_commit`: A callback which will be used to handle each + individual commit object. +- `show_object_fn show_object`: A callback which will be used to handle each + non-commit object (so each blob, tree, or tag). +- `void *show_data`: A context buffer which is passed in turn to `show_commit` + and `show_object`. +- `struct oidset *omitted`: A linked-list of object IDs which the provided + filter caused to be omitted. + +It looks like this `traverse_commit_list_filtered()` uses callbacks we provide +instead of needing us to call it repeatedly ourselves. Cool! Let's add the +callbacks first. + +For the sake of this tutorial, we'll simply keep track of how many of each kind +of object we find. At file scope in `builtin/walken.c` add the following +tracking variables: + +---- +static int commit_count; +static int tag_count; +static int blob_count; +static int tree_count; +---- + +Commits are handled by a different callback than other objects; let's do that +one first: + +---- +static void walken_show_commit(struct commit *cmt, void *buf) +{ + commit_count++; +} +---- + +The `cmt` argument is fairly self-explanatory. But it's worth mentioning that +the `buf` argument is actually the context buffer that we can provide to the +traversal calls - `show_data`, which we mentioned a moment ago. + +Since we have the `struct commit` object, we can look at all the same parts that +we looked at in our earlier commit-only walk. For the sake of this tutorial, +though, we'll just increment the commit counter and move on. + +The callback for non-commits is a little different, as we'll need to check +which kind of object we're dealing with: + +---- +static void walken_show_object(struct object *obj, const char *str, void *buf) +{ + switch (obj->type) { + case OBJ_TREE: + tree_count++; + break; + case OBJ_BLOB: + blob_count++; + break; + case OBJ_TAG: + tag_count++; + break; + case OBJ_COMMIT: + BUG("unexpected commit object in walken_show_object\n"); + default: + BUG("unexpected object type %s in walken_show_object\n", + type_name(obj->type)); + } +} +---- + +Again, `obj` is fairly self-explanatory, and we can guess that `buf` is the same +context pointer that `walken_show_commit()` receives: the `show_data` argument +to `traverse_commit_list()` and `traverse_commit_list_filtered()`. Finally, +`str` contains the name of the object, which ends up being something like +`foo.txt` (blob), `bar/baz` (tree), or `v1.2.3` (tag). + +To help assure us that we aren't double-counting commits, we'll include some +complaining if a commit object is routed through our non-commit callback; we'll +also complain if we see an invalid object type. Since those two cases should be +unreachable, and would only change in the event of a semantic change to the Git +codebase, we complain by using `BUG()` - which is a signal to a developer that +the change they made caused unintended consequences, and the rest of the +codebase needs to be updated to understand that change. `BUG()` is not intended +to be seen by the public, so it is not localized. + +Our main object walk implementation is substantially different from our commit +walk implementation, so let's make a new function to perform the object walk. We +can perform setup which is applicable to all objects here, too, to keep separate +from setup which is applicable to commit-only walks. + +We'll start by enabling all types of objects in the `struct rev_info`. We'll +also turn on `tree_blobs_in_commit_order`, which means that we will walk a +commit's tree and everything it points to immediately after we find each commit, +as opposed to waiting for the end and walking through all trees after the commit +history has been discovered. With the appropriate settings configured, we are +ready to call `prepare_revision_walk()`. + +---- +static void walken_object_walk(struct rev_info *rev) +{ + rev->tree_objects = 1; + rev->blob_objects = 1; + rev->tag_objects = 1; + rev->tree_blobs_in_commit_order = 1; + + if (prepare_revision_walk(rev)) + die(_("revision walk setup failed")); + + commit_count = 0; + tag_count = 0; + blob_count = 0; + tree_count = 0; +---- + +Let's start by calling just the unfiltered walk and reporting our counts. +Complete your implementation of `walken_object_walk()`: + +---- + traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL); + + printf("commits %d\nblobs %d\ntags %d\ntrees %d\n", commit_count, + blob_count, tag_count, tree_count); +} +---- + +NOTE: This output is intended to be machine-parsed. Therefore, we are not +sending it to `trace_printf()`, and we are not localizing it - we need scripts +to be able to count on the formatting to be exactly the way it is shown here. +If we were intending this output to be read by humans, we would need to localize +it with `_()`. + +Finally, we'll ask `cmd_walken()` to use the object walk instead. Discussing +command line options is out of scope for this tutorial, so we'll just hardcode +a branch we can change at compile time. Where you call `final_rev_info_setup()` +and `walken_commit_walk()`, instead branch like so: + +---- + if (1) { + add_head_to_pending(&rev); + walken_object_walk(&rev); + } else { + final_rev_info_setup(argc, argv, prefix, &rev); + walken_commit_walk(&rev); + } +---- + +NOTE: For simplicity, we've avoided all the filters and sorts we applied in +`final_rev_info_setup()` and simply added `HEAD` to our pending queue. If you +want, you can certainly use the filters we added before by moving +`final_rev_info_setup()` out of the conditional and removing the call to +`add_head_to_pending()`. + +Now we can try to run our command! It should take noticeably longer than the +commit walk, but an examination of the output will give you an idea why. Your +output should look similar to this example, but with different counts: + +---- +Object walk completed. Found 55733 commits, 100274 blobs, 0 tags, and 104210 trees. +---- + +This makes sense. We have more trees than commits because the Git project has +lots of subdirectories which can change, plus at least one tree per commit. We +have no tags because we started on a commit (`HEAD`) and while tags can point to +commits, commits can't point to tags. + +NOTE: You will have different counts when you run this yourself! The number of +objects grows along with the Git project. + +=== Adding a Filter + +There are a handful of filters that we can apply to the object walk laid out in +`Documentation/rev-list-options.txt`. These filters are typically useful for +operations such as creating packfiles or performing a partial clone. They are +defined in `list-objects-filter-options.h`. For the purposes of this tutorial we +will use the "tree:1" filter, which causes the walk to omit all trees and blobs +which are not directly referenced by commits reachable from the commit in +`pending` when the walk begins. (`pending` is the list of objects which need to +be traversed during a walk; you can imagine a breadth-first tree traversal to +help understand. In our case, that means we omit trees and blobs not directly +referenced by `HEAD` or `HEAD`'s history, because we begin the walk with only +`HEAD` in the `pending` list.) + +First, we'll need to `#include "list-objects-filter-options.h`" and set up the +`struct list_objects_filter_options` at the top of the function. + +---- +static void walken_object_walk(struct rev_info *rev) +{ + struct list_objects_filter_options filter_options = {}; + + ... +---- + +For now, we are not going to track the omitted objects, so we'll replace those +parameters with `NULL`. For the sake of simplicity, we'll add a simple +build-time branch to use our filter or not. Replace the line calling +`traverse_commit_list()` with the following, which will remind us which kind of +walk we've just performed: + +---- + if (0) { + /* Unfiltered: */ + trace_printf(_("Unfiltered object walk.\n")); + traverse_commit_list(rev, walken_show_commit, + walken_show_object, NULL); + } else { + trace_printf( + _("Filtered object walk with filterspec 'tree:1'.\n")); + parse_list_objects_filter(&filter_options, "tree:1"); + + traverse_commit_list_filtered(&filter_options, rev, + walken_show_commit, walken_show_object, NULL, NULL); + } +---- + +`struct list_objects_filter_options` is usually built directly from a command +line argument, so the module provides an easy way to build one from a string. +Even though we aren't taking user input right now, we can still build one with +a hardcoded string using `parse_list_objects_filter()`. + +With the filter spec "tree:1", we are expecting to see _only_ the root tree for +each commit; therefore, the tree object count should be less than or equal to +the number of commits. (For an example of why that's true: `git commit --revert` +points to the same tree object as its grandparent.) + +=== Counting Omitted Objects + +We also have the capability to enumerate all objects which were omitted by a +filter, like with `git log --filter= --filter-print-omitted`. Asking +`traverse_commit_list_filtered()` to populate the `omitted` list means that our +object walk does not perform any better than an unfiltered object walk; all +reachable objects are walked in order to populate the list. + +First, add the `struct oidset` and related items we will use to iterate it: + +---- +static void walken_object_walk( + ... + + struct oidset omitted; + struct oidset_iter oit; + struct object_id *oid = NULL; + int omitted_count = 0; + oidset_init(&omitted, 0); + + ... +---- + +Modify the call to `traverse_commit_list_filtered()` to include your `omitted` +object: + +---- + ... + + traverse_commit_list_filtered(&filter_options, rev, + walken_show_commit, walken_show_object, NULL, &omitted); + + ... +---- + +Then, after your traversal, the `oidset` traversal is pretty straightforward. +Count all the objects within and modify the print statement: + +---- + /* Count the omitted objects. */ + oidset_iter_init(&omitted, &oit); + + while ((oid = oidset_iter_next(&oit))) + omitted_count++; + + printf("commits %d\nblobs %d\ntags %d\ntrees%d\nomitted %d\n", + commit_count, blob_count, tag_count, tree_count, omitted_count); +---- + +By running your walk with and without the filter, you should find that the total +object count in each case is identical. You can also time each invocation of +the `walken` subcommand, with and without `omitted` being passed in, to confirm +to yourself the runtime impact of tracking all omitted objects. + +=== Changing the Order + +Finally, let's demonstrate that you can also reorder walks of all objects, not +just walks of commits. First, we'll make our handlers chattier - modify +`walken_show_commit()` and `walken_show_object()` to print the object as they +go: + +---- +static void walken_show_commit(struct commit *cmt, void *buf) +{ + trace_printf("commit: %s\n", oid_to_hex(&cmt->object.oid)); + commit_count++; +} + +static void walken_show_object(struct object *obj, const char *str, void *buf) +{ + trace_printf("%s: %s\n", type_name(obj->type), oid_to_hex(&obj->oid)); + + ... +} +---- + +NOTE: Since we will be examining this output directly as humans, we'll use +`trace_printf()` here. Additionally, since this change introduces a significant +number of printed lines, using `trace_printf()` will allow us to easily silence +those lines without having to recompile. + +(Leave the counter increment logic in place.) + +With only that change, run again (but save yourself some scrollback): + +---- +$ GIT_TRACE=1 ./bin-wrappers/git walken | head -n 10 +---- + +Take a look at the top commit with `git show` and the object ID you printed; it +should be the same as the output of `git show HEAD`. + +Next, let's change a setting on our `struct rev_info` within +`walken_object_walk()`. Find where you're changing the other settings on `rev`, +such as `rev->tree_objects` and `rev->tree_blobs_in_commit_order`, and add the +`reverse` setting at the bottom: + +---- + ... + + rev->tree_objects = 1; + rev->blob_objects = 1; + rev->tag_objects = 1; + rev->tree_blobs_in_commit_order = 1; + rev->reverse = 1; + + ... +---- + +Now, run again, but this time, let's grab the last handful of objects instead +of the first handful: + +---- +$ make +$ GIT_TRACE=1 ./bin-wrappers git walken | tail -n 10 +---- + +The last commit object given should have the same OID as the one we saw at the +top before, and running `git show ` with that OID should give you again +the same results as `git show HEAD`. Furthermore, if you run and examine the +first ten lines again (with `head` instead of `tail` like we did before applying +the `reverse` setting), you should see that now the first commit printed is the +initial commit, `e83c5163`. + +== Wrapping Up + +Let's review. In this tutorial, we: + +- Built a commit walk from the ground up +- Enabled a grep filter for that commit walk +- Changed the sort order of that filtered commit walk +- Built an object walk (tags, commits, trees, and blobs) from the ground up +- Learned how to add a filter-spec to an object walk +- Changed the display order of the filtered object walk diff --git a/third_party/git/Documentation/RelNotes/1.5.0.txt b/third_party/git/Documentation/RelNotes/1.5.0.txt index daf4bdb0d7bb..d6d42f318358 100644 --- a/third_party/git/Documentation/RelNotes/1.5.0.txt +++ b/third_party/git/Documentation/RelNotes/1.5.0.txt @@ -251,7 +251,7 @@ Updates in v1.5.0 since v1.4.4 series the repository when that happens. -* Crufts removal +* Cruft removal - We used to say "old commits are retrievable using reflog and 'master@{yesterday}' syntax as long as you haven't run @@ -379,7 +379,7 @@ Updates in v1.5.0 since v1.4.4 series - The value of i18n.commitencoding in the originating repository is recorded in the commit object on the "encoding" header, if it is not UTF-8. git-log and friends notice this, - and reencodes the message to the log output encoding when + and re-encodes the message to the log output encoding when displaying, if they are different. The log output encoding is determined by "git log --encoding=", i18n.logoutputencoding configuration, or i18n.commitencoding diff --git a/third_party/git/Documentation/RelNotes/1.6.2.txt b/third_party/git/Documentation/RelNotes/1.6.2.txt index ad060f4f8900..980adfb31546 100644 --- a/third_party/git/Documentation/RelNotes/1.6.2.txt +++ b/third_party/git/Documentation/RelNotes/1.6.2.txt @@ -11,7 +11,7 @@ push running this release will issue a big warning when the configuration variable is missing. Please refer to: http://git.or.cz/gitwiki/GitFaq#non-bare - http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 + https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/ for more details on the reason why this change is needed and the transition plan. diff --git a/third_party/git/Documentation/RelNotes/1.6.3.txt b/third_party/git/Documentation/RelNotes/1.6.3.txt index 418c685cf832..4bcff945e019 100644 --- a/third_party/git/Documentation/RelNotes/1.6.3.txt +++ b/third_party/git/Documentation/RelNotes/1.6.3.txt @@ -11,7 +11,7 @@ push running this release will issue a big warning when the configuration variable is missing. Please refer to: http://git.or.cz/gitwiki/GitFaq#non-bare - http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 + https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/ for more details on the reason why this change is needed and the transition plan. diff --git a/third_party/git/Documentation/RelNotes/1.6.4.txt b/third_party/git/Documentation/RelNotes/1.6.4.txt index 7a904419f781..a2a34b43a75d 100644 --- a/third_party/git/Documentation/RelNotes/1.6.4.txt +++ b/third_party/git/Documentation/RelNotes/1.6.4.txt @@ -11,7 +11,7 @@ push running this release will issue a big warning when the configuration variable is missing. Please refer to: http://git.or.cz/gitwiki/GitFaq#non-bare - http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 + https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/ for more details on the reason why this change is needed and the transition plan. diff --git a/third_party/git/Documentation/RelNotes/1.6.5.4.txt b/third_party/git/Documentation/RelNotes/1.6.5.4.txt index d3a2a3e71243..344333de66e5 100644 --- a/third_party/git/Documentation/RelNotes/1.6.5.4.txt +++ b/third_party/git/Documentation/RelNotes/1.6.5.4.txt @@ -10,7 +10,7 @@ Fixes since v1.6.5.3 * "git prune-packed" gave progress output even when its standard error is not connected to a terminal; this caused cron jobs that run it to - produce crufts. + produce cruft. * "git pack-objects --all-progress" is an option to ask progress output from write-object phase _if_ progress output were to be produced, and diff --git a/third_party/git/Documentation/RelNotes/1.6.5.txt b/third_party/git/Documentation/RelNotes/1.6.5.txt index ee141c19add2..6c7f7da7eb9a 100644 --- a/third_party/git/Documentation/RelNotes/1.6.5.txt +++ b/third_party/git/Documentation/RelNotes/1.6.5.txt @@ -22,7 +22,7 @@ push running this release will issue a big warning when the configuration variable is missing. Please refer to: http://git.or.cz/gitwiki/GitFaq#non-bare - http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 + https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/ for more details on the reason why this change is needed and the transition plan. diff --git a/third_party/git/Documentation/RelNotes/1.6.6.txt b/third_party/git/Documentation/RelNotes/1.6.6.txt index c50b59c4957a..3ed1e0143374 100644 --- a/third_party/git/Documentation/RelNotes/1.6.6.txt +++ b/third_party/git/Documentation/RelNotes/1.6.6.txt @@ -64,7 +64,7 @@ users will fare this time. Please refer to: http://git.or.cz/gitwiki/GitFaq#non-bare - http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 + https://lore.kernel.org/git/7vbptlsuyv.fsf@gitster.siamese.dyndns.org/ for more details on the reason why this change is needed and the transition process that already took place so far. diff --git a/third_party/git/Documentation/RelNotes/1.7.0.2.txt b/third_party/git/Documentation/RelNotes/1.7.0.2.txt index fcb46ca6a4ec..73ed2b527843 100644 --- a/third_party/git/Documentation/RelNotes/1.7.0.2.txt +++ b/third_party/git/Documentation/RelNotes/1.7.0.2.txt @@ -34,7 +34,7 @@ Fixes since v1.7.0.1 * "git status" in 1.7.0 lacked the optimization we used to have in 1.6.X series to speed up scanning of large working tree. - * "gitweb" did not diagnose parsing errors properly while reading tis configuration + * "gitweb" did not diagnose parsing errors properly while reading its configuration file. And other minor fixes and documentation updates. diff --git a/third_party/git/Documentation/RelNotes/1.7.10.4.txt b/third_party/git/Documentation/RelNotes/1.7.10.4.txt index 326670df6e6b..57597f2bf35d 100644 --- a/third_party/git/Documentation/RelNotes/1.7.10.4.txt +++ b/third_party/git/Documentation/RelNotes/1.7.10.4.txt @@ -7,7 +7,7 @@ Fixes since v1.7.10.3 * The message file for Swedish translation has been updated a bit. * A name taken from mailmap was copied into an internal buffer - incorrectly and could overun the buffer if it is too long. + incorrectly and could overrun the buffer if it is too long. * A malformed commit object that has a header line chomped in the middle could kill git with a NULL pointer dereference. diff --git a/third_party/git/Documentation/RelNotes/1.7.12.3.txt b/third_party/git/Documentation/RelNotes/1.7.12.3.txt index ecda427a35ef..4b822976b8ad 100644 --- a/third_party/git/Documentation/RelNotes/1.7.12.3.txt +++ b/third_party/git/Documentation/RelNotes/1.7.12.3.txt @@ -25,7 +25,7 @@ Fixes since v1.7.12.2 its Accept-Encoding header. * "git receive-pack" (the counterpart to "git push") did not give - progress output while processing objects it received to the puser + progress output while processing objects it received to the user when run over the smart-http protocol. * "git status" honored the ignore=dirty settings in .gitmodules but diff --git a/third_party/git/Documentation/RelNotes/1.7.5.3.txt b/third_party/git/Documentation/RelNotes/1.7.5.3.txt index 9c03353af2e9..1d24edcf2fa6 100644 --- a/third_party/git/Documentation/RelNotes/1.7.5.3.txt +++ b/third_party/git/Documentation/RelNotes/1.7.5.3.txt @@ -22,7 +22,7 @@ Fixes since v1.7.5.2 * "git log --stdin path" with an input that has additional pathspec used to corrupt memory. - * "git send-pack" (hence "git push") over smalt-HTTP protocol could + * "git send-pack" (hence "git push") over smart-HTTP protocol could deadlock when the client side pack-object died early. * Compressed tarball gitweb generates used to be made with the timestamp diff --git a/third_party/git/Documentation/RelNotes/1.8.0.txt b/third_party/git/Documentation/RelNotes/1.8.0.txt index 43883c14f08a..63d6e4afa4df 100644 --- a/third_party/git/Documentation/RelNotes/1.8.0.txt +++ b/third_party/git/Documentation/RelNotes/1.8.0.txt @@ -233,7 +233,7 @@ to them for details). together, misdetected branches. * "git receive-pack" (the counterpart to "git push") did not give - progress output while processing objects it received to the puser + progress output while processing objects it received to the user when run over the smart-http protocol. * When you misspell the command name you give to the "exec" action in diff --git a/third_party/git/Documentation/RelNotes/1.8.4.1.txt b/third_party/git/Documentation/RelNotes/1.8.4.1.txt index 96090ef599d3..c257beb114c9 100644 --- a/third_party/git/Documentation/RelNotes/1.8.4.1.txt +++ b/third_party/git/Documentation/RelNotes/1.8.4.1.txt @@ -15,7 +15,7 @@ Fixes since v1.8.4 in 1.8.4-rc1). * "git rebase -i" and other scripted commands were feeding a - random, data dependant error message to 'echo' and expecting it + random, data dependent error message to 'echo' and expecting it to come out literally. * Setting the "submodule..path" variable to the empty diff --git a/third_party/git/Documentation/RelNotes/1.8.4.txt b/third_party/git/Documentation/RelNotes/1.8.4.txt index 02f681b71051..255e185af6fc 100644 --- a/third_party/git/Documentation/RelNotes/1.8.4.txt +++ b/third_party/git/Documentation/RelNotes/1.8.4.txt @@ -58,7 +58,7 @@ Foreign interfaces, subsystems and ports. credential helper interface from Git.pm. * Update build for Cygwin 1.[57]. Torsten Bögershausen reports that - this is fine with Cygwin 1.7 ($gmane/225824) so let's try moving it + this is fine with Cygwin 1.7 (cf. <51A606A0.5060101@web.de>) so let's try moving it ahead. * The credential helper to talk to keychain on OS X (in contrib/) has diff --git a/third_party/git/Documentation/RelNotes/2.1.3.txt b/third_party/git/Documentation/RelNotes/2.1.3.txt index acc9ebb886ea..0dfb17c4fc6f 100644 --- a/third_party/git/Documentation/RelNotes/2.1.3.txt +++ b/third_party/git/Documentation/RelNotes/2.1.3.txt @@ -13,7 +13,7 @@ Git v2.1.3 Release Notes they are new enough to support the `--output` option. * "git pack-objects" forgot to disable the codepath to generate - object recheability bitmap when it needs to split the resulting + object reachability bitmap when it needs to split the resulting pack. * "gitweb" used deprecated CGI::startfrom, which was removed from diff --git a/third_party/git/Documentation/RelNotes/2.10.0.txt b/third_party/git/Documentation/RelNotes/2.10.0.txt index f4da28ab6690..3792b7d03d5f 100644 --- a/third_party/git/Documentation/RelNotes/2.10.0.txt +++ b/third_party/git/Documentation/RelNotes/2.10.0.txt @@ -478,7 +478,7 @@ notes for details). * One part of "git am" had an oddball helper function that called stuff from outside "his" as opposed to calling what we have "ours", which was not gender-neutral and also inconsistent with the rest of - the system where outside stuff is usuall called "theirs" in + the system where outside stuff is usually called "theirs" in contrast to "ours". * "git blame file" allowed the lineage of lines in the uncommitted, diff --git a/third_party/git/Documentation/RelNotes/2.10.2.txt b/third_party/git/Documentation/RelNotes/2.10.2.txt index c4d4397023de..abbd331508a5 100644 --- a/third_party/git/Documentation/RelNotes/2.10.2.txt +++ b/third_party/git/Documentation/RelNotes/2.10.2.txt @@ -86,7 +86,7 @@ Fixes since v2.10.1 by refusing to check out a branch that is already checked out in another worktree. However, this also prevented checking out a branch, which is designated as the primary branch of a bare - reopsitory, in a worktree that is connected to the bare + repository, in a worktree that is connected to the bare repository. The check has been corrected to allow it. * "git rebase" immediately after "git clone" failed to find the fork diff --git a/third_party/git/Documentation/RelNotes/2.11.1.txt b/third_party/git/Documentation/RelNotes/2.11.1.txt index 9cd14c8197f9..7d35cf186dbf 100644 --- a/third_party/git/Documentation/RelNotes/2.11.1.txt +++ b/third_party/git/Documentation/RelNotes/2.11.1.txt @@ -104,7 +104,7 @@ Fixes since v2.11 "git difftool --dir-diff" from a subdirectory never worked. This has been fixed. - * "git p4" that tracks multile p4 paths imported a single changelist + * "git p4" that tracks multiple p4 paths imported a single changelist that touches files in these multiple paths as one commit, followed by many empty commits. This has been fixed. diff --git a/third_party/git/Documentation/RelNotes/2.12.0.txt b/third_party/git/Documentation/RelNotes/2.12.0.txt index ef8b97da9b84..d2f6a836146d 100644 --- a/third_party/git/Documentation/RelNotes/2.12.0.txt +++ b/third_party/git/Documentation/RelNotes/2.12.0.txt @@ -315,7 +315,7 @@ notes for details). "git difftool --dir-diff" from a subdirectory never worked. This has been fixed. - * "git p4" that tracks multile p4 paths imported a single changelist + * "git p4" that tracks multiple p4 paths imported a single changelist that touches files in these multiple paths as one commit, followed by many empty commits. This has been fixed. diff --git a/third_party/git/Documentation/RelNotes/2.13.0.txt b/third_party/git/Documentation/RelNotes/2.13.0.txt index aa99d4b3cef0..2a47b4cb0cd4 100644 --- a/third_party/git/Documentation/RelNotes/2.13.0.txt +++ b/third_party/git/Documentation/RelNotes/2.13.0.txt @@ -177,7 +177,7 @@ UI, Workflows & Features been changed to enable "--decorate". * The output from "git status --short" has been extended to show - various kinds of dirtyness in submodules differently; instead of to + various kinds of dirtiness in submodules differently; instead of to "M" for modified, 'm' and '?' can be shown to signal changes only to the working tree of the submodule but not the commit that is checked out. diff --git a/third_party/git/Documentation/RelNotes/2.13.3.txt b/third_party/git/Documentation/RelNotes/2.13.3.txt index 5d76ad53106b..384e4de26526 100644 --- a/third_party/git/Documentation/RelNotes/2.13.3.txt +++ b/third_party/git/Documentation/RelNotes/2.13.3.txt @@ -25,7 +25,7 @@ Fixes since v2.13.2 * The code to pick up and execute command alias definition from the configuration used to switch to the top of the working tree and then come back when the expanded alias was executed, which was - unnecessarilyl complex. Attempt to simplify the logic by using the + unnecessarily complex. Attempt to simplify the logic by using the early-config mechanism that does not chdir around. * "git add -p" were updated in 2.12 timeframe to cope with custom @@ -35,7 +35,7 @@ Fixes since v2.13.2 * Fix a recent regression to "git rebase -i" and add tests that would have caught it and others. - * An unaligned 32-bit access in pack-bitmap code ahs been corrected. + * An unaligned 32-bit access in pack-bitmap code has been corrected. * Tighten error checks for invalid "git apply" input. diff --git a/third_party/git/Documentation/RelNotes/2.14.0.txt b/third_party/git/Documentation/RelNotes/2.14.0.txt index 4246c68ff51e..2711a2529dad 100644 --- a/third_party/git/Documentation/RelNotes/2.14.0.txt +++ b/third_party/git/Documentation/RelNotes/2.14.0.txt @@ -141,7 +141,7 @@ Performance, Internal Implementation, Development Support etc. * Some platforms have ulong that is smaller than time_t, and our historical use of ulong for timestamp would mean they cannot represent some timestamp that the platform allows. Invent a - separate and dedicated timestamp_t (so that we can distingiuish + separate and dedicated timestamp_t (so that we can distinguish timestamps and a vanilla ulongs, which along is already a good move), and then declare uintmax_t is the type to be used as the timestamp_t. @@ -442,7 +442,7 @@ notes for details). * The code to pick up and execute command alias definition from the configuration used to switch to the top of the working tree and then come back when the expanded alias was executed, which was - unnecessarilyl complex. Attempt to simplify the logic by using the + unnecessarily complex. Attempt to simplify the logic by using the early-config mechanism that does not chdir around. * Fix configuration codepath to pay proper attention to commondir diff --git a/third_party/git/Documentation/RelNotes/2.14.6.txt b/third_party/git/Documentation/RelNotes/2.14.6.txt new file mode 100644 index 000000000000..72b7af679917 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.14.6.txt @@ -0,0 +1,54 @@ +Git v2.14.6 Release Notes +========================= + +This release addresses the security issues CVE-2019-1348, +CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, +CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387. + +Fixes since v2.14.5 +------------------- + + * CVE-2019-1348: + The --export-marks option of git fast-import is exposed also via + the in-stream command feature export-marks=... and it allows + overwriting arbitrary paths. + + * CVE-2019-1349: + When submodules are cloned recursively, under certain circumstances + Git could be fooled into using the same Git directory twice. We now + require the directory to be empty. + + * CVE-2019-1350: + Incorrect quoting of command-line arguments allowed remote code + execution during a recursive clone in conjunction with SSH URLs. + + * CVE-2019-1351: + While the only permitted drive letters for physical drives on + Windows are letters of the US-English alphabet, this restriction + does not apply to virtual drives assigned via subst : + . Git mistook such paths for relative paths, allowing writing + outside of the worktree while cloning. + + * CVE-2019-1352: + Git was unaware of NTFS Alternate Data Streams, allowing files + inside the .git/ directory to be overwritten during a clone. + + * CVE-2019-1353: + When running Git in the Windows Subsystem for Linux (also known as + "WSL") while accessing a working directory on a regular Windows + drive, none of the NTFS protections were active. + + * CVE-2019-1354: + Filenames on Linux/Unix can contain backslashes. On Windows, + backslashes are directory separators. Git did not use to refuse to + write out tracked files with such filenames. + + * CVE-2019-1387: + Recursive clones are currently affected by a vulnerability that is + caused by too-lax validation of submodule names, allowing very + targeted attacks via remote code execution in recursive clones. + +Credit for finding these vulnerabilities goes to Microsoft Security +Response Center, in particular to Nicolas Joly. The `fast-import` +fixes were provided by Jeff King, the other fixes by Johannes +Schindelin with help from Garima Singh. diff --git a/third_party/git/Documentation/RelNotes/2.15.4.txt b/third_party/git/Documentation/RelNotes/2.15.4.txt new file mode 100644 index 000000000000..dc241cba349f --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.15.4.txt @@ -0,0 +1,11 @@ +Git v2.15.4 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6 to address +the security issues CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, +CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, and +CVE-2019-1387; see the release notes for that version for details. + +In conjunction with a vulnerability that was fixed in v2.20.2, +`.gitmodules` is no longer allowed to contain entries of the form +`submodule..update=!command`. diff --git a/third_party/git/Documentation/RelNotes/2.16.0.txt b/third_party/git/Documentation/RelNotes/2.16.0.txt index 0c81c5915fdb..b474781ed827 100644 --- a/third_party/git/Documentation/RelNotes/2.16.0.txt +++ b/third_party/git/Documentation/RelNotes/2.16.0.txt @@ -407,7 +407,7 @@ Fixes since v2.15 (merge eef3df5a93 bw/pathspec-match-submodule-boundary later to maint). * Amending commits in git-gui broke the author name that is non-ascii - due to incorrect enconding conversion. + due to incorrect encoding conversion. * Recent update to the submodule configuration code broke "diff-tree" by accidentally stopping to read from the index upfront. diff --git a/third_party/git/Documentation/RelNotes/2.16.3.txt b/third_party/git/Documentation/RelNotes/2.16.3.txt index 64a0bcb0d251..f0121a8f2d31 100644 --- a/third_party/git/Documentation/RelNotes/2.16.3.txt +++ b/third_party/git/Documentation/RelNotes/2.16.3.txt @@ -24,7 +24,7 @@ Fixes since v2.16.2 * The http tracing code, often used to debug connection issues, learned to redact potentially sensitive information from its output - so that it can be more safely sharable. + so that it can be more safely shareable. * Crash fix for a corner case where an error codepath tried to unlock what it did not acquire lock on. diff --git a/third_party/git/Documentation/RelNotes/2.16.6.txt b/third_party/git/Documentation/RelNotes/2.16.6.txt new file mode 100644 index 000000000000..438306e60bf3 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.16.6.txt @@ -0,0 +1,8 @@ +Git v2.16.6 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6 and in +v2.15.4 addressing the security issues CVE-2019-1348, CVE-2019-1349, +CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, +CVE-2019-1354, and CVE-2019-1387; see the release notes for those +versions for details. diff --git a/third_party/git/Documentation/RelNotes/2.17.0.txt b/third_party/git/Documentation/RelNotes/2.17.0.txt index c2cf891f71ad..8b17c260336c 100644 --- a/third_party/git/Documentation/RelNotes/2.17.0.txt +++ b/third_party/git/Documentation/RelNotes/2.17.0.txt @@ -216,7 +216,7 @@ Fixes since v2.16 * The http tracing code, often used to debug connection issues, learned to redact potentially sensitive information from its output - so that it can be more safely sharable. + so that it can be more safely shareable. (merge 8ba18e6fa4 jt/http-redact-cookies later to maint). * Crash fix for a corner case where an error codepath tried to unlock diff --git a/third_party/git/Documentation/RelNotes/2.17.3.txt b/third_party/git/Documentation/RelNotes/2.17.3.txt new file mode 100644 index 000000000000..5a46c94271c8 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.17.3.txt @@ -0,0 +1,12 @@ +Git v2.17.3 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6 and in +v2.15.4 addressing the security issues CVE-2019-1348, CVE-2019-1349, +CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, CVE-2019-1353, +CVE-2019-1354, and CVE-2019-1387; see the release notes for those +versions for details. + +In addition, `git fsck` was taught to identify `.gitmodules` entries +of the form `submodule..update=!command`, which have been +disallowed in v2.15.4. diff --git a/third_party/git/Documentation/RelNotes/2.17.4.txt b/third_party/git/Documentation/RelNotes/2.17.4.txt new file mode 100644 index 000000000000..7d794ca01af2 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.17.4.txt @@ -0,0 +1,16 @@ +Git v2.17.4 Release Notes +========================= + +This release is to address the security issue: CVE-2020-5260 + +Fixes since v2.17.3 +------------------- + + * With a crafted URL that contains a newline in it, the credential + helper machinery can be fooled to give credential information for + a wrong host. The attack has been made impossible by forbidding + a newline character in any value passed via the credential + protocol. + +Credit for finding the vulnerability goes to Felix Wilhelm of Google +Project Zero. diff --git a/third_party/git/Documentation/RelNotes/2.17.5.txt b/third_party/git/Documentation/RelNotes/2.17.5.txt new file mode 100644 index 000000000000..2abb821a7397 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.17.5.txt @@ -0,0 +1,22 @@ +Git v2.17.5 Release Notes +========================= + +This release is to address a security issue: CVE-2020-11008 + +Fixes since v2.17.4 +------------------- + + * With a crafted URL that contains a newline or empty host, or lacks + a scheme, the credential helper machinery can be fooled into + providing credential information that is not appropriate for the + protocol in use and host being contacted. + + Unlike the vulnerability CVE-2020-5260 fixed in v2.17.4, the + credentials are not for a host of the attacker's choosing; instead, + they are for some unspecified host (based on how the configured + credential helper handles an absent "host" parameter). + + The attack has been made impossible by refusing to work with + under-specified credential patterns. + +Credit for finding the vulnerability goes to Carlo Arenas. diff --git a/third_party/git/Documentation/RelNotes/2.18.0.txt b/third_party/git/Documentation/RelNotes/2.18.0.txt index 3ea280cf68e5..6c8a0e97c1a7 100644 --- a/third_party/git/Documentation/RelNotes/2.18.0.txt +++ b/third_party/git/Documentation/RelNotes/2.18.0.txt @@ -179,7 +179,7 @@ Performance, Internal Implementation, Development Support etc. (merge 00a3da2a13 nd/remove-ignore-env-field later to maint). * Code to find the length to uniquely abbreviate object names based - on packfile content, which is a relatively recent addtion, has been + on packfile content, which is a relatively recent addition, has been optimized to use the same fan-out table. * The mechanism to use parse-options API to automate the command line diff --git a/third_party/git/Documentation/RelNotes/2.18.2.txt b/third_party/git/Documentation/RelNotes/2.18.2.txt new file mode 100644 index 000000000000..98b168aade52 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.18.2.txt @@ -0,0 +1,8 @@ +Git v2.18.2 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4 +and in v2.17.3, addressing the security issues CVE-2019-1348, +CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, +CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes +for those versions for details. diff --git a/third_party/git/Documentation/RelNotes/2.18.3.txt b/third_party/git/Documentation/RelNotes/2.18.3.txt new file mode 100644 index 000000000000..25143f0cec58 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.18.3.txt @@ -0,0 +1,5 @@ +Git v2.18.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.18.4.txt b/third_party/git/Documentation/RelNotes/2.18.4.txt new file mode 100644 index 000000000000..e8ef858a00a7 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.18.4.txt @@ -0,0 +1,5 @@ +Git v2.18.4 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.19.0.txt b/third_party/git/Documentation/RelNotes/2.19.0.txt index a06ccf6e2a26..891c79b9cb2b 100644 --- a/third_party/git/Documentation/RelNotes/2.19.0.txt +++ b/third_party/git/Documentation/RelNotes/2.19.0.txt @@ -106,7 +106,7 @@ Performance, Internal Implementation, Development Support etc. * The conversion to pass "the_repository" and then "a_repository" throughout the object access API continues. - * Continuing with the idea to programatically enumerate various + * Continuing with the idea to programmatically enumerate various pieces of data required for command line completion, teach the codebase to report the list of configuration variables subcommands care about to help complete them. diff --git a/third_party/git/Documentation/RelNotes/2.19.3.txt b/third_party/git/Documentation/RelNotes/2.19.3.txt new file mode 100644 index 000000000000..92d7f89de68b --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.19.3.txt @@ -0,0 +1,8 @@ +Git v2.19.3 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4 +and in v2.17.3, addressing the security issues CVE-2019-1348, +CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, +CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes +for those versions for details. diff --git a/third_party/git/Documentation/RelNotes/2.19.4.txt b/third_party/git/Documentation/RelNotes/2.19.4.txt new file mode 100644 index 000000000000..35d0ae561b6f --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.19.4.txt @@ -0,0 +1,5 @@ +Git v2.19.4 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.19.5.txt b/third_party/git/Documentation/RelNotes/2.19.5.txt new file mode 100644 index 000000000000..18a4dcbfd6a7 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.19.5.txt @@ -0,0 +1,5 @@ +Git v2.19.5 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.20.0.txt b/third_party/git/Documentation/RelNotes/2.20.0.txt index e71fe3dee13e..3dd7e6e1fcf9 100644 --- a/third_party/git/Documentation/RelNotes/2.20.0.txt +++ b/third_party/git/Documentation/RelNotes/2.20.0.txt @@ -119,7 +119,7 @@ UI, Workflows & Features alias expansion. * The documentation of "git gc" has been updated to mention that it - is no longer limited to "pruning away crufts" but also updates + is no longer limited to "pruning away cruft" but also updates ancillary files like commit-graph as a part of repository optimization. diff --git a/third_party/git/Documentation/RelNotes/2.20.2.txt b/third_party/git/Documentation/RelNotes/2.20.2.txt new file mode 100644 index 000000000000..8e680cb9fbf4 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.20.2.txt @@ -0,0 +1,18 @@ +Git v2.20.2 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4 +and in v2.17.3, addressing the security issues CVE-2019-1348, +CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, +CVE-2019-1353, CVE-2019-1354, and CVE-2019-1387; see the release notes +for those versions for details. + +The change to disallow `submodule..update=!command` entries in +`.gitmodules` which was introduced v2.15.4 (and for which v2.17.3 +added explicit fsck checks) fixes the vulnerability in v2.20.x where a +recursive clone followed by a submodule update could execute code +contained within the repository without the user explicitly having +asked for that (CVE-2019-19604). + +Credit for finding this vulnerability goes to Joern Schneeweisz, +credit for the fixes goes to Jonathan Nieder. diff --git a/third_party/git/Documentation/RelNotes/2.20.3.txt b/third_party/git/Documentation/RelNotes/2.20.3.txt new file mode 100644 index 000000000000..f6eccd103b69 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.20.3.txt @@ -0,0 +1,5 @@ +Git v2.20.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.20.4.txt b/third_party/git/Documentation/RelNotes/2.20.4.txt new file mode 100644 index 000000000000..5a9e24e4709c --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.20.4.txt @@ -0,0 +1,5 @@ +Git v2.20.4 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.21.1.txt b/third_party/git/Documentation/RelNotes/2.21.1.txt new file mode 100644 index 000000000000..b7594151e4c8 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.21.1.txt @@ -0,0 +1,12 @@ +Git v2.21.1 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4, +v2.17.3 and in v2.20.2, addressing the security issues CVE-2019-1348, +CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, CVE-2019-1352, +CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and CVE-2019-19604; +see the release notes for those versions for details. + +Additionally, this version also includes a couple of fixes for the +Windows-specific quoting of command-line arguments when Git executes +a Unix shell on Windows. diff --git a/third_party/git/Documentation/RelNotes/2.21.2.txt b/third_party/git/Documentation/RelNotes/2.21.2.txt new file mode 100644 index 000000000000..a0fb83bb5341 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.21.2.txt @@ -0,0 +1,5 @@ +Git v2.21.2 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.21.3.txt b/third_party/git/Documentation/RelNotes/2.21.3.txt new file mode 100644 index 000000000000..2ca0aa5c62af --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.21.3.txt @@ -0,0 +1,5 @@ +Git v2.21.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.22.2.txt b/third_party/git/Documentation/RelNotes/2.22.2.txt new file mode 100644 index 000000000000..940a23f0d961 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.22.2.txt @@ -0,0 +1,8 @@ +Git v2.22.2 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4, +v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues +CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, +CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and +CVE-2019-19604; see the release notes for those versions for details. diff --git a/third_party/git/Documentation/RelNotes/2.22.3.txt b/third_party/git/Documentation/RelNotes/2.22.3.txt new file mode 100644 index 000000000000..57296f6d173f --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.22.3.txt @@ -0,0 +1,5 @@ +Git v2.22.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.22.4.txt b/third_party/git/Documentation/RelNotes/2.22.4.txt new file mode 100644 index 000000000000..8b5f3e3f3740 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.22.4.txt @@ -0,0 +1,5 @@ +Git v2.22.4 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.23.1.txt b/third_party/git/Documentation/RelNotes/2.23.1.txt new file mode 100644 index 000000000000..2083b492ce50 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.23.1.txt @@ -0,0 +1,8 @@ +Git v2.23.1 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4, +v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues +CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, +CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and +CVE-2019-19604; see the release notes for those versions for details. diff --git a/third_party/git/Documentation/RelNotes/2.23.2.txt b/third_party/git/Documentation/RelNotes/2.23.2.txt new file mode 100644 index 000000000000..b697cbe0e31a --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.23.2.txt @@ -0,0 +1,5 @@ +Git v2.23.2 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.23.3.txt b/third_party/git/Documentation/RelNotes/2.23.3.txt new file mode 100644 index 000000000000..2e35490137b7 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.23.3.txt @@ -0,0 +1,5 @@ +Git v2.23.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.24.0.txt b/third_party/git/Documentation/RelNotes/2.24.0.txt new file mode 100644 index 000000000000..bde154124cb8 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.24.0.txt @@ -0,0 +1,398 @@ +Git 2.24 Release Notes +====================== + +Updates since v2.23 +------------------- + +Backward compatibility note + + * "filter-branch" is showing its age and alternatives are available. + From this release, we started to discourage its use and hint + people about filter-repo. + +UI, Workflows & Features + + * We now have an active interim maintainer for the Git-Gui part of + the system. Praise and thank Pratyush Yadav for volunteering. + + * The command line parser learned "--end-of-options" notation; the + standard convention for scripters to have hardcoded set of options + first on the command line, and force the command to treat end-user + input as non-options, has been to use "--" as the delimiter, but + that would not work for commands that use "--" as a delimiter + between revs and pathspec. + + * A mechanism to affect the default setting for a (related) group of + configuration variables is introduced. + + * "git fetch" learned "--set-upstream" option to help those who first + clone from their private fork they intend to push to, add the true + upstream via "git remote add" and then "git fetch" from it. + + * Device-tree files learned their own userdiff patterns. + (merge 3c81760bc6 sb/userdiff-dts later to maint). + + * "git rebase --rebase-merges" learned to drive different merge + strategies and pass strategy specific options to them. + + * A new "pre-merge-commit" hook has been introduced. + + * Command line completion updates for "git -c var.name=val" have been + added. + + * The lazy clone machinery has been taught that there can be more + than one promisor remote and consult them in order when downloading + missing objects on demand. + + * The list-objects-filter API (used to create a sparse/lazy clone) + learned to take a combined filter specification. + + * The documentation and tests for "git format-patch" have been + cleaned up. + + * On Windows, the root level of UNC share is now allowed to be used + just like any other directory. + + * The command line completion support (in contrib/) learned about the + "--skip" option of "git revert" and "git cherry-pick". + + * "git rebase --keep-base " tries to find the original base + of the topic being rebased and rebase on top of that same base, + which is useful when running the "git rebase -i" (and its limited + variant "git rebase -x"). + + The command also has learned to fast-forward in more cases where it + can instead of replaying to recreate identical commits. + + * A configuration variable tells "git fetch" to write the commit + graph after finishing. + + * "git add -i" has been taught to show the total number of hunks and + the hunks that has been processed so far when showing prompts. + + * "git fetch --jobs=" allowed parallel jobs when fetching + submodules, but this did not apply to "git fetch --multiple" that + fetches from multiple remote repositories. It now does. + + * The installation instruction for zsh completion script (in + contrib/) has been a bit improved. + + +Performance, Internal Implementation, Development Support etc. + + * The code to write commit-graph over given commit object names has + been made a bit more robust. + + * The first line of verbose output from each test piece now carries + the test name and number to help scanning with eyeballs. + + * Further clean-up of the initialization code. + + * xmalloc() used to have a mechanism to ditch memory and address + space resources as the last resort upon seeing an allocation + failure from the underlying malloc(), which made the code complex + and thread-unsafe with dubious benefit, as major memory resource + users already do limit their uses with various other mechanisms. + It has been simplified away. + + * Unnecessary full-tree diff in "git log -L" machinery has been + optimized away. + + * The http transport lacked some optimization the native transports + learned to avoid unnecessary ref advertisement, which has been + corrected. + + * Preparation for SHA-256 upgrade continues in the test department. + (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint). + + * The memory ownership model of the "git fast-import" got + straightened out. + + * Output from trace2 subsystem is formatted more prettily now. + + * The internal code originally invented for ".gitignore" processing + got reshuffled and renamed to make it less tied to "excluding" and + stress more that it is about "matching", as it has been reused for + things like sparse checkout specification that want to check if a + path is "included". + + * "git stash" learned to write refreshed index back to disk. + + * Coccinelle checks are done on more source files than before now. + + * The cache-tree code has been taught to be less aggressive in + attempting to see if a tree object it computed already exists in + the repository. + + * The code to parse and use the commit-graph file has been made more + robust against corrupted input. + + * The hg-to-git script (in contrib/) has been updated to work with + Python 3. + + * Update the way build artifacts in t/helper/ directory are ignored. + + * Preparation for SHA-256 upgrade continues. + + * "git log --graph" for an octopus merge is sometimes colored + incorrectly, which is demonstrated and documented but not yet + fixed. + + * The trace2 output, when sending them to files in a designated + directory, can populate the directory with too many files; a + mechanism is introduced to set the maximum number of files and + discard further logs when the maximum is reached. + + * We have adopted a Code-of-conduct document. + (merge 3f9ef874a7 jk/coc later to maint). + + +Fixes since v2.23 +----------------- + + * "git grep --recurse-submodules" that looks at the working tree + files looked at the contents in the index in submodules, instead of + files in the working tree. + (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint). + + * Codepaths to walk tree objects have been audited for integer + overflows and hardened. + (merge 5aa02f9868 jk/tree-walk-overflow later to maint). + + * "git pack-refs" can lose refs that are created while running, which + is getting corrected. + (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint). + + * "git checkout" and "git restore" to re-populate the index from a + tree-ish (typically HEAD) did not work correctly for a path that + was removed and then added again with the intent-to-add bit, when + the corresponding working tree file was empty. This has been + corrected. + + * Compilation fix. + (merge 70597e8386 rs/nedalloc-fixlets later to maint). + + * "git gui" learned to call the clean-up procedure before exiting. + (merge 0d88f3d2c5 py/git-gui-do-quit later to maint). + + * We promoted the "indent heuristics" that decides where to split + diff hunks from experimental to the default a few years ago, but + some stale documentation still marked it as experimental, which has + been corrected. + (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint). + + * Fix a mismerge that happened in 2.22 timeframe. + (merge acb7da05ac en/checkout-mismerge-fix later to maint). + + * "git archive" recorded incorrect length in extended pax header in + some corner cases, which has been corrected. + (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint). + + * On-demand object fetching in lazy clone incorrectly tried to fetch + commits from submodule projects, while still working in the + superproject, which has been corrected. + (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint). + + * Prepare get_short_oid() codepath to be thread-safe. + (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint). + + * "for-each-ref" and friends that show refs did not protect themselves + against ancient tags that did not record tagger names when asked to + show "%(taggername)", which have been corrected. + (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint). + + * The "git am" based backend of "git rebase" ignored the result of + updating ".gitattributes" done in one step when replaying + subsequent steps. + (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint). + + * Tell cURL library to use the same malloc() implementation, with the + xmalloc() wrapper, as the rest of the system, for consistency. + (merge 93b980e58f cb/curl-use-xmalloc later to maint). + + * Build fix to adjust .gitignore to unignore a path that we started to track. + (merge aac6ff7b5b js/visual-studio later to maint). + + * A few implementation fixes in the notes API. + (merge 60fe477a0b mh/notes-duplicate-entries later to maint). + + * Fix an earlier regression to "git push --all" which should have + been forbidden when the target remote repository is set to be a + mirror. + (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint). + + * Fix an earlier regression in the test suite, which mistakenly + stopped running HTTPD tests. + (merge 3960290675 sg/git-test-boolean later to maint). + + * "git rebase --autostash ", when is + different from the current branch, incorrectly moved the tip of the + current branch, which has been corrected. + (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint). + + * Update support for Asciidoctor documentation toolchain. + (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint). + + * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0 + no longer works with the older one. + (merge f6461b82b9 bc/doc-use-docbook-5 later to maint). + + * The markup used in user-manual has been updated to work better with + asciidoctor. + (merge c4d2f6143a ma/user-manual-markup-update later to maint). + + * Make sure the grep machinery does not abort when seeing a payload + that is not UTF-8 even when JIT is not in use with PCRE1. + (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint). + + * The name of the blob object that stores the filter specification + for sparse cloning/fetching was interpreted in a wrong place in the + code, causing Git to abort. + + * "git log --decorate-refs-exclude=" was incorrectly + overruled when the "--simplify-by-decoration" option is used, which + has been corrected. + (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint). + + * The "upload-pack" (the counterpart of "git fetch") needs to disable + commit-graph when responding to a shallow clone/fetch request, but + the way this was done made Git panic, which has been corrected. + + * The object traversal machinery has been optimized not to load tree + objects when we are only interested in commit history. + (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint). + + * The object name parser for "Nth parent" syntax has been made more + robust against integer overflows. + (merge 59fa5f5a25 rs/nth-parent-parse later to maint). + + * The code used in following tags in "git fetch" has been optimized. + (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint). + + * Regression fix for progress output. + (merge 2bb74b53a4 sg/progress-fix later to maint). + + * A bug in merge-recursive code that triggers when a branch with a + symbolic link is merged with a branch that replaces it with a + directory has been fixed. + (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint). + + * The rename detection logic sorts a list of rename source candidates + by similarity to pick the best candidate, which means that a tie + between sources with the same similarity is broken by the original + location in the original candidate list (which is sorted by path). + Force the sorting by similarity done with a stable sort, which is + not promised by system supplied qsort(3), to ensure consistent + results across platforms. + (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint). + + * The code to skip "UTF" and "UTF-" prefix, when computing an advice + message, did not work correctly when the prefix was "UTF", which + has been fixed. + (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint). + + * The author names taken from SVN repositories may have extra leading + or trailing whitespaces, which are now munged away. + (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint). + + * "git rebase -i" showed a wrong HEAD while "reword" open the editor. + (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint). + + * A few simplification and bugfixes to PCRE interface. + (merge c581e4a749 ab/pcre-jit-fixes later to maint). + + * PCRE fixes. + (merge ff61681b46 cb/pcre1-cleanup later to maint). + + * "git range-diff" segfaulted when diff.noprefix configuration was + used, as it blindly expected the patch it internally generates to + have the standard a/ and b/ prefixes. The command now forces the + internal patch to be built without any prefix, not to be affected + by any end-user configuration. + (merge 937b76ed49 js/range-diff-noprefix later to maint). + + * "git stash apply" in a subdirectory of a secondary worktree failed + to access the worktree correctly, which has been corrected. + (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint). + + * The merge-recursive machinery is one of the most complex parts of + the system that accumulated cruft over time. This large series + cleans up the implementation quite a bit. + (merge b657047719 en/merge-recursive-cleanup later to maint). + + * Pretty-printed command line formatter (used in e.g. reporting the + command being run by the tracing API) had a bug that lost an + argument that is an empty string, which has been corrected. + (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint). + + * "git range-diff" failed to handle mode-only change, which has been + corrected. + (merge 2b6a9b13ca tg/range-diff-output-update later to maint). + + * Dev support update. + (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint). + + * "git format-patch -o " did an equivalent of "mkdir " + not "mkdir -p ", which was corrected. + + * "git stash save" lost local changes to submodules, which has been + corrected. + (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint). + + * The atomic push over smart HTTP transport did not work, which has + been corrected. + (merge 6f1194246a bc/smart-http-atomic-push later to maint). + + * Other code cleanup, docfix, build fix, etc. + (merge d1387d3895 en/fast-import-merge-doc later to maint). + (merge 1c24a54ea4 bm/repository-layout-typofix later to maint). + (merge 415b770b88 ds/midx-expire-repack later to maint). + (merge 19800bdc3f nd/diff-parseopt later to maint). + (merge 58166c2e9d tg/t0021-racefix later to maint). + (merge 7027f508c7 dl/compat-cleanup later to maint). + (merge e770fbfeff jc/test-cleanup later to maint). + (merge 1fd881d404 rs/trace2-dst-warning later to maint). + (merge 7e92756751 mh/http-urlmatch-cleanup later to maint). + (merge 9784f97321 mh/release-commit-memory-fix later to maint). + (merge 60d198d022 tb/banned-vsprintf-namefix later to maint). + (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint). + (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint). + (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint). + (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint). + (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint). + (merge 47b27c96fa ss/get-time-cleanup later to maint). + (merge dd2e50a84e jk/commit-graph-cleanup later to maint). + (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint). + (merge 40e747e89d dl/submodule-set-branch later to maint). + (merge 689a146c91 rs/commit-graph-use-list-count later to maint). + (merge 0eb7c37a8a js/doc-patch-text later to maint). + (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint). + (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint). + (merge af78249463 cc/svn-fe-py-shebang later to maint). + (merge 7bd97d6dff rs/alias-use-copy-array later to maint). + (merge c46ebc2496 sg/travis-help-debug later to maint). + (merge 24c681794f ps/my-first-contribution-alphasort later to maint). + (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint). + (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint). + (merge fe0ed5d5e9 am/visual-studio-config-fix later to maint). + (merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint). + (merge ddb3c856f3 as/shallow-slab-use-fix later to maint). + (merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint). + (merge 53d687bf5f ah/cleanups later to maint). + (merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint). + (merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint). + (merge d928a8388a am/t0028-utf16-tests later to maint). + (merge b05b40930e dl/t0000-skip-test-test later to maint). + (merge 03d3b1297c js/xdiffi-comment-updates later to maint). + (merge 57d8f4b4c7 js/doc-stash-save later to maint). + (merge 8c1cfd58e3 ta/t1308-typofix later to maint). + (merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint). + (merge 68b69211b2 bb/compat-util-comment-fix later to maint). + (merge 5cc6a4be11 rs/http-push-simplify later to maint). + (merge a81e42d235 rs/column-use-utf8-strnwidth later to maint). + (merge 062a309d36 rs/remote-curl-use-argv-array later to maint). + (merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint). + (merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint). + (merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint). + (merge 60e6569a12 js/mingw-needs-hiding-fix later to maint). + (merge 52bd3e4657 rl/gitweb-blame-prev-fix later to maint). diff --git a/third_party/git/Documentation/RelNotes/2.24.1.txt b/third_party/git/Documentation/RelNotes/2.24.1.txt new file mode 100644 index 000000000000..18104850fe4e --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.24.1.txt @@ -0,0 +1,8 @@ +Git v2.24.1 Release Notes +========================= + +This release merges up the fixes that appear in v2.14.6, v2.15.4, +v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues +CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351, +CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and +CVE-2019-19604; see the release notes for those versions for details. diff --git a/third_party/git/Documentation/RelNotes/2.24.2.txt b/third_party/git/Documentation/RelNotes/2.24.2.txt new file mode 100644 index 000000000000..0049f65503eb --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.24.2.txt @@ -0,0 +1,5 @@ +Git v2.24.2 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.24.3.txt b/third_party/git/Documentation/RelNotes/2.24.3.txt new file mode 100644 index 000000000000..5302e0f73b50 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.24.3.txt @@ -0,0 +1,5 @@ +Git v2.24.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.25.0.txt b/third_party/git/Documentation/RelNotes/2.25.0.txt new file mode 100644 index 000000000000..91ceb3492707 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.25.0.txt @@ -0,0 +1,370 @@ +Git 2.25 Release Notes +====================== + +Updates since v2.24 +------------------- + +Backward compatibility notes + + +UI, Workflows & Features + + * A tutorial on object enumeration has been added. + + * The branch description ("git branch --edit-description") has been + used to fill the body of the cover letters by the format-patch + command; this has been enhanced so that the subject can also be + filled. + + * "git rebase --preserve-merges" has been marked as deprecated; this + release stops advertising it in the "git rebase -h" output. + + * The code to generate multi-pack index learned to show (or not to + show) progress indicators. + + * "git apply --3way" learned to honor merge.conflictStyle + configuration variable, like merges would. + + * The custom format for "git log --format=" learned the l/L + placeholder that is similar to e/E that fills in the e-mail + address, but only the local part on the left side of '@'. + + * Documentation pages for "git shortlog" now list commit limiting + options explicitly. + + * The patterns to detect function boundary for Elixir language has + been added. + + * The completion script (in contrib/) learned that the "--onto" + option of "git rebase" can take its argument as the value of the + option. + + * The userdiff machinery has been taught that "async def" is another + way to begin a "function" in Python. + + * "git range-diff" learned to take the "--notes=" and the + "--no-notes" options to control the commit notes included in the + log message that gets compared. + + * "git rev-parse --show-toplevel" run outside of any working tree did + not error out, which has been corrected. + + * A few commands learned to take the pathspec from the standard input + or a named file, instead of taking it as the command line + arguments, with the "--pathspec-from-file" option. + + * "git submodule" learned a subcommand "set-url". + + * "git log" family learned "--pretty=reference" that gives the name + of a commit in the format that is often used to refer to it in log + messages. + + * The interaction between "git clone --recurse-submodules" and + alternate object store was ill-designed. The documentation and + code have been taught to make more clear recommendations when the + users see failures. + + * Management of sparsely checked-out working tree has gained a + dedicated "sparse-checkout" command. + + * Miscellaneous small UX improvements on "git-p4". + + * "git sparse-checkout list" subcommand learned to give its output in + a more concise form when the "cone" mode is in effect. + + +Performance, Internal Implementation, Development Support etc. + + * Debugging support for lazy cloning has been a bit improved. + + * Move the definition of a set of bitmask constants from 0ctal + literal to (1U< macros that must + appear in C99 systems have been removed. + + * Recently we have declared that GIT_TEST_* variables take the + usual boolean values (it used to be that some used "non-empty + means true" and taking GIT_TEST_VAR=YesPlease as true); make + sure we notice and fail when non-bool strings are given to + these variables. + + * Users of oneway_merge() (like "reset --hard") learned to take + advantage of fsmonitor to avoid unnecessary lstat(2) calls. + + * Performance tweak on "git push" into a repository with many refs + that point at objects we have never heard of. + + * PerfTest fix to avoid stale result mixed up with the latest round + of test results. + + * Hide lower-level verify_signed-buffer() API as a pure helper to + implement the public check_signature() function, in order to + encourage new callers to use the correct and more strict + validation. + + * Unnecessary reading of state variables back from the disk during + sequencer operation has been reduced. + + * The code has been made to avoid gmtime() and localtime() and prefer + their reentrant counterparts. + + * In a repository with many packfiles, the cost of the procedure that + avoids registering the same packfile twice was unnecessarily high + by using an inefficient search algorithm, which has been corrected. + + * Redo "git name-rev" to avoid recursive calls. + + * FreeBSD CI support via Cirrus-CI has been added. + + +Fixes since v2.24 +----------------- + + * "rebase -i" ceased to run post-commit hook by mistake in an earlier + update, which has been corrected. + + * "git notes copy $original" ought to copy the notes attached to the + original object to HEAD, but a mistaken tightening to command line + parameter validation made earlier disabled that feature by mistake. + + * When all files from some subdirectory were renamed to the root + directory, the directory rename heuristics would fail to detect that + as a rename/merge of the subdirectory to the root directory, which has + been corrected. + + * Code clean-up and a bugfix in the logic used to tell worktree local + and repository global refs apart. + (merge f45f88b2e4 sg/dir-trie-fixes later to maint). + + * "git stash save" in a working tree that is sparsely checked out + mistakenly removed paths that are outside the area of interest. + (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint). + + * "git rev-parse --git-path HEAD.lock" did not give the right path + when run in a secondary worktree. + (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint). + + * "git merge --no-commit" needs "--no-ff" if you do not want to move + HEAD, which has been corrected in the manual page for "git bisect". + (merge 8dd327b246 ma/bisect-doc-sample-update later to maint). + + * "git worktree add" internally calls "reset --hard" that should not + descend into submodules, even when submodule.recurse configuration + is set, but it was affected. This has been corrected. + (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint). + + * Messages from die() etc. can be mixed up from multiple processes + without even line buffering on Windows, which has been worked + around. + (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint). + + * HTTP transport had possible allocator/deallocator mismatch, which + has been corrected. + + * The watchman integration for fsmonitor was racy, which has been + corrected to be more conservative. + (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint). + + * Fetching from multiple remotes into the same repository in parallel + had a bad interaction with the recent change to (optionally) update + the commit-graph after a fetch job finishes, as these parallel + fetches compete with each other. Which has been corrected. + + * Recent update to "git stash pop" made the command empty the index + when run with the "--quiet" option, which has been corrected. + + * "git fetch" codepath had a big "do not lazily fetch missing objects + when I ask if something exists" switch. This has been corrected by + marking the "does this thing exist?" calls with "if not please do not + lazily fetch it" flag. + + * Test update to avoid wasted cycles. + (merge e0316695ec sg/skip-skipped-prereq later to maint). + + * Error handling after "git push" finishes sending the packdata and + waits for the response to the remote side has been improved. + (merge ad7a403268 jk/send-pack-remote-failure later to maint). + + * Some codepaths in "gitweb" that forgot to escape URLs generated + based on end-user input have been corrected. + (merge a376e37b2c jk/gitweb-anti-xss later to maint). + + * CI jobs for macOS has been made less chatty when updating perforce + package used during testing. + (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint). + + * "git unpack-objects" used to show progress based only on the number + of received and unpacked objects, which stalled when it has to + handle an unusually large object. It now shows the throughput as + well. + (merge bae60ba7e9 sg/unpack-progress-throughput later to maint). + + * The sequencer machinery compared the HEAD and the state it is + attempting to commit to decide if the result would be a no-op + commit, even when amending a commit, which was incorrect, and + has been corrected. + + * The code to parse GPG output used to assume incorrectly that the + finterprint for the primary key would always be present for a valid + signature, which has been corrected. + (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint). + + * "git submodule status" and "git submodule status --cached" show + different things, but the documentation did not cover them + correctly, which has been corrected. + (merge 8d483c8408 mg/doc-submodule-status-cached later to maint). + + * "git reset --patch $object" without any pathspec should allow a + tree object to be given, but incorrectly required a committish, + which has been corrected. + + * "git submodule status" that is run from a subdirectory of the + superproject did not work well, which has been corrected. + (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint). + + * The revision walking machinery uses resources like per-object flag + bits that need to be reset before a new iteration of walking + begins, but the resources related to topological walk were not + cleared correctly, which has been corrected. + (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint). + + * TravisCI update. + (merge 176441bfb5 sg/osx-force-gcc-9 later to maint). + + * While running "revert" or "cherry-pick --edit" for multiple + commits, a recent regression incorrectly detected "nothing to + commit, working tree clean", instead of replaying the commits, + which has been corrected. + (merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint). + + * Work around a issue where a FD that is left open when spawning a + child process and is kept open in the child can interfere with the + operation in the parent process on Windows. + + * One kind of progress messages were always given during commit-graph + generation, instead of following the "if it takes more than two + seconds, show progress" pattern, which has been corrected. + + * "git rebase" did not work well when format.useAutoBase + configuration variable is set, which has been corrected. + + * The "diff" machinery learned not to lose added/removed blank lines + in the context when --ignore-blank-lines and --function-context are + used at the same time. + (merge 0bb313a552 rs/xdiff-ignore-ws-w-func-context later to maint). + + * The test on "fast-import" used to get stuck when "fast-import" died + in the middle. + (merge 0d9b0d7885 sg/t9300-robustify later to maint). + + * "git format-patch" can take a set of configured format.notes values + to specify which notes refs to use in the log message part of the + output. The behaviour of this was not consistent with multiple + --notes command line options, which has been corrected. + (merge e0f9095aaa dl/format-patch-notes-config-fixup later to maint). + + * "git p4" used to ignore lfs.storage configuration variable, which + has been corrected. + (merge ea94b16fb8 rb/p4-lfs later to maint). + + * Assorted fixes to the directory traversal API. + (merge 6836d2fe06 en/fill-directory-fixes later to maint). + + * Forbid pathnames that the platform's filesystem cannot represent on + MinGW. + (merge 4dc42c6c18 js/mingw-reserved-filenames later to maint). + + * "git rebase --signoff" stopped working when the command was written + in C, which has been corrected. + (merge 4fe7e43c53 en/rebase-signoff-fix later to maint). + + * An earlier update to Git for Windows declared that a tree object is + invalid if it has a path component with backslash in it, which was + overly strict, which has been corrected. The only protection the + Windows users need is to prevent such path (or any path that their + filesystem cannot check out) from entering the index. + (merge 224c7d70fa js/mingw-loosen-overstrict-tree-entry-checks later to maint). + + * The code to write split commit-graph file(s) upon fetching computed + bogus value for the parameter used in splitting the resulting + files, which has been corrected. + (merge 63020f175f ds/commit-graph-set-size-mult later to maint). + + * Other code cleanup, docfix, build fix, etc. + (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint). + (merge 8b656572ca sg/commit-graph-usage-fix later to maint). + (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint). + (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint). + (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint). + (merge 270de6acbe en/t6024-style later to maint). + (merge 14c4776d75 ns/test-desc-typofix later to maint). + (merge 68d40f30c4 dj/typofix-merge-strat later to maint). + (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint). + (merge 169bed7421 rs/parse-options-dup-null-fix later to maint). + (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint). + (merge b018719927 ma/t7004 later to maint). + (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint). + (merge 46efd28be1 ep/guard-kset-tar-headers later to maint). + (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint). + (merge f0e58b3fe8 pb/submodule-update-fetches later to maint). + (merge 2a02262078 dl/t5520-cleanup later to maint). + (merge a4fb016ba1 js/pkt-line-h-typofix later to maint). + (merge 54a7a64613 rs/simplify-prepare-cmd later to maint). + (merge 3eae30e464 jk/lore-is-the-archive later to maint). + (merge 14b7664df8 dl/lore-is-the-archive later to maint). + (merge 0e40a73a4c po/bundle-doc-clonable later to maint). + (merge e714b898c6 as/t7812-missing-redirects-fix later to maint). + (merge 528d9e6d01 jk/perf-wo-git-dot-pm later to maint). + (merge fc42f20e24 sg/test-squelch-noise-in-commit-bulk later to maint). + (merge c64368e3a2 bc/t9001-zsh-in-posix-emulation-mode later to maint). + (merge 11de8dd7ef dr/branch-usage-casefix later to maint). + (merge e05e8cf074 rs/archive-zip-code-cleanup later to maint). + (merge 147ee35558 rs/commit-export-env-simplify later to maint). + (merge 4507ecc771 rs/patch-id-use-oid-to-hex later to maint). + (merge 51a0a4ed95 mr/bisect-use-after-free later to maint). + (merge cc2bd5c45d pb/submodule-doc-xref later to maint). + (merge df5be01669 ja/doc-markup-cleanup later to maint). + (merge 7c5cea7242 mr/bisect-save-pointer-to-const-string later to maint). + (merge 20a67e8ce9 js/use-test-tool-on-path later to maint). + (merge 4e61b2214d ew/packfile-syscall-optim later to maint). + (merge ace0f86c7f pb/clarify-line-log-doc later to maint). + (merge 763a59e71c en/merge-recursive-oid-eq-simplify later to maint). + (merge 4e2c4c0d4f do/gitweb-typofix-in-comments later to maint). + (merge 421c0ffb02 jb/doc-multi-pack-idx-fix later to maint). + (merge f8740c586b pm/am-in-body-header-doc-update later to maint). + (merge 5814d44d9b tm/doc-submodule-absorb-fix later to maint). diff --git a/third_party/git/Documentation/RelNotes/2.25.1.txt b/third_party/git/Documentation/RelNotes/2.25.1.txt new file mode 100644 index 000000000000..cd869b02bbbc --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.25.1.txt @@ -0,0 +1,55 @@ +Git 2.25.1 Release Notes +======================== + +Fixes since v2.25 +----------------- + + * "git commit" gives output similar to "git status" when there is + nothing to commit, but without honoring the advise.statusHints + configuration variable, which has been corrected. + + * has_object_file() said "no" given an object registered to the + system via pretend_object_file(), making it inconsistent with + read_object_file(), causing lazy fetch to attempt fetching an + empty tree from promisor remotes. + + * The code that tries to skip over the entries for the paths in a + single directory using the cache-tree was not careful enough + against corrupt index file. + + * Complete an update to tutorial that encourages "git switch" over + "git checkout" that was done only half-way. + + * Reduce unnecessary round-trip when running "ls-remote" over the + stateless RPC mechanism. + + * "git restore --staged" did not correctly update the cache-tree + structure, resulting in bogus trees to be written afterwards, which + has been corrected. + + * The code recently added to move to the entry beyond the ones in the + same directory in the index in the sparse-cone mode did not count + the number of entries to skip over incorrectly, which has been + corrected. + + * Work around test breakages caused by custom regex engine used in + libasan, when address sanitizer is used with more recent versions + of gcc and clang. + + * "git fetch --refmap=" option has got a better documentation. + + * Corner case bugs in "git clean" that stems from a (necessarily for + performance reasons) awkward calling convention in the directory + enumeration API has been corrected. + + * "git grep --no-index" should not get affected by the contents of + the .gitmodules file but when "--recurse-submodules" is given or + the "submodule.recurse" variable is set, it did. Now these + settings are ignored in the "--no-index" mode. + + * Technical details of the bundle format has been documented. + + * Unhelpful warning messages during documentation build have been + squelched. + +Also contains various documentation updates, code clean-ups and minor fixups. diff --git a/third_party/git/Documentation/RelNotes/2.25.2.txt b/third_party/git/Documentation/RelNotes/2.25.2.txt new file mode 100644 index 000000000000..303c53a17fdc --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.25.2.txt @@ -0,0 +1,60 @@ +Git 2.25.2 Release Notes +======================== + +Fixes since v2.25.1 +------------------- + + * Minor bugfixes to "git add -i" that has recently been rewritten in C. + + * An earlier update to show the location of working tree in the error + message did not consider the possibility that a git command may be + run in a bare repository, which has been corrected. + + * The "--recurse-submodules" option of various subcommands did not + work well when run in an alternate worktree, which has been + corrected. + + * Running "git rm" on a submodule failed unnecessarily when + .gitmodules is only cache-dirty, which has been corrected. + + * "git rebase -i" identifies existing commits in its todo file with + their abbreviated object name, which could become ambigous as it + goes to create new commits, and has a mechanism to avoid ambiguity + in the main part of its execution. A few other cases however were + not covered by the protection against ambiguity, which has been + corrected. + + * The index-pack code now diagnoses a bad input packstream that + records the same object twice when it is used as delta base; the + code used to declare a software bug when encountering such an + input, but it is an input error. + + * The code to automatically shrink the fan-out in the notes tree had + an off-by-one bug, which has been killed. + + * "git check-ignore" did not work when the given path is explicitly + marked as not ignored with a negative entry in the .gitignore file. + + * The merge-recursive machinery failed to refresh the cache entry for + a merge result in a couple of places, resulting in an unnecessary + merge failure, which has been fixed. + + * Fix for a bug revealed by a recent change to make the protocol v2 + the default. + + * "git merge signed-tag" while lacking the public key started to say + "No signature", which was utterly wrong. This regression has been + reverted. + + * MinGW's poll() emulation has been improved. + + * "git show" and others gave an object name in raw format in its + error output, which has been corrected to give it in hex. + + * Both "git ls-remote -h" and "git grep -h" give short usage help, + like any other Git subcommand, but it is not unreasonable to expect + that the former would behave the same as "git ls-remote --head" + (there is no other sensible behaviour for the latter). The + documentation has been updated in an attempt to clarify this. + +Also contains various documentation updates, code clean-ups and minor fixups. diff --git a/third_party/git/Documentation/RelNotes/2.25.3.txt b/third_party/git/Documentation/RelNotes/2.25.3.txt new file mode 100644 index 000000000000..15f7f21f1002 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.25.3.txt @@ -0,0 +1,5 @@ +Git v2.25.3 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.25.4.txt b/third_party/git/Documentation/RelNotes/2.25.4.txt new file mode 100644 index 000000000000..0dbb5daeec3e --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.25.4.txt @@ -0,0 +1,5 @@ +Git v2.25.4 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.26.0.txt b/third_party/git/Documentation/RelNotes/2.26.0.txt new file mode 100644 index 000000000000..3a7a734c2694 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.26.0.txt @@ -0,0 +1,341 @@ +Git 2.26 Release Notes +====================== + +Updates since v2.25 +------------------- + +Backward compatibility notes + + * "git rebase" uses a different backend that is based on the 'merge' + machinery by default. There are a few known differences in the + behaviour from the traditional machinery based on patch+apply. + + If your workflow is negatively affected by this change, please + report it to git@vger.kernel.org so that we can take a look into + it. After doing so, you can set the 'rebase.backend' configuration + variable to 'apply', in order to use the old default behaviour in + the meantime. + + +UI, Workflows & Features + + * Sample credential helper for using .netrc has been updated to work + out of the box. + + * gpg.minTrustLevel configuration variable has been introduced to + tell various signature verification codepaths the required minimum + trust level. + + * The command line completion (in contrib/) learned to complete + subcommands and arguments to "git worktree". + + * Disambiguation logic to tell revisions and pathspec apart has been + tweaked so that backslash-escaped glob special characters do not + count in the "wildcards are pathspec" rule. + + * One effect of specifying where the GIT_DIR is (either with the + environment variable, or with the "git --git-dir= cmd" + option) is to disable the repository discovery. This has been + placed a bit more stress in the documentation, as new users often + get confused. + + * Two help messages given when "git add" notices the user gave it + nothing to add have been updated to use advise() API. + + * A new version of fsmonitor-watchman hook has been introduced, to + avoid races. + + * "git config" learned to show in which "scope", in addition to in + which file, each config setting comes from. + + * The basic 7 colors learned the brighter counterparts + (e.g. "brightred"). + + * "git sparse-checkout" learned a new "add" subcommand. + + * A configuration element used for credential subsystem can now use + wildcard pattern to specify for which set of URLs the entry + applies. + + * "git clone --recurse-submodules --single-branch" now uses the same + single-branch option when cloning the submodules. + + * "git rm" and "git stash" learns the new "--pathspec-from-file" + option. + + * "git am --show-current-patch" is a way to show the piece of e-mail + for the stopped step, which is not suitable to directly feed "git + apply" (it is designed to be a good "git am" input). It learned a + new option to show only the patch part. + + * Handling of conflicting renames in merge-recursive have further + been made consistent with how existing codepaths try to mimic what + is done to add/add conflicts. + + +Performance, Internal Implementation, Development Support etc. + + * Tell .editorconfig that in this project, *.txt files are indented + with tabs. + + * The test-lint machinery knew to check "VAR=VAL shell_function" + construct, but did not check "VAR= shell_function", which has been + corrected. + + * Replace "git config --bool" calls with "git config --type=bool" in + sample templates. + + * The effort to move "git-add--interactive" to C continues. + + * Improve error message generation for "git submodule add". + + * Preparation of test scripts for the day when the object names will + use SHA-256 continues. + + * Warn programmers about pretend_object_file() that allows the code + to tentatively use in-core objects. + + * The way "git pack-objects" reuses objects stored in existing pack + to generate its result has been improved. + + * The transport protocol version 2 becomes the default one. + + * Traditionally, we avoided threaded grep while searching in objects + (as opposed to files in the working tree) as accesses to the object + layer is not thread-safe. This limitation is getting lifted. + + * "git rebase -i" (and friends) used to unnecessarily check out the + tip of the branch to be rebased, which has been corrected. + + * A low-level API function get_oid(), that accepts various ways to + name an object, used to issue end-user facing error messages + without l10n, which has been updated to be translatable. + + * Unneeded connectivity check is now disabled in a partial clone when + fetching into it. + + * Some rough edges in the sparse-checkout feature, especially around + the cone mode, have been cleaned up. + + * The diff-* plumbing family of subcommands now pay attention to the + diff.wsErrorHighlight configuration, which has been ignored before; + this allows "git add -p" to also show the whitespace problems to + the end user. + + * Some codepaths were given a repository instance as a parameter to + work in the repository, but passed the_repository instance to its + callees, which has been cleaned up (somewhat). + + * Memory footprint and performance of "git name-rev" has been + improved. + + * The object reachability bitmap machinery and the partial cloning + machinery were not prepared to work well together, because some + object-filtering criteria that partial clones use inherently rely + on object traversal, but the bitmap machinery is an optimization + to bypass that object traversal. There however are some cases + where they can work together, and they were taught about them. + + * "git rebase" has learned to use the merge backend (i.e. the + machinery that drives "rebase -i") by default, while allowing + "--apply" option to use the "apply" backend (e.g. the moral + equivalent of "format-patch piped to am"). The rebase.backend + configuration variable can be set to customize. + + * Underlying machinery of "git bisect--helper" is being refactored + into pieces that are more easily reused. + + +Fixes since v2.25 +----------------- + + * "git commit" gives output similar to "git status" when there is + nothing to commit, but without honoring the advise.statusHints + configuration variable, which has been corrected. + + * has_object_file() said "no" given an object registered to the + system via pretend_object_file(), making it inconsistent with + read_object_file(), causing lazy fetch to attempt fetching an + empty tree from promisor remotes. + + * Complete an update to tutorial that encourages "git switch" over + "git checkout" that was done only half-way. + + * C pedantry ;-) fix. + + * The code that tries to skip over the entries for the paths in a + single directory using the cache-tree was not careful enough + against corrupt index file. + + * Reduce unnecessary round-trip when running "ls-remote" over the + stateless RPC mechanism. + + * "git restore --staged" did not correctly update the cache-tree + structure, resulting in bogus trees to be written afterwards, which + has been corrected. + + * The code recently added to move to the entry beyond the ones in the + same directory in the index in the sparse-cone mode did not count + the number of entries to skip over incorrectly, which has been + corrected. + + * Rendering by "git log --graph" of ancestry lines leading to a merge + commit were made suboptimal to waste vertical space a bit with a + recent update, which has been corrected. + + * Work around test breakages caused by custom regex engine used in + libasan, when address sanitizer is used with more recent versions + of gcc and clang. + + * Minor bugfixes to "git add -i" that has recently been rewritten in C. + + * "git fetch --refmap=" option has got a better documentation. + + * "git checkout X" did not correctly fail when X is not a local + branch but could name more than one remote-tracking branches + (i.e. to be dwimmed as the starting point to create a corresponding + local branch), which has been corrected. + (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint). + + * Corner case bugs in "git clean" that stems from a (necessarily for + performance reasons) awkward calling convention in the directory + enumeration API has been corrected. + + * A fetch that is told to recursively fetch updates in submodules + inevitably produces reams of output, and it becomes hard to spot + error messages. The command has been taught to enumerate + submodules that had errors at the end of the operation. + (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint). + + * The "--recurse-submodules" option of various subcommands did not + work well when run in an alternate worktree, which has been + corrected. + + * Futureproofing a test not to depend on the current implementation + detail. + + * Running "git rm" on a submodule failed unnecessarily when + .gitmodules is only cache-dirty, which has been corrected. + + * C pedantry ;-) fix. + + * "git grep --no-index" should not get affected by the contents of + the .gitmodules file but when "--recurse-submodules" is given or + the "submodule.recurse" variable is set, it did. Now these + settings are ignored in the "--no-index" mode. + + * Technical details of the bundle format has been documented. + + * Unhelpful warning messages during documentation build have been squelched. + + * "git rebase -i" identifies existing commits in its todo file with + their abbreviated object name, which could become ambiguous as it + goes to create new commits, and has a mechanism to avoid ambiguity + in the main part of its execution. A few other cases however were + not covered by the protection against ambiguity, which has been + corrected. + + * Allow the rebase.missingCommitsCheck configuration to kick in when + "rebase --edit-todo" and "rebase --continue" restarts the procedure. + (merge 5a5445d878 ag/edit-todo-drop-check later to maint). + + * The way "git submodule status" reports an initialized but not yet + populated submodule has not been reimplemented correctly when a + part of the "git submodule" command was rewritten in C, which has + been corrected. + (merge f38c92452d pk/status-of-uncloned-submodule later to maint). + + * The code to automatically shrink the fan-out in the notes tree had + an off-by-one bug, which has been killed. + + * The index-pack code now diagnoses a bad input packstream that + records the same object twice when it is used as delta base; the + code used to declare a software bug when encountering such an + input, but it is an input error. + + + * The code to compute the commit-graph has been taught to use a more + robust way to tell if two object directories refer to the same + thing. + (merge a7df60cac8 tb/commit-graph-object-dir later to maint). + + * "git remote rename X Y" needs to adjust configuration variables + (e.g. branch..remote) whose value used to be X to Y. + branch..pushRemote is now also updated. + + * Update to doc-diff. + + * Doc markup fix. + + * "git check-ignore" did not work when the given path is explicitly + marked as not ignored with a negative entry in the .gitignore file. + + * The merge-recursive machinery failed to refresh the cache entry for + a merge result in a couple of places, resulting in an unnecessary + merge failure, which has been fixed. + + * Fix for a bug revealed by a recent change to make the protocol v2 + the default. + + * In rare cases "git worktree add " could think that + was already a registered worktree even when it wasn't and refuse + to add the new worktree. This has been corrected. + (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint). + + * "git push" should stop from updating a branch that is checked out + when receive.denyCurrentBranch configuration is set, but it failed + to pay attention to checkouts in secondary worktrees. This has + been corrected. + (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint). + + * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and + checked it out, even when the BRANCH is checked out in a different + worktree. This has been corrected. + (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint). + + * "git describe" in a repository with multiple root commits sometimes + gave up looking for the best tag to describe a given commit with + too early, which has been adjusted. + + * "git merge signed-tag" while lacking the public key started to say + "No signature", which was utterly wrong. This regression has been + reverted. + + * MinGW's poll() emulation has been improved. + + * "git show" and others gave an object name in raw format in its + error output, which has been corrected to give it in hex. + + * "git fetch" over HTTP walker protocol did not show any progress + output. We inherently do not know how much work remains, but still + we can show something not to bore users. + (merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint). + + * Both "git ls-remote -h" and "git grep -h" give short usage help, + like any other Git subcommand, but it is not unreasonable to expect + that the former would behave the same as "git ls-remote --head" + (there is no other sensible behaviour for the latter). The + documentation has been updated in an attempt to clarify this. + + * Other code cleanup, docfix, build fix, etc. + (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint). + (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint). + (merge c513a958b6 ss/t6025-modernize later to maint). + (merge b441717256 dl/test-must-fail-fixes later to maint). + (merge d031049da3 mt/sparse-checkout-doc-update later to maint). + (merge 145136a95a jc/skip-prefix later to maint). + (merge 5290d45134 jk/alloc-cleanups later to maint). + (merge 7a9f8ca805 rs/parse-options-concat-dup later to maint). + (merge 517b60564e rs/strbuf-insertstr later to maint). + (merge f696a2b1c8 jk/mailinfo-cleanup later to maint). + (merge de26f02db1 js/test-avoid-pipe later to maint). + (merge a2dc43414c es/doc-mentoring later to maint). + (merge 02bbbe9df9 es/worktree-cleanup later to maint). + (merge 2ce6d075fa rs/micro-cleanups later to maint). + (merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint). + (merge 3c29e21eb0 ma/test-cleanup later to maint). + (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint). + (merge d68ce906c7 rs/commit-graph-code-simplification later to maint). + (merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint). + (merge fd0bc17557 kk/complete-diff-color-moved later to maint). + (merge 65bf820d0e en/test-cleanup later to maint). diff --git a/third_party/git/Documentation/RelNotes/2.26.1.txt b/third_party/git/Documentation/RelNotes/2.26.1.txt new file mode 100644 index 000000000000..1b4ecb3fdc54 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.26.1.txt @@ -0,0 +1,5 @@ +Git v2.26.1 Release Notes +========================= + +This release merges the security fix that appears in v2.17.4; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.26.2.txt b/third_party/git/Documentation/RelNotes/2.26.2.txt new file mode 100644 index 000000000000..d434d0c695e4 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.26.2.txt @@ -0,0 +1,5 @@ +Git v2.26.2 Release Notes +========================= + +This release merges the security fix that appears in v2.17.5; see +the release notes for that version for details. diff --git a/third_party/git/Documentation/RelNotes/2.27.0.txt b/third_party/git/Documentation/RelNotes/2.27.0.txt new file mode 100644 index 000000000000..15518d06c111 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.27.0.txt @@ -0,0 +1,525 @@ +Git 2.27 Release Notes +====================== + +Updates since v2.26 +------------------- + +Backward compatibility notes + + * When "git describe C" finds that commit C is pointed by a signed or + annotated tag, which records T as its tagname in the object, the + command gives T as its answer. Even if the user renames or moves + such a tag from its natural location in the "refs/tags/" hierarchy, + "git describe C" would still give T as the answer, but in such a + case "git show T^0" would no longer work as expected. There may be + nothing at "refs/tags/T" or even worse there may be a different tag + instead. + + Starting from this version, "git describe" will always use the + "long" version, as if the "--long" option were given, when giving + its output based on such a misplaced tag to work around the problem. + + * "git pull" issues a warning message until the pull.rebase + configuration variable is explicitly given, which some existing + users may find annoying---those who prefer not to rebase need to + set the variable to false to squelch the warning. + + * The transport protocol version 2, which was promoted to the default + in Git 2.26 release, turned out to have some remaining rough edges, + so it has been demoted from the default. + + +UI, Workflows & Features + + * A handful of options to configure SSL when talking to proxies have + been added. + + * Smudge/clean conversion filters are now given more information + (e.g. the object of the tree-ish in which the blob being converted + appears, in addition to its path, which has already been given). + + * When "git describe C" finds an annotated tag with tagname A to be + the best name to explain commit C, and the tag is stored in a + "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the + command gave a warning message but used A (not B) to describe C. + If C is exactly at the tag, the describe output would be "A", but + "git rev-parse A^0" would not be equal as "git rev-parse C^0". The + behavior of the command has been changed to use the "long" form + i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse. + + * "git pull" learned to warn when no pull.rebase configuration + exists, and neither --[no-]rebase nor --ff-only is given (which + would result a merge). + + * "git p4" learned four new hooks and also "--no-verify" option to + bypass them (and the existing "p4-pre-submit" hook). + + * "git pull" shares many options with underlying "git fetch", but + some of them were not documented and some of those that would make + sense to pass down were not passed down. + + * "git rebase" learned the "--no-gpg-sign" option to countermand + commit.gpgSign the user may have. + + * The output from "git format-patch" uses RFC 2047 encoding for + non-ASCII letters on From: and Subject: headers, so that it can + directly be fed to e-mail programs. A new option has been added + to produce these headers in raw. + + * "git log" learned "--show-pulls" that helps pathspec limited + history views; a merge commit that takes the whole change from a + side branch, which is normally omitted from the output, is shown + in addition to the commits that introduce real changes. + + * The interactive input from various codepaths are consolidated and + any prompt possibly issued earlier are fflush()ed before we read. + + * Allow "git rebase" to reapply all local commits, even if the may be + already in the upstream, without checking first. + + * The 'pack.useSparse' configuration variable now defaults to 'true', + enabling an optimization that has been experimental since Git 2.21. + + * "git rebase" happens to call some hooks meant for "checkout" and + "commit" by this was not a designed behaviour than historical + accident. This has been documented. + + * "git merge" learns the "--autostash" option. + + * "sparse-checkout" UI improvements. + + * "git update-ref --stdin" learned a handful of new verbs to let the + user control ref update transactions more explicitly, which helps + as an ingredient to implement two-phase commit-style atomic + ref-updates across multiple repositories. + + * "git commit-graph write" learned different ways to write out split + files. + + * Introduce an extension to the commit-graph to make it efficient to + check for the paths that were modified at each commit using Bloom + filters. + + * The approxidate parser learns to parse seconds with fraction and + ignore fractional part. + + * The userdiff patterns for Markdown documents have been added. + + * The sparse-checkout patterns have been forbidden from excluding all + paths, leaving an empty working tree, for a long time. This + limitation has been lifted. + + * "git restore --staged --worktree" now defaults to take the contents + out of "HEAD", instead of erring out. + + * "git p4" learned to recover from a (broken) state where a directory + and a file are recorded at the same path in the Perforce repository + the same way as their clients do. + + * "git multi-pack-index repack" has been taught to honor some + repack.* configuration variables. + + +Performance, Internal Implementation, Development Support etc. + + * The advise API has been revamped to allow more systematic enumeration of + advice knobs in the future. + + * SHA-256 transition continues. + + * The code to interface with GnuPG has been refactored. + + * "git stash" has kept an escape hatch to use the scripted version + for a few releases, which got stale. It has been removed. + + * Enable tests that require GnuPG on Windows. + + * Minor test usability improvement. + + * Trace2 enhancement to allow logging of the environment variables. + + * Test clean-up continues. + + * Perf-test update. + + * A Windows-specific test element has been made more robust against + misuse from both user's environment and programmer's errors. + + * Various tests have been updated to work around issues found with + shell utilities that come with busybox etc. + + * The config API made mixed uses of int and size_t types to represent + length of various pieces of text it parsed, which has been updated + to use the correct type (i.e. size_t) throughout. + + * The "--decorate-refs" and "--decorate-refs-exclude" options "git + log" takes have learned a companion configuration variable + log.excludeDecoration that sits at the lowest priority in the + family. + + * A new CI job to build and run test suite on linux with musl libc + has been added. + + * Update the CI configuration to use GitHub Actions, retiring the one + based on Azure Pipelines. + + * The directory traversal code had redundant recursive calls which + made its performance characteristics exponential with respect to + the depth of the tree, which was corrected. + + * "git blame" learns to take advantage of the "changed-paths" Bloom + filter stored in the commit-graph file. + + * The "bugreport" tool has been added. + + * The object walk with object filter "--filter=tree:0" can now take + advantage of the pack bitmap when available. + + * Instead of always building all branches at GitHub via Actions, + users can specify which branches to build. + + * Codepaths that show progress meter have been taught to also use the + start_progress() and the stop_progress() calls as a "region" to be + traced. + + * Instead of downloading Windows SDK for CI jobs for windows builds + from an external site (wingit.blob.core.windows.net), use the one + created in the windows-build job, to work around quota issues at + the external site. + + +Fixes since v2.26 +----------------- + + * The real_path() convenience function can easily be misused; with a + bit of code refactoring in the callers' side, its use has been + eliminated. + (merge 49d3c4b481 am/real-path-fix later to maint). + + * Update "git p4" to work with Python 3. + (merge 6bb40ed20a yz/p4-py3 later to maint). + + * The mechanism to prevent "git commit" from making an empty commit + or amending during an interrupted cherry-pick was broken during the + rewrite of "git rebase" in C, which has been corrected. + (merge 430b75f720 pw/advise-rebase-skip later to maint). + + * Fix "git checkout --recurse-submodules" of a nested submodule + hierarchy. + (merge 846f34d351 pb/recurse-submodules-fix later to maint). + + * The "--fork-point" mode of "git rebase" regressed when the command + was rewritten in C back in 2.20 era, which has been corrected. + (merge f08132f889 at/rebase-fork-point-regression-fix later to maint). + + * The import-tars importer (in contrib/fast-import/) used to create + phony files at the top-level of the repository when the archive + contains global PAX headers, which made its own logic to detect and + omit the common leading directory ineffective, which has been + corrected. + (merge c839fcff65 js/import-tars-do-not-make-phony-files-from-pax-headers later to maint). + + * Simplify the commit ancestry connectedness check in a partial clone + repository in which "promised" objects are assumed to be obtainable + lazily on-demand from promisor remote repositories. + (merge 2b98478c6f jt/connectivity-check-optim-in-partial-clone later to maint). + + * The server-end of the v2 protocol to serve "git clone" and "git + fetch" was not prepared to see a delim packets at unexpected + places, which led to a crash. + (merge cacae4329f jk/harden-protocol-v2-delim-handling later to maint). + + * When fed a midx that records no objects, some codepaths tried to + loop from 0 through (num_objects-1), which, due to integer + arithmetic wrapping around, made it nonsense operation with out of + bounds array accesses. The code has been corrected to reject such + an midx file. + (merge 796d61cdc0 dr/midx-avoid-int-underflow later to maint). + + * Utitiles run via the run_command() API were not spawned correctly + on Cygwin, when the paths to them are given as a full path with + backslashes. + (merge 05ac8582bc ak/run-command-on-cygwin-fix later to maint). + + * "git pull --rebase" tried to run a rebase even after noticing that + the pull results in a fast-forward and no rebase is needed nor + sensible, for the past few years due to a mistake nobody noticed. + (merge fbae70ddc6 en/pull-do-not-rebase-after-fast-forwarding later to maint). + + * "git rebase" with the merge backend did not work well when the + rebase.abbreviateCommands configuration was set. + (merge de9f1d3ef4 ag/rebase-merge-allow-ff-under-abbrev-command later to maint). + + * The logic to auto-follow tags by "git clone --single-branch" was + not careful to avoid lazy-fetching unnecessary tags, which has been + corrected. + (merge 167a575e2d jk/use-quick-lookup-in-clone-for-tag-following later to maint). + + * "git rebase -i" did not leave the reflog entries correctly. + (merge 1f6965f994 en/sequencer-reflog-action later to maint). + + * The more aggressive updates to remote-tracking branches we had for + the past 7 years or so were not reflected in the documentation, + which has been corrected. + (merge a44088435c pb/pull-fetch-doc later to maint). + + * We've left the command line parsing of "git log :/a/b/" broken for + about a full year without anybody noticing, which has been + corrected. + (merge 0220461071 jc/missing-ref-store-fix later to maint). + + * Misc fixes for Windows. + (merge 3efc128cd5 js/mingw-fixes later to maint). + + * "git rebase" (again) learns to honor "--no-keep-empty", which lets + the user to discard commits that are empty from the beginning (as + opposed to the ones that become empty because of rebasing). The + interactive rebase also marks commits that are empty in the todo. + (merge 50ed76148a en/rebase-no-keep-empty later to maint). + + * Parsing the host part out of URL for the credential helper has been corrected. + (merge 4c5971e18a jk/credential-parsing-end-of-host-in-URL later to maint). + + * Document the recommended way to abort a failing test early (e.g. by + exiting a loop), which is to say "return 1". + (merge 7cc112dc95 jc/doc-test-leaving-early later to maint). + + * The code that refreshes the last access and modified time of + on-disk packfiles and loose object files have been updated. + (merge 312cd76130 lr/freshen-file-fix later to maint). + + * Validation of push certificate has been made more robust against + timing attacks. + (merge 719483e547 bc/constant-memequal later to maint). + + * The custom hash function used by "git fast-import" has been + replaced with the one from hashmap.c, which gave us a nice + performance boost. + (merge d8410a816b jk/fast-import-use-hashmap later to maint). + + * The "git submodule" command did not initialize a few variables it + internally uses and was affected by variable settings leaked from + the environment. + (merge 65d100c4dd lx/submodule-clear-variables later to maint). + + * Raise the minimum required version of docbook-xsl package to 1.74, + as 1.74.0 was from late 2008, which is more than 10 years old, and + drop compatibility cruft from our documentation suite. + (merge 3c255ad660 ma/doc-discard-docbook-xsl-1.73 later to maint). + + * "git log" learns "--[no-]mailmap" as a synonym to "--[no-]use-mailmap" + (merge 88acccda38 jc/log-no-mailmap later to maint). + + * "git commit-graph write --expire-time=" did not use the + given timestamp correctly, which has been corrected. + (merge b09b785c78 ds/commit-graph-expiry-fix later to maint). + + * Tests update to use "test-chmtime" instead of "touch -t". + (merge e892a56845 ds/t5319-touch-fix later to maint). + + * "git diff" in a partial clone learned to avoid lazy loading blob + objects in more casese when they are not needed. + (merge 95acf11a3d jt/avoid-prefetch-when-able-in-diff later to maint). + + * "git push --atomic" used to show failures for refs that weren't + even pushed, which has been corrected. + (merge dfe1b7f19c jx/atomic-push later to maint). + + * Code in builtin/*, i.e. those can only be called from within + built-in subcommands, that implements bulk of a couple of + subcommands have been moved to libgit.a so that they could be used + by others. + (merge 9460fd48b5 dl/libify-a-few later to maint). + + * Allowing the user to split a patch hunk while "git stash -p" does + not work well; a band-aid has been added to make this (partially) + work better. + + * "git diff-tree --pretty --notes" used to hit an assertion failure, + as it forgot to initialize the notes subsystem. + (merge 5778b22b3d tb/diff-tree-with-notes later to maint). + + * "git range-diff" fixes. + (merge 8d1675eb7f vd/range-diff-with-custom-pretty-format-fix later to maint). + + * "git grep" did not quote a path with unusual character like other + commands (like "git diff", "git status") do, but did quote when run + from a subdirectory, both of which has been corrected. + (merge 45115d8490 mt/grep-cquote-path later to maint). + + * GNU/Hurd is also among the ones that need the fopen() wrapper. + (merge 274a1328fb jc/gnu-hurd-lets-fread-read-dirs later to maint). + + * Those fetching over protocol v2 from linux-next and other kernel + repositories are reporting that v2 often fetches way too much than + needed. + (merge 11c7f2a30b jn/demote-proto2-from-default later to maint). + + * The upload-pack protocol v2 gave up too early before finding a + common ancestor, resulting in a wasteful fetch from a fork of a + project. This has been corrected to match the behaviour of v0 + protocol. + (merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint). + + * The build procedure did not use the libcurl library and its include + files correctly for a custom-built installation. + (merge 0573831950 jk/build-with-right-curl later to maint). + + * Tighten "git mailinfo" to notice and error out when decoded result + contains NUL in it. + (merge 3919997447 dd/mailinfo-with-nul later to maint). + + * Fix in-core inconsistency after fetching into a shallow repository + that broke the code to write out commit-graph. + (merge 37b9dcabfc tb/reset-shallow later to maint). + + * The commit-graph code exhausted file descriptors easily when it + does not have to. + (merge c8828530b7 tb/commit-graph-fd-exhaustion-fix later to maint). + + * The multi-pack-index left mmapped file descriptors open when it + does not have to. + (merge 6c7ff7cf7f ds/multi-pack-index later to maint). + + * Recent update to Homebrew used by macOS folks breaks build by + moving gettext library and necessary headers. + (merge a0b3108618 ds/build-homebrew-gettext-fix later to maint). + + * Incompatible options "--root" and "--fork-point" of "git rebase" + have been marked and documented as being incompatible. + (merge a35413c378 en/rebase-root-and-fork-point-are-incompatible later to maint). + + * Error and verbose trace messages from "git push" did not redact + credential material embedded in URLs. + (merge d192fa5006 js/anonymise-push-url-in-errors later to maint). + + * Update the parser used for credential.. + configuration, to handle s with '/' in them correctly. + (merge b44d0118ac bc/wildcard-credential later to maint). + + * Recent updates broke parsing of "credential.." where + is not a full URL (e.g. [credential "https://"] helper = ...) + stopped working, which has been corrected. + (merge 9a121b0d22 js/partial-urlmatch-2.17 later to maint). + (merge cd93e6c029 js/partial-urlmatch later to maint). + + * Some of the files commit-graph subsystem keeps on disk did not + correctly honor the core.sharedRepository settings and some were + left read-write. + + * In error messages that "git switch" mentions its option to create a + new branch, "-b/-B" options were shown, where "-c/-C" options + should be, which has been corrected. + (merge 7c16ef7577 dl/switch-c-option-in-error-message later to maint). + + * With the recent tightening of the code that is used to parse + various parts of a URL for use in the credential subsystem, a + hand-edited credential-store file causes the credential helper to + die, which is a bit too harsh to the users. Demote the error + behaviour to just ignore and keep using well-formed lines instead. + (merge c03859a665 cb/credential-store-ignore-bogus-lines later to maint). + + * The samples in the credential documentation has been updated to + make it clear that we depict what would appear in the .git/config + file, by adding appropriate quotes as needed.. + (merge 177681a07e jk/credential-sample-update later to maint). + + * "git branch" and other "for-each-ref" variants accepted multiple + --sort= options in the increasing order of precedence, but it + had a few breakages around "--ignore-case" handling, and tie-breaking + with the refname, which have been fixed. + (merge 7c5045fc18 jk/for-each-ref-multi-key-sort-fix later to maint). + + * The coding guideline for shell scripts instructed to refer to a + variable with dollar-sign inside arithmetic expansion to work + around a bug in old versions of dash, which is a thing of the past. + Now we are not forbidden from writing $((var+1)). + (merge 32b5fe7f0e jk/arith-expansion-coding-guidelines later to maint). + + * The header on NetBSD brings in its own definition of + hmac() function (eek), which conflicts with our own and unrelated + function with the same name. Our function has been renamed to work + around the issue. + (merge 3013118eb8 cb/avoid-colliding-with-netbsd-hmac later to maint). + + * The basic test did not honor $TEST_SHELL_PATH setting, which has + been corrected. + (merge 0555e4af58 cb/t0000-use-the-configured-shell later to maint). + + * Minor in-code comments and documentation updates around credential + API. + (merge 1aed817f99 cb/credential-doc-fixes later to maint). + + * Teach "am", "commit", "merge" and "rebase", when they are run with + the "--quiet" option, to pass "--quiet" down to "gc --auto". + (merge 7c3e9e8cfb jc/auto-gc-quiet later to maint). + + * The code to skip unmerged paths in the index when sparse checkout + is in use would have made out-of-bound access of the in-core index + when the last path was unmerged, which has been corrected. + + * Serving a "git fetch" client over "git://" and "ssh://" protocols + using the on-wire protocol version 2 was buggy on the server end + when the client needs to make a follow-up request to + e.g. auto-follow tags. + (merge 08450ef791 cc/upload-pack-v2-fetch-fix later to maint). + + * "git bisect replay" had trouble with input files when they used + CRLF line ending, which has been corrected. + (merge 6c722cbe5a cw/bisect-replay-with-dos later to maint). + + * "rebase -i" segfaulted when rearranging a sequence that has a + fix-up that applies another fix-up (which may or may not be a + fix-up of yet another step). + (merge 02471e7e20 js/rebase-autosquash-double-fixup-fix later to maint). + + * "git fsck" ensures that the paths recorded in tree objects are + sorted and without duplicates, but it failed to notice a case where + a blob is followed by entries that sort before a tree with the same + name. This has been corrected. + (merge 9068cfb20f rs/fsck-duplicate-names-in-trees later to maint). + + * Code clean-up by removing a compatibility implementation of a + function we no longer use. + (merge 84b0115f0d cb/no-more-gmtime later to maint). + + * When a binary file gets modified and renamed on both sides of history + to different locations, both files would be written to the working + tree but both would have the contents from "ours". This has been + corrected so that the path from each side gets their original content. + + * Fix for a copy-and-paste error introduced during 2.20 era. + (merge e68a5272b1 ds/multi-pack-verify later to maint). + + * Update an unconditional use of "grep -a" with a perl script in a test. + (merge 1eb7371236 dd/t5703-grep-a-fix later to maint). + + * Other code cleanup, docfix, build fix, etc. + (merge 564956f358 jc/maintain-doc later to maint). + (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint). + (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint). + (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint). + (merge 8312aa7d74 jc/config-tar later to maint). + (merge d00a5bdd50 ss/submodule-foreach-cb later to maint). + (merge 64d1022e14 ar/test-style-fixes later to maint). + (merge 4a465443a6 ds/doc-clone-filter later to maint). + (merge bb2dbe301b jk/t3419-drop-expensive-tests later to maint). + (merge d3507cc712 js/test-junit-finalization-fix later to maint). + (merge 2149b6748f bc/faq later to maint). + (merge 12dc0879f1 jk/test-cleanup later to maint). + (merge 344420bf0f pb/rebase-doc-typofix later to maint). + (merge 7cd54d37dc dl/wrapper-fix-indentation later to maint). + (merge 78725ebda9 jc/allow-strlen-substitution-in-shell-scripts later to maint). + (merge 2ecfcdecc6 jm/gitweb-fastcgi-utf8 later to maint). + (merge 0740d0a5d3 jk/oid-array-cleanups later to maint). + (merge a1aba0c95c js/t0007-typofix later to maint). + (merge 76ba7fa225 ma/config-doc-fix later to maint). + (merge 826f0c0df2 js/subtree-doc-update-to-asciidoctor-2 later to maint). + (merge 88eaf361e0 eb/mboxrd-doc later to maint). + (merge 051cc54941 tm/zsh-complete-switch-restore later to maint). + (merge 39102cf4fe ms/doc-revision-illustration-fix later to maint). + (merge 4d9378bfad eb/gitweb-more-trailers later to maint). + (merge bdccbf7047 mt/doc-worktree-ref later to maint). + (merge ce9baf234f dl/push-recurse-submodules-fix later to maint). + (merge 4153274052 bc/doc-credential-helper-value later to maint). + (merge 5c7bb0146e jc/codingstyle-compare-with-null later to maint). diff --git a/third_party/git/Documentation/RelNotes/2.28.0.txt b/third_party/git/Documentation/RelNotes/2.28.0.txt new file mode 100644 index 000000000000..6baf781380b5 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.28.0.txt @@ -0,0 +1,236 @@ +Git 2.28 Release Notes +====================== + +Updates since v2.27 +------------------- + +Backward compatibility notes + + * "fetch.writeCommitGraph" is deemed to be still a bit too risky and + is no longer part of the "feature.experimental" set. + + +UI, Workflows & Features + + * The commands in the "diff" family learned to honor "diff.relative" + configuration variable. + + * The check in "git fsck" to ensure that the tree objects are sorted + still had corner cases it missed unsorted entries. + + * The interface to redact sensitive information in the trace output + has been simplified. + + * The command line completion (in contrib/) learned to complete + options that the "git switch" command takes. + + * "git diff" used to take arguments in random and nonsense range + notation, e.g. "git diff A..B C", "git diff A..B C...D", etc., + which has been cleaned up. + + * "git diff-files" has been taught to say paths that are marked as + intent-to-add are new files, not modified from an empty blob. + + * "git status" learned to report the status of sparse checkout. + + * "git difftool" has trouble dealing with paths added to the index + with the intent-to-add bit. + + * "git fast-export --anonymize" learned to take customized mapping to + allow its users to tweak its output more usable for debugging. + + * The command line completion support (in contrib/) used to be + prepared to work with "set -u" but recent changes got a bit more + sloppy. This has been corrected. + + * "git gui" now allows opening work trees from the start-up dialog. + + +Performance, Internal Implementation, Development Support etc. + + * Code optimization for a common case. + (merge 8777616e4d an/merge-single-strategy-optim later to maint). + + * We've adopted a convention that any on-stack structure can be + initialized to have zero values in all fields with "= { 0 }", + even when the first field happens to be a pointer, but sparse + complained that a null pointer should be spelled NULL for a long + time. Start using -Wno-universal-initializer option to squelch + it (the latest sparse has it on by default). + + * "git log -L..." now takes advantage of the "which paths are touched + by this commit?" info stored in the commit-graph system. + + * As FreeBSD is not the only platform whose regexp library reports + a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that + automatically and skip the affected tests. + + * "git bugreport" learns to report what shell is in use. + + * Support for GIT_CURL_VERBOSE has been rewritten in terms of + GIT_TRACE_CURL. + + * Preliminary clean-ups around refs API, plus file format + specification documentation for the reftable backend. + + * Workaround breakage in MSVC build, where "curl-config --cflags" + gives settings appropriate for GCC build. + + * Code clean-up of "git clean" resulted in a fix of recent + performance regression. + + * Code clean-up in the codepath that serves "git fetch" continues. + + * "git merge-base --is-ancestor" is taught to take advantage of the + commit graph. + + * Rewrite of parts of the scripted "git submodule" Porcelain command + continues; this time it is "git submodule set-branch" subcommand's + turn. + + * The "fetch/clone" protocol has been updated to allow the server to + instruct the clients to grab pre-packaged packfile(s) in addition + to the packed object data coming over the wire. + + * A misdesigned strbuf_write_fd() function has been retired. + + * SHA-256 migration work continues, including CVS/SVN interface. + + * A few fields in "struct commit" that do not have to always be + present have been moved to commit slabs. + + * API cleanup for get_worktrees() + + * By renumbering object flag bits, "struct object" managed to lose + bloated inter-field padding. + + * The name of the primary branch in existing repositories, and the + default name used for the first branch in newly created + repositories, is made configurable, so that we can eventually wean + ourselves off of the hardcoded 'master'. + + * The effort to avoid using test_must_fail on non-git command continues. + + * In 2.28-rc0, we corrected a bug that some repository extensions are + honored by mistake even in a version 0 repositories (these + configuration variables in extensions.* namespace were supposed to + have special meaning in repositories whose version numbers are 1 or + higher), but this was a bit too big a change. The behaviour in + recent versions of Git where certain extensions.* were honored by + mistake even in version 0 repositories has been restored. + + +Fixes since v2.27 +----------------- + + * The "--prepare-p4-only" option of "git p4" is supposed to stop + after replaying one changeset, but kept going (by mistake?) + + * The error message from "git checkout -b foo -t bar baz" was + confusing. + + * Some repositories in the wild have commits that record nonsense + committer timezone (e.g. rails.git); "git fast-import" learned an + option to pass these nonsense timestamps intact to allow recreating + existing repositories as-is. + (merge d42a2fb72f en/fast-import-looser-date later to maint). + + * The command line completion script (in contrib/) tried to complete + "git stash -p" as if it were "git stash push -p", but it was too + aggressive and also affected "git stash show -p", which has been + corrected. + (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint). + + * On-the-wire protocol v2 easily falls into a deadlock between the + remote-curl helper and the fetch-pack process when the server side + prematurely throws an error and disconnects. The communication has + been updated to make it more robust. + + * "git checkout -p" did not handle a newly added path at all. + (merge 2c8bd8471a js/checkout-p-new-file later to maint). + + * The code to parse "git bisect start" command line was lax in + validating the arguments. + (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint). + + * Reduce memory usage during "diff --quiet" in a worktree with too + many stat-unmatched paths. + (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint). + + * The reflog entries for "git clone" and "git fetch" did not + anonymize the URL they operated on. + (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint). + + * The behaviour of "sparse-checkout" in the state "git clone + --no-checkout" left was changed accidentally in 2.27, which has + been corrected. + + * Use of negative pathspec, while collecting paths including + untracked ones in the working tree, was broken. + + * The same worktree directory must be registered only once, but + "git worktree move" allowed this invariant to be violated, which + has been corrected. + (merge 810382ed37 es/worktree-duplicate-paths later to maint). + + * The effect of sparse checkout settings on submodules is documented. + (merge e7d7c73249 en/sparse-with-submodule-doc later to maint). + + * Code clean-up around "git branch" with a minor bugfix. + (merge dc44639904 dl/branch-cleanup later to maint). + + * A branch name used in a test has been clarified to match what is + going on. + (merge 08dc26061f pb/t4014-unslave later to maint). + + * An in-code comment in "git diff" has been updated. + (merge c592fd4c83 dl/diff-usage-comment-update later to maint). + + * The documentation and some tests have been adjusted for the recent + renaming of "pu" branch to "seen". + (merge 6dca5dbf93 js/pu-to-seen later to maint). + + * The code to push changes over "dumb" HTTP had a bad interaction + with the commit reachability code due to incorrect allocation of + object flag bits, which has been corrected. + (merge 64472d15e9 bc/http-push-flagsfix later to maint). + + * "git send-email --in-reply-to=" did not use the In-Reply-To: + header with the value given from the command line, and let it be + overridden by the value on In-Reply-To: header in the messages + being sent out (if exists). + (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint). + + * "git log -Lx,y:path --before=date" lost track of where the range + should be because it didn't take the changes made by the youngest + commits that are omitted from the output into account. + + * When "fetch.writeCommitGraph" configuration is set in a shallow + repository and a fetch moves the shallow boundary, we wrote out + broken commit-graph files that do not match the reality, which has + been corrected. + + * "git checkout" failed to catch an error from fstat() after updating + a path in the working tree. + (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint). + + * When an aliased command, whose output is piped to a pager by git, + gets killed by a signal, the pager got into a funny state, which + has been corrected (again). + (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint). + + * The code to produce progress output from "git commit-graph --write" + had a few breakages, which have been fixed. + + * Other code cleanup, docfix, build fix, etc. + (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint). + (merge d63ae31962 cb/t5608-cleanup later to maint). + (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint). + (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint). + (merge b75a219904 es/advertise-contribution-doc later to maint). + (merge 0c9a4f638a rs/pull-leakfix later to maint). + (merge d546fe2874 rs/commit-reach-leakfix later to maint). + (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint). + (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint). + (merge 0172f7834a cc/cat-file-usage-update later to maint). + (merge 81de0c01cf ma/rebase-doc-typofix later to maint). diff --git a/third_party/git/Documentation/RelNotes/2.29.0.txt b/third_party/git/Documentation/RelNotes/2.29.0.txt new file mode 100644 index 000000000000..06ba2f803f66 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.29.0.txt @@ -0,0 +1,514 @@ +Git 2.29 Release Notes +====================== + +Updates since v2.28 +------------------- + +UI, Workflows & Features + + * "git help log" has been enhanced by sharing more material from the + documentation for the underlying "git rev-list" command. + + * "git for-each-ref --format=<>" learned %(contents:size). + + * "git merge" learned to selectively omit " into " at the end + of the title of default merge message with merge.suppressDest + configuration. + + * The component to respond to "git fetch" request is made more + configurable to selectively allow or reject object filtering + specification used for partial cloning. + + * Stop when "sendmail.*" configuration variables are defined, which + could be a mistaken attempt to define "sendemail.*" variables. + + * The existing backends for "git mergetool" based on variants of vim + have been refactored and then support for "nvim" has been added. + + * "git bisect" learns the "--first-parent" option to find the first + breakage along the first-parent chain. + + * "git log --first-parent -p" showed patches only for single-parent + commits on the first-parent chain; the "--first-parent" option has + been made to imply "-m". Use "--no-diff-merges" to restore the + previous behaviour to omit patches for merge commits. + + * The commit labels used to explain each side of conflicted hunks + placed by the sequencer machinery have been made more readable by + humans. + + * The "--batch-size" option of "git multi-pack-index repack" command + is now used to specify that very small packfiles are collected into + one until the total size roughly exceeds it. + + * The recent addition of SHA-256 support is marked as experimental in + the documentation. + + * "git fetch" learned --no-write-fetch-head option to avoid writing + the FETCH_HEAD file. + + * Command line completion (in contrib/) usually omits redundant, + deprecated and/or dangerous options from its output; it learned to + optionally include all of them. + + * The output from the "diff" family of the commands had abbreviated + object names of blobs involved in the patch, but its length was not + affected by the --abbrev option. Now it is. + + * "git worktree" gained a "repair" subcommand to help users recover + after moving the worktrees or repository manually without telling + Git. Also, "git init --separate-git-dir" no longer corrupts + administrative data related to linked worktrees. + + * The "--format=" option to the "for-each-ref" command and friends + learned a few more tricks, e.g. the ":short" suffix that applies to + "objectname" now also can be used for "parent", "tree", etc. + + * "git worktree add" learns that the "-d" is a synonym to "--detach" + option to create a new worktree without being on a branch. + + * "format-patch --range-diff= ..HEAD" has been taught + not to ignore when is a single version. + + * "add -p" now allows editing paths that were only added in intent. + + * The 'meld' backend of the "git mergetool" learned to give the + underlying 'meld' the '--auto-merge' option, which would help + reduce the amount of text that requires manual merging. + + * "git for-each-ref" and friends that list refs used to allow only + one --merged or --no-merged to filter them; they learned to take + combination of both kind of filtering. + + * "git maintenance", a "git gc"'s big brother, has been introduced to + take care of more repository maintenance tasks, not limited to the + object database cleaning. + + * "git receive-pack" that accepts requests by "git push" learned to + outsource most of the ref updates to the new "proc-receive" hook. + + * "git push" that wants to be atomic and wants to send push + certificate learned not to prepare and sign the push certificate + when it fails the local check (hence due to atomicity it is known + that no certificate is needed). + + * "git commit-graph write" learned to limit the number of bloom + filters that are computed from scratch with the --max-new-filters + option. + + * The transport protocol v2 has become the default again. + + * The installation procedure learned to optionally omit "git-foo" + executable files for each 'foo' built-in subcommand, which are only + required by old timers that still rely on the age old promise that + prepending "git --exec-path" output to PATH early in their script + will keep the "git-foo" calls they wrote working. + + * The command line completion (in contrib/) learned that "git restore + -s " is often followed by a refname. + + * "git shortlog" has been taught to group commits by the contents of + the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc. + + * "git archive" learns the "--add-file" option to include untracked + files into a snapshot from a tree-ish. + + * "git fetch" and "git push" support negative refspecs. + + * "git format-patch" learns to take "whenAble" as a possible value + for the format.useAutoBase configuration variable to become no-op + when the automatically computed base does not make sense. + + * Credential helpers are now allowed to terminate lines with CRLF + line ending, as well as LF line ending. + + +Performance, Internal Implementation, Development Support etc. + + * The changed-path Bloom filter is improved using ideas from an + independent implementation. + + * Updates to the changed-paths bloom filter. + + * The test framework has been updated so that most tests will run + with predictable (artificial) timestamps. + + * Preliminary clean-up of the refs API in preparation for adding a + new refs backend "reftable". + + * 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. + + * The argv_array API is useful for not just managing argv but any + "vector" (NULL-terminated array) of strings, and has seen adoption + to a certain degree. It has been renamed to "strvec" to reduce the + barrier to adoption. + + * The final leg of SHA-256 transition plus doc updates. Note that + there is no interoperability between SHA-1 and SHA-256 + repositories yet. + + * CMake support to build with MSVC for Windows bypassing the Makefile. + + * A new helper function has_object() has been introduced to make it + easier to mark object existence checks that do and don't want to + trigger lazy fetches, and a few such checks are converted using it. + + * A no-op replacement function implemented as a C preprocessor macro + does not perform as good a job as one implemented as a "static + inline" function in catching errors in parameters; replace the + former with the latter in header. + + * Test framework update. + (merge d572f52a64 es/test-cmp-typocatcher later to maint). + + * Updates to "git merge" tests, in preparation for a new merge + strategy backend. + + * midx and commit-graph files now use the byte defined in their file + format specification for identifying the hash function used for + object names. + + * The FETCH_HEAD is now always read from the filesystem regardless of + the ref backend in use, as its format is much richer than the + normal refs, and written directly by "git fetch" as a plain file.. + + * An unused binary has been discarded, and and a bunch of commands + have been turned into into built-in. + + * A handful of places in in-tree code still relied on being able to + execute the git subcommands, especially built-ins, in "git-foo" + form, which have been corrected. + + * When a packfile is removed by "git repack", multi-pack-index gets + cleared; the code was taught to do so less aggressively by first + checking if the midx actually refers to a pack that no longer + exists. + + * Internal API clean-up to handle two options "diff-index" and "log" + have, which happen to share the same short form, more sensibly. + + * The "add -i/-p" machinery has been written in C but it is not used + by default yet. It is made default to those who are participating + in feature.experimental experiment. + + * Allow maintainers to tweak $(TAR) invocations done while making + distribution tarballs. + + * "git index-pack" learned to resolve deltified objects with greater + parallelism. + + * "diff-highlight" (in contrib/) had a logic to flush its output upon + seeing a blank line but the way it detected a blank line was broken. + + * The logic to skip testing on the tagged commit and the tag itself + was not quite consistent which led to failure of Windows test + tasks. It has been revamped to consistently skip revisions that + have already been tested, based on the tree object of the revision. + + +Fixes since v2.28 +----------------- + + * The "mediawiki" remote backend which lives in contrib/mw-to-git/ + and is not built with git by default, had an RCE bug allowing a + malicious MediaWiki server operator to inject arbitrary commands + for execution by a cloning client. This has been fixed. + + The bug was discovered and reported by Joern Schneeweisz of GitLab + to the git-security mailing list. Its practical impact due to the + obscurity of git-remote-mediawiki was deemed small enough to forgo + a dedicated security release. + + * "git clone --separate-git-dir=$elsewhere" used to stomp on the + contents of the existing directory $elsewhere, which has been + 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. + (merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint). + + * Fetching from a lazily cloned repository resulted at the server + side in attempts to lazy fetch objects that the client side has, + many of which will not be available from the third-party anyway. + (merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint). + + * Fix to an ancient bug caused by an over-eager attempt for + optimization. + (merge a98f7fb366 rs/add-index-entry-optim-fix later to maint). + + * Pushing a ref whose name contains non-ASCII character with the + "--force-with-lease" option did not work over smart HTTP protocol, + which has been corrected. + (merge cd85b447bf bc/push-cas-cquoted-refname later to maint). + + * "git mv src dst", when src is an unmerged path, errored out + correctly but with an incorrect error message to claim that src is + not tracked, which has been clarified. + (merge 9b906af657 ct/mv-unmerged-path-error later to maint). + + * 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). + + * All "mergy" operations that internally use the merge-recursive + machinery should honor the merge.renormalize configuration, but + many of them didn't. + + * Doc cleanup around "worktree". + (merge dc9c144be5 es/worktree-doc-cleanups later to maint). + + * The "git blame --first-parent" option was not documented, but now + it is. + (merge 11bc12ae1e rp/blame-first-parent-doc later to maint). + + * The logic to find the ref transaction hook script attempted to + cache the path to the found hook without realizing that it needed + to keep a copied value, as the API it used returned a transitory + buffer space. This has been corrected. + (merge 09b2aa30c9 ps/ref-transaction-hook later to maint). + + * Recent versions of "git diff-files" shows a diff between the index + and the working tree for "intent-to-add" paths as a "new file" + patch; "git apply --cached" should be able to take "git diff-files" + and should act as an equivalent to "git add" for the path, but the + command failed to do so for such a path. + (merge 4c025c667e rp/apply-cached-with-i-t-a later to maint). + + * "git diff [] $path" for a $path that is marked with i-t-a + bit was not showing the mode bits from the working tree. + (merge cb0dd22b82 rp/ita-diff-modefix later to maint). + + * Ring buffer with size 4 used for bin-hex translation resulted in a + wrong object name in the sequencer's todo output, which has been + corrected. + (merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint). + + * When given more than one target line ranges, "git blame -La,b + -Lc,d" was over-eager to coalesce groups of original lines and + showed incorrect results, which has been corrected. + (merge c2ebaa27d6 jk/blame-coalesce-fix later to maint). + + * The regexp to identify the function boundary for FORTRAN programs + has been updated. + (merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint). + + * A few end-user facing messages have been updated to be + hash-algorithm agnostic. + (merge 4279000d3e jc/object-names-are-not-sha-1 later to maint). + + * "unlink" emulation on MinGW has been optimized. + (merge 680e0b4524 jh/mingw-unlink later to maint). + + * The purpose of "git init --separate-git-dir" is to initialize a + new project with the repository separate from the working tree, + or, in the case of an existing project, to move the repository + (the .git/ directory) out of the working tree. It does not make + sense to use --separate-git-dir with a bare repository for which + there is no working tree, so disallow its use with bare + repositories. + (merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint). + + * "ls-files -o" mishandled the top-level directory of another git + working tree that hangs in the current git working tree. + (merge ab282aa548 en/dir-nonbare-embedded later to maint). + + * Fix some incorrect UNLEAK() annotations. + (merge 3e19816dc0 jk/unleak-fixes later to maint). + + * Use more buffered I/O where we used to call many small write(2)s. + (merge a698d67b08 rs/more-buffered-io later to maint). + + * The patch-id computation did not ignore the "incomplete last line" + marker like whitespaces. + (merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint). + + * Updates into a lazy/partial clone with a submodule did not work + well with transfer.fsckobjects set. + + * The parser for "git for-each-ref --format=..." was too loose when + parsing the "%(trailers...)" atom, and forgot that "trailers" and + "trailers:" are the only two allowed forms, which has + been corrected. + (merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint). + + * Long ago, we decided to use 3 threads by default when running the + index-pack task in parallel, which has been adjusted a bit upwards. + (merge fbff95b67f jk/index-pack-w-more-threads later to maint). + + * "git restore/checkout --no-overlay" with wildcarded pathspec + mistakenly removed matching paths in subdirectories, which has been + corrected. + (merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint). + + * The description of --cached/--index options in "git apply --help" + has been updated. + (merge d064702be3 rp/apply-cached-doc later to maint). + + * Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and + running "git log --ignore-missing $ZERO_OID" fell back to start + digging from HEAD; it has been corrected to become a no-op, like + "git log --tags=no-tag-matches-this-pattern" does. + (merge 04a0e98515 jk/rev-input-given-fix later to maint). + + * Various callers of run_command API have been modernized. + (merge afbdba391e jc/run-command-use-embedded-args later to maint). + + * List of options offered and accepted by "git add -i/-p" were + inconsistent, which have been corrected. + (merge ce910287e7 pw/add-p-allowed-options-fix later to maint). + + * "git diff --stat -w" showed 0-line changes for paths whose changes + were only whitespaces, which was not intuitive. We now omit such + paths from the stat output. + (merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint). + + * It was possible for xrealloc() to send a non-NULL pointer that has + been freed, which has been fixed. + (merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint). + + * "git status" has trouble showing where it came from by interpreting + reflog entries that record certain events, e.g. "checkout @{u}", and + gives a hard/fatal error. Even though it inherently is impossible + to give a correct answer because the reflog entries lose some + information (e.g. "@{u}" does not record what branch the user was + on hence which branch 'the upstream' needs to be computed, and even + if the record were available, the relationship between branches may + have changed), at least hide the error and allow "status" to show its + output. + + * "git status --short" quoted a path with SP in it when tracked, but + not those that are untracked, ignored or unmerged. They are all + shown quoted consistently. + + * "git diff/show" on a change that involves a submodule used to read + the information on commits in the submodule from a wrong repository + and gave a wrong information when the commit-graph is involved. + (merge 85a1ec2c32 mf/submodule-summary-with-correct-repository later to maint). + + * Unlike "git config --local", "git config --worktree" did not fail + early and cleanly when started outside a git repository. + (merge 378fe5fc3d mt/config-fail-nongit-early later to maint). + + * There is a logic to estimate how many objects are in the + repository, which is meant to run once per process invocation, but + it ran every time the estimated value was requested. + (merge 67bb65de5d jk/dont-count-existing-objects-twice later to maint). + + * "git remote set-head" that failed still said something that hints + the operation went through, which was misleading. + (merge 5a07c6c3c2 cs/don-t-pretend-a-failed-remote-set-head-succeeded later to maint). + + * "git fetch --all --ipv4/--ipv6" forgot to pass the protocol options + to instances of the "git fetch" that talk to individual remotes, + which has been corrected. + (merge 4e735c1326 ar/fetch-ipversion-in-all later to maint). + + * The "unshelve" subcommand of "git p4" incorrectly used commit^N + where it meant to say commit~N to name the Nth generation + ancestor, which has been corrected. + (merge 0acbf5997f ld/p4-unshelve-fix later to maint). + + * "git clone" that clones from SHA-1 repository, while + GIT_DEFAULT_HASH set to use SHA-256 already, resulted in an + unusable repository that half-claims to be SHA-256 repository + with SHA-1 objects and refs. This has been corrected. + + * Adjust sample hooks for hash algorithm other than SHA-1. + (merge d8d3d632f4 dl/zero-oid-in-hooks later to maint). + + * "git range-diff" showed incorrect diffstat, which has been + corrected. + + * Earlier we taught "git pull" to warn when the user does not say the + histories need to be merged, rebased or accepts only fast- + forwarding, but the warning triggered for those who have set the + pull.ff configuration variable. + (merge 54200cef86 ah/pull later to maint). + + * Compilation fix around type punning. + (merge 176380fd11 jk/drop-unaligned-loads later to maint). + + * "git blame --ignore-rev/--ignore-revs-file" failed to validate + their input are valid revision, and failed to take into account + that the user may want to give an annotated tag instead of a + commit, which has been corrected. + (merge 610e2b9240 jc/blame-ignore-fix later to maint). + + * "git bisect start X Y", when X and Y are not valid committish + object names, should take X and Y as pathspec, but didn't. + (merge 73c6de06af cc/bisect-start-fix later to maint). + + * The explanation of the "scissors line" has been clarified. + (merge 287416dba6 eg/mailinfo-doc-scissors later to maint). + + * A race that leads to an access to a free'd data was corrected in + the codepath that reads pack files. + (merge bda959c476 mt/delta-base-cache-races later to maint). + + * in_merge_bases_many(), a way to see if a commit is reachable from + any commit in a set of commits, was totally broken when the + commit-graph feature was in use, which has been corrected. + (merge 8791bf1841 ds/in-merge-bases-many-optim-bug later to maint). + + * "git submodule update --quiet" did not squelch underlying "rebase" + and "pull" commands. + (merge 3ad0401e9e td/submodule-update-quiet later to maint). + + * The lazy fetching done internally to make missing objects available + in a partial clone incorrectly made permanent damage to the partial + clone filter in the repository, which has been corrected. + + * "log -c --find-object=X" did not work well to find a merge that + involves a change to an object X from only one parent. + (merge 957876f17d jk/diff-cc-oidfind-fix 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). + (merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint). + (merge 861c4ce141 en/typofixes later to maint). + (merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint). + (merge e2bfa50ac3 jb/doc-packfile-name later to maint). + (merge 918d8ff780 es/worktree-cleanup later to maint). + (merge dc156bc31f ma/t1450-quotefix later to maint). + (merge 56e743426b en/merge-recursive-comment-fixes later to maint). + (merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint). + (merge de20baf2c9 ny/notes-doc-sample-update later to maint). + (merge f649aaaf82 so/rev-parser-errormessage-fix later to maint). + (merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint). + (merge ac900fddb7 ma/stop-progress-null-fix later to maint). + (merge e767963ab6 rs/upload-pack-sigchain-fix later to maint). + (merge a831908599 rs/preserve-merges-unused-code-removal later to maint). + (merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint). + (merge 847b37271e pb/set-url-docfix later to maint). + (merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint). + (merge ce820cbd58 dl/subtree-docs later to maint). + (merge 55fe225dde jk/leakfix later to maint). + (merge ee22a29215 so/pretty-abbrev-doc later to maint). + (merge 3100fd5588 jc/post-checkout-doc later to maint). + (merge 17bae89476 pb/doc-external-diff-env later to maint). + (merge 27ed6ccc12 jk/worktree-check-clean-leakfix later to maint). + (merge 1302badd16 ea/blame-use-oideq later to maint). + (merge e6d5a11fed al/t3200-back-on-a-branch later to maint). + (merge 324efcf6b6 pw/add-p-leakfix later to maint). + (merge 1c6ffb546b jk/add-i-fixes later to maint). + (merge e40e936551 cd/commit-graph-doc later to maint). + (merge 0512eabd91 jc/sequencer-stopped-sha-simplify later to maint). + (merge d01141de5a so/combine-diff-simplify later to maint). + (merge 3be01e5ab1 sn/fast-import-doc later to maint). diff --git a/third_party/git/Documentation/RelNotes/2.29.1.txt b/third_party/git/Documentation/RelNotes/2.29.1.txt new file mode 100644 index 000000000000..295ee2135f48 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.29.1.txt @@ -0,0 +1,11 @@ +Git v2.29.1 Release Notes +========================= + +This is to fix the build procedure change in 2.28 where we failed to +install a few programs that should be installed in /usr/bin (namely, +receive-pack, upload-archive and upload-pack) when the non-default +SKIP_DASHED_BUILT_INS installation option is in effect. + +A minor glitch in a non-default installation may usually not deserve +a hotfix, but I know Git for Windows ship binaries built with this +option, so let's make an exception. diff --git a/third_party/git/Documentation/RelNotes/2.29.2.txt b/third_party/git/Documentation/RelNotes/2.29.2.txt new file mode 100644 index 000000000000..632b5b580ac3 --- /dev/null +++ b/third_party/git/Documentation/RelNotes/2.29.2.txt @@ -0,0 +1,12 @@ +Git v2.29.2 Release Notes +========================= + +This release is primarily to fix brown-paper-bag breakages in the +2.29.0 release. + +Fixes since v2.29.1 +------------------- + + * In 2.29, "--committer-date-is-author-date" option of "rebase" and + "am" subcommands lost the e-mail address by mistake, which has been + corrected. diff --git a/third_party/git/Documentation/RelNotes/2.3.3.txt b/third_party/git/Documentation/RelNotes/2.3.3.txt index 5ef12644c229..850dc68edef0 100644 --- a/third_party/git/Documentation/RelNotes/2.3.3.txt +++ b/third_party/git/Documentation/RelNotes/2.3.3.txt @@ -12,7 +12,7 @@ Fixes since v2.3.2 * Description given by "grep -h" for its --exclude-standard option was phrased poorly. - * Documentaton for "git remote add" mentioned "--tags" and + * Documentation for "git remote add" mentioned "--tags" and "--no-tags" and it was not clear that fetch from the remote in the future will use the default behaviour when neither is given to override it. diff --git a/third_party/git/Documentation/RelNotes/2.3.7.txt b/third_party/git/Documentation/RelNotes/2.3.7.txt index fc95812cb3f0..576918408161 100644 --- a/third_party/git/Documentation/RelNotes/2.3.7.txt +++ b/third_party/git/Documentation/RelNotes/2.3.7.txt @@ -4,7 +4,7 @@ Git v2.3.7 Release Notes Fixes since v2.3.6 ------------------ - * An earlier update to the parser that disects a URL broke an + * An earlier update to the parser that dissects a URL broke an address, followed by a colon, followed by an empty string (instead of the port number), e.g. ssh://example.com:/path/to/repo. diff --git a/third_party/git/Documentation/RelNotes/2.4.3.txt b/third_party/git/Documentation/RelNotes/2.4.3.txt index 914d2c186000..422e930aa2b2 100644 --- a/third_party/git/Documentation/RelNotes/2.4.3.txt +++ b/third_party/git/Documentation/RelNotes/2.4.3.txt @@ -66,7 +66,7 @@ Fixes since v2.4.3 * Some time ago, "git blame" (incorrectly) lost the convert_to_git() call when synthesizing a fake "tip" commit that represents the state in the working tree, which broke folks who record the history - with LF line ending to make their project portabile across + with LF line ending to make their project portable across platforms while terminating lines in their working tree files with CRLF for their platform. diff --git a/third_party/git/Documentation/RelNotes/2.5.0.txt b/third_party/git/Documentation/RelNotes/2.5.0.txt index 87044504c524..84723f912a9c 100644 --- a/third_party/git/Documentation/RelNotes/2.5.0.txt +++ b/third_party/git/Documentation/RelNotes/2.5.0.txt @@ -172,7 +172,8 @@ Performance, Internal Implementation, Development Support etc. incorrect patch text to "git apply". Add tests to demonstrate this. - I have a slight suspicion that this may be $gmane/87202 coming back + I have a slight suspicion that this may be + cf. <7vtzf77wjp.fsf@gitster.siamese.dyndns.org> coming back and biting us (I seem to have said "let's run with this and see what happens" back then). diff --git a/third_party/git/Documentation/RelNotes/2.7.0.txt b/third_party/git/Documentation/RelNotes/2.7.0.txt index 563dadc57e84..e3cbf3a73c46 100644 --- a/third_party/git/Documentation/RelNotes/2.7.0.txt +++ b/third_party/git/Documentation/RelNotes/2.7.0.txt @@ -40,7 +40,7 @@ UI, Workflows & Features * "git interpret-trailers" can now run outside of a Git repository. - * "git p4" learned to reencode the pathname it uses to communicate + * "git p4" learned to re-encode the pathname it uses to communicate with the p4 depot with a new option. * Give progress meter to "git filter-branch". diff --git a/third_party/git/Documentation/RelNotes/2.7.1.txt b/third_party/git/Documentation/RelNotes/2.7.1.txt index 6553d69e332c..6323feaf6497 100644 --- a/third_party/git/Documentation/RelNotes/2.7.1.txt +++ b/third_party/git/Documentation/RelNotes/2.7.1.txt @@ -10,7 +10,7 @@ Fixes since v2.7 setting GIT_WORK_TREE environment themselves. * The "exclude_list" structure has the usual "alloc, nr" pair of - fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot + fields to be used by ALLOC_GROW(), but clear_pattern_list() forgot to reset 'alloc' to 0 when it cleared 'nr' to discard the managed array. diff --git a/third_party/git/Documentation/RelNotes/2.7.3.txt b/third_party/git/Documentation/RelNotes/2.7.3.txt index 6adf038915e8..f618d71efd3e 100644 --- a/third_party/git/Documentation/RelNotes/2.7.3.txt +++ b/third_party/git/Documentation/RelNotes/2.7.3.txt @@ -20,7 +20,7 @@ Fixes since v2.7.2 tests. * "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a - rev, i.e. the object named by the the pathname with wildcard + rev, i.e. the object named by the pathname with wildcard characters in a tree object. * "git rev-parse --git-common-dir" used in the worktree feature diff --git a/third_party/git/Documentation/RelNotes/2.8.0.txt b/third_party/git/Documentation/RelNotes/2.8.0.txt index 25079710fa28..27320b6a9f37 100644 --- a/third_party/git/Documentation/RelNotes/2.8.0.txt +++ b/third_party/git/Documentation/RelNotes/2.8.0.txt @@ -189,7 +189,7 @@ Performance, Internal Implementation, Development Support etc. * Some calls to strcpy(3) triggers a false warning from static analyzers that are less intelligent than humans, and reducing the number of these false hits helps us notice real issues. A few - calls to strcpy(3) in a couple of protrams that are already safe + calls to strcpy(3) in a couple of programs that are already safe has been rewritten to avoid false warnings. * The "name_path" API was an attempt to reduce the need to construct @@ -270,7 +270,7 @@ notes for details). setting GIT_WORK_TREE environment themselves. * The "exclude_list" structure has the usual "alloc, nr" pair of - fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot + fields to be used by ALLOC_GROW(), but clear_pattern_list() forgot to reset 'alloc' to 0 when it cleared 'nr' to discard the managed array. diff --git a/third_party/git/Documentation/RelNotes/2.8.3.txt b/third_party/git/Documentation/RelNotes/2.8.3.txt index fedd9968e5e3..a63825ed87e6 100644 --- a/third_party/git/Documentation/RelNotes/2.8.3.txt +++ b/third_party/git/Documentation/RelNotes/2.8.3.txt @@ -55,8 +55,8 @@ Fixes since v2.8.2 This is necessary to use Git on Windows shared directories, and is already enabled for the MinGW and plain Windows builds. It also has been used in Cygwin packaged versions of Git for quite a while. - See http://thread.gmane.org/gmane.comp.version-control.git/291853 - and http://thread.gmane.org/gmane.comp.version-control.git/275680. + See https://lore.kernel.org/git/20160419091055.GF2345@dinwoodie.org/ + and https://lore.kernel.org/git/20150811100527.GW14466@dinwoodie.org/. * "git replace -e" did not honour "core.editor" configuration. diff --git a/third_party/git/Documentation/RelNotes/2.9.0.txt b/third_party/git/Documentation/RelNotes/2.9.0.txt index b61d36712fa7..991640119ae6 100644 --- a/third_party/git/Documentation/RelNotes/2.9.0.txt +++ b/third_party/git/Documentation/RelNotes/2.9.0.txt @@ -368,7 +368,7 @@ notes for details). This is necessary to use Git on Windows shared directories, and is already enabled for the MinGW and plain Windows builds. It also has been used in Cygwin packaged versions of Git for quite a while. - See http://thread.gmane.org/gmane.comp.version-control.git/291853 + See https://lore.kernel.org/git/20160419091055.GF2345@dinwoodie.org/ * "merge-octopus" strategy did not ensure that the index is clean when merge begins. diff --git a/third_party/git/Documentation/RelNotes/2.9.3.txt b/third_party/git/Documentation/RelNotes/2.9.3.txt index 695b86f612fa..305e08062b1b 100644 --- a/third_party/git/Documentation/RelNotes/2.9.3.txt +++ b/third_party/git/Documentation/RelNotes/2.9.3.txt @@ -36,7 +36,7 @@ Fixes since v2.9.2 * One part of "git am" had an oddball helper function that called stuff from outside "his" as opposed to calling what we have "ours", which was not gender-neutral and also inconsistent with the rest of - the system where outside stuff is usuall called "theirs" in + the system where outside stuff is usually called "theirs" in contrast to "ours". * The test framework learned a new helper test_match_signal to diff --git a/third_party/git/Documentation/SubmittingPatches b/third_party/git/Documentation/SubmittingPatches index 6d589e118c17..291b61e26213 100644 --- a/third_party/git/Documentation/SubmittingPatches +++ b/third_party/git/Documentation/SubmittingPatches @@ -3,8 +3,9 @@ Submitting Patches == Guidelines -Here are some guidelines for people who want to contribute their code -to this software. +Here are some guidelines for people who want to contribute their code to this +software. There is also a link:MyFirstContribution.html[step-by-step tutorial] +available which covers many of these same guidelines. [[base-branch]] === Decide what to base your work on. @@ -18,7 +19,7 @@ change is relevant to. base your work on the tip of the topic. * A new feature should be based on `master` in general. If the new - feature depends on a topic that is in `pu`, but not in `master`, + feature depends on a topic that is in `seen`, but not in `master`, base your work on the tip of that topic. * Corrections and enhancements to a topic not yet in `master` should @@ -27,7 +28,7 @@ change is relevant to. into the series. * In the exceptional case that a new feature depends on several topics - not in `master`, start working on `next` or `pu` privately and send + not in `master`, start working on `next` or `seen` privately and send out patches for discussion. Before the final merge, you may have to wait until some of the dependent topics graduate to `master`, and rebase your work. @@ -37,7 +38,7 @@ change is relevant to. these parts should be based on their trees. To find the tip of a topic branch, run `git log --first-parent -master..pu` and look for the merge commit. The second parent of this +master..seen` and look for the merge commit. The second parent of this commit is the tip of the topic branch. [[separate-commits]] @@ -142,19 +143,25 @@ archive, summarize the relevant points of the discussion. [[commit-reference]] If you want to reference a previous commit in the history of a stable -branch, use the format "abbreviated sha1 (subject, date)", -with the subject enclosed in a pair of double-quotes, like this: +branch, use the format "abbreviated hash (subject, date)", like this: .... - Commit f86a374 ("pack-bitmap.c: fix a memleak", 2015-03-30) + Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30) noticed that ... .... The "Copy commit summary" command of gitk can be used to obtain this -format, or this invocation of `git show`: +format (with the subject enclosed in a pair of double-quotes), or this +invocation of `git show`: .... - git show -s --date=short --pretty='format:%h ("%s", %ad)' + git show -s --pretty=reference +.... + +or, on an older version of Git without support for --pretty=reference: + +.... + git show -s --date=short --pretty='format:%h (%s, %ad)' .... [[git-tools]] @@ -372,9 +379,9 @@ such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:". Some parts of the system have dedicated maintainers with their own repositories. -- `git-gui/` comes from git-gui project, maintained by Pat Thoyts: +- `git-gui/` comes from git-gui project, maintained by Pratyush Yadav: - git://repo.or.cz/git-gui.git + https://github.com/prati0100/git-gui.git - `gitk-git/` comes from Paul Mackerras's gitk project: @@ -417,7 +424,7 @@ help you find out who they are. and cooked further and eventually graduates to `master`. In any time between the (2)-(3) cycle, the maintainer may pick it up -from the list and queue it to `pu`, in order to make it easier for +from the list and queue it to `seen`, in order to make it easier for people play with it without having to pick up and apply the patch to their trees themselves. @@ -428,7 +435,7 @@ their trees themselves. master. `git pull --rebase` will automatically skip already-applied patches, and will let you know. This works only if you rebase on top of the branch in which your patch has been merged (i.e. it will not - tell you if your patch is merged in pu if you rebase on top of + tell you if your patch is merged in `seen` if you rebase on top of master). * Read the Git mailing list, the maintainer regularly posts messages diff --git a/third_party/git/Documentation/asciidoc.conf b/third_party/git/Documentation/asciidoc.conf index 2c16c536ba83..3e4c13971b4a 100644 --- a/third_party/git/Documentation/asciidoc.conf +++ b/third_party/git/Documentation/asciidoc.conf @@ -31,24 +31,6 @@ ifdef::backend-docbook[] endif::backend-docbook[] ifdef::backend-docbook[] -ifndef::git-asciidoc-no-roff[] -# "unbreak" docbook-xsl v1.68 for manpages. v1.69 works with or without this. -# v1.72 breaks with this because it replaces dots not in roff requests. -[listingblock] -{title} - -ifdef::doctype-manpage[] - .ft C -endif::doctype-manpage[] -| -ifdef::doctype-manpage[] - .ft -endif::doctype-manpage[] - -{title#} -endif::git-asciidoc-no-roff[] - -ifdef::git-asciidoc-no-roff[] ifdef::doctype-manpage[] # The following two small workarounds insert a simple paragraph after screen [listingblock] @@ -67,7 +49,6 @@ ifdef::doctype-manpage[] {title#} {title%} endif::doctype-manpage[] -endif::git-asciidoc-no-roff[] endif::backend-docbook[] ifdef::doctype-manpage[] @@ -78,9 +59,9 @@ template::[header-declarations] {mantitle} {manvolnum} -Git -{git_version} -Git Manual +{mansource} +{manversion} +{manmanual} {manname} diff --git a/third_party/git/Documentation/asciidoctor-extensions.rb b/third_party/git/Documentation/asciidoctor-extensions.rb index 0089e0cfb80d..d906a008039c 100644 --- a/third_party/git/Documentation/asciidoctor-extensions.rb +++ b/third_party/git/Documentation/asciidoctor-extensions.rb @@ -9,8 +9,11 @@ module Git named :chrome def process(parent, target, attrs) - if parent.document.basebackend? 'html' - prefix = parent.document.attr('git-relative-html-prefix') + prefix = parent.document.attr('git-relative-html-prefix') + if parent.document.doctype == 'book' + "" \ + "#{target}(#{attrs[1]})" + elsif parent.document.basebackend? 'html' %(#{target}(#{attrs[1]})) elsif parent.document.basebackend? 'docbook' "\n" \ @@ -20,9 +23,26 @@ module Git end end end + + class DocumentPostProcessor < Asciidoctor::Extensions::Postprocessor + def process document, output + if document.basebackend? 'docbook' + mansource = document.attributes['mansource'] + manversion = document.attributes['manversion'] + manmanual = document.attributes['manmanual'] + new_tags = "" \ + "#{mansource}\n" \ + "#{manversion}\n" \ + "#{manmanual}\n" + output = output.sub(/<\/refmeta>/, new_tags + "") + end + output + end + end end end Asciidoctor::Extensions.register do inline_macro Git::Documentation::LinkGitProcessor, :linkgit + postprocessor Git::Documentation::DocumentPostProcessor end diff --git a/third_party/git/Documentation/blame-options.txt b/third_party/git/Documentation/blame-options.txt index 5d122db6e9e6..88750af7ae19 100644 --- a/third_party/git/Documentation/blame-options.txt +++ b/third_party/git/Documentation/blame-options.txt @@ -36,6 +36,12 @@ include::line-range-format.txt[] START. `git blame --reverse START` is taken as `git blame --reverse START..HEAD` for convenience. +--first-parent:: + Follow only the first parent commit upon seeing a merge + commit. This option can be used to determine when a line + was introduced to a particular integration branch, rather + than when it was introduced to the history overall. + -p:: --porcelain:: Show in a format designed for machine consumption. diff --git a/third_party/git/Documentation/cmd-list.perl b/third_party/git/Documentation/cmd-list.perl index 5aa73cfe458d..af5da45d2878 100755 --- a/third_party/git/Documentation/cmd-list.perl +++ b/third_party/git/Documentation/cmd-list.perl @@ -6,9 +6,14 @@ sub format_one { my ($out, $nameattr) = @_; my ($name, $attr) = @$nameattr; my ($state, $description); + my $mansection; $state = 0; open I, '<', "$name.txt" or die "No such file $name.txt"; while () { + if (/^git[a-z0-9-]*\(([0-9])\)$/) { + $mansection = $1; + next; + } if (/^NAME$/) { $state = 1; next; @@ -27,7 +32,7 @@ sub format_one { die "No description found in $name.txt"; } if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) { - print $out "linkgit:$name\[1\]::\n\t"; + print $out "linkgit:$name\[$mansection\]::\n\t"; if ($attr =~ / deprecated /) { print $out "(deprecated) "; } @@ -38,12 +43,15 @@ sub format_one { } } -while (<>) { +my ($input, @categories) = @ARGV; + +open IN, "<$input"; +while () { last if /^### command list/; } my %cmds = (); -for (sort <>) { +for (sort ) { next if /^#/; chomp; @@ -51,17 +59,10 @@ for (sort <>) { $attr = '' unless defined $attr; push @{$cmds{$cat}}, [$name, " $attr "]; } +close IN; -for my $cat (qw(ancillaryinterrogators - ancillarymanipulators - mainporcelain - plumbinginterrogators - plumbingmanipulators - synchingrepositories - foreignscminterface - purehelpers - synchelpers)) { - my $out = "cmds-$cat.txt"; +for my $out (@categories) { + my ($cat) = $out =~ /^cmds-(.*)\.txt$/; open O, '>', "$out+" or die "Cannot open output file $out+"; for (@{$cmds{$cat}}) { format_one(\*O, $_); diff --git a/third_party/git/Documentation/config.txt b/third_party/git/Documentation/config.txt index e3f5bc3396d0..bf706b950e66 100644 --- a/third_party/git/Documentation/config.txt +++ b/third_party/git/Documentation/config.txt @@ -3,11 +3,12 @@ CONFIGURATION FILE The Git configuration file contains a number of variables that affect the Git commands' behavior. The files `.git/config` and optionally -`config.worktree` (see `extensions.worktreeConfig` below) in each -repository are used to store the configuration for that repository, and -`$HOME/.gitconfig` is used to store a per-user configuration as -fallback values for the `.git/config` file. The file `/etc/gitconfig` -can be used to store a system-wide default configuration. +`config.worktree` (see the "CONFIGURATION FILE" section of +linkgit:git-worktree[1]) in each repository are used to store the +configuration for that repository, and `$HOME/.gitconfig` is used to +store a per-user configuration as fallback values for the `.git/config` +file. The file `/etc/gitconfig` can be used to store a system-wide +default configuration. The configuration variables are used by both the Git plumbing and the porcelains. The variables are divided into sections, wherein @@ -142,7 +143,7 @@ refer to linkgit:gitignore[5] for details. For convenience: `gitdir/i`:: This is the same as `gitdir` except that matching is done - case-insensitively (e.g. on case-insensitive file sytems) + case-insensitively (e.g. on case-insensitive file systems) `onbranch`:: The data that follows the keyword `onbranch:` is taken to be a @@ -178,52 +179,54 @@ to either specify only the realpath version, or both versions. Example ~~~~~~~ - # Core variables - [core] - ; Don't trust file modes - filemode = false - - # Our diff algorithm - [diff] - external = /usr/local/bin/diff-wrapper - renames = true - - [branch "devel"] - remote = origin - merge = refs/heads/devel - - # Proxy settings - [core] - gitProxy="ssh" for "kernel.org" - gitProxy=default-proxy ; for the rest - - [include] - path = /path/to/foo.inc ; include by absolute path - path = foo.inc ; find "foo.inc" relative to the current file - path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory - - ; include if $GIT_DIR is /path/to/foo/.git - [includeIf "gitdir:/path/to/foo/.git"] - path = /path/to/foo.inc - - ; include for all repositories inside /path/to/group - [includeIf "gitdir:/path/to/group/"] - path = /path/to/foo.inc - - ; include for all repositories inside $HOME/to/group - [includeIf "gitdir:~/to/group/"] - path = /path/to/foo.inc - - ; relative paths are always relative to the including - ; file (if the condition is true); their location is not - ; affected by the condition - [includeIf "gitdir:/path/to/group/"] - path = foo.inc - - ; include only if we are in a worktree where foo-branch is - ; currently checked out - [includeIf "onbranch:foo-branch"] - path = foo.inc +---- +# Core variables +[core] + ; Don't trust file modes + filemode = false + +# Our diff algorithm +[diff] + external = /usr/local/bin/diff-wrapper + renames = true + +[branch "devel"] + remote = origin + merge = refs/heads/devel + +# Proxy settings +[core] + gitProxy="ssh" for "kernel.org" + gitProxy=default-proxy ; for the rest + +[include] + path = /path/to/foo.inc ; include by absolute path + path = foo.inc ; find "foo.inc" relative to the current file + path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory + +; include if $GIT_DIR is /path/to/foo/.git +[includeIf "gitdir:/path/to/foo/.git"] + path = /path/to/foo.inc + +; include for all repositories inside /path/to/group +[includeIf "gitdir:/path/to/group/"] + path = /path/to/foo.inc + +; include for all repositories inside $HOME/to/group +[includeIf "gitdir:~/to/group/"] + path = /path/to/foo.inc + +; relative paths are always relative to the including +; file (if the condition is true); their location is not +; affected by the condition +[includeIf "gitdir:/path/to/group/"] + path = foo.inc + +; include only if we are in a worktree where foo-branch is +; currently checked out +[includeIf "onbranch:foo-branch"] + path = foo.inc +---- Values ~~~~~~ @@ -261,7 +264,9 @@ color:: + The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan` and `white`. The first color given is the -foreground; the second is the background. +foreground; the second is the background. All the basic colors except +`normal` have a bright variant that can be speficied by prefixing the +color with `bright`, like `brightred`. + Colors may also be given as numbers between 0 and 255; these use ANSI 256-color mode (but note that not all terminals may support this). If @@ -335,6 +340,8 @@ include::config/column.txt[] include::config/commit.txt[] +include::config/commitgraph.txt[] + include::config/credential.txt[] include::config/completion.txt[] @@ -343,8 +350,12 @@ include::config/diff.txt[] include::config/difftool.txt[] +include::config/extensions.txt[] + include::config/fastimport.txt[] +include::config/feature.txt[] + include::config/fetch.txt[] include::config/format.txt[] @@ -389,6 +400,8 @@ include::config/mailinfo.txt[] include::config/mailmap.txt[] +include::config/maintenance.txt[] + include::config/man.txt[] include::config/merge.txt[] @@ -441,6 +454,8 @@ include::config/submodule.txt[] include::config/tag.txt[] +include::config/tar.txt[] + include::config/trace2.txt[] include::config/transfer.txt[] diff --git a/third_party/git/Documentation/config/add.txt b/third_party/git/Documentation/config/add.txt index 4d753f006ec1..c9f748f81cb1 100644 --- a/third_party/git/Documentation/config/add.txt +++ b/third_party/git/Documentation/config/add.txt @@ -5,3 +5,8 @@ add.ignore-errors (deprecated):: option of linkgit:git-add[1]. `add.ignore-errors` is deprecated, as it does not follow the usual naming convention for configuration variables. + +add.interactive.useBuiltin:: + [EXPERIMENTAL] Set to `true` to use the experimental built-in + implementation of the interactive version of linkgit:git-add[1] + instead of the Perl script version. Is `false` by default. diff --git a/third_party/git/Documentation/config/advice.txt b/third_party/git/Documentation/config/advice.txt index 6aaa36020298..bdd37c3eaa32 100644 --- a/third_party/git/Documentation/config/advice.txt +++ b/third_party/git/Documentation/config/advice.txt @@ -107,4 +107,13 @@ advice.*:: editor input from the user. nestedTag:: Advice shown if a user attempts to recursively tag a tag object. + submoduleAlternateErrorStrategyDie:: + Advice shown when a submodule.alternateErrorStrategy option + configured to "die" causes a fatal error. + addIgnoredFile:: + Advice shown if a user attempts to add an ignored file to + the index. + addEmptyPathspec:: + Advice shown if a user runs the add command without providing + the pathspec parameter. -- diff --git a/third_party/git/Documentation/config/branch.txt b/third_party/git/Documentation/config/branch.txt index a592d522a744..cc5f3249fc58 100644 --- a/third_party/git/Documentation/config/branch.txt +++ b/third_party/git/Documentation/config/branch.txt @@ -81,15 +81,16 @@ branch..rebase:: "git pull" is run. See "pull.rebase" for doing this in a non branch-specific manner. + -When `merges`, pass the `--rebase-merges` option to 'git rebase' +When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase' so that the local merge commits are included in the rebase (see linkgit:git-rebase[1] for details). + -When `preserve` (deprecated in favor of `merges`), also pass +When `preserve` (or just 'p', deprecated in favor of `merges`), also pass `--preserve-merges` along to 'git rebase' so that locally committed merge commits will not be flattened by running 'git pull'. + -When the value is `interactive`, the rebase is run in interactive mode. +When the value is `interactive` (or just 'i'), the rebase is run in interactive +mode. + *NOTE*: this is a possibly dangerous operation; do *not* use it unless you understand the implications (see linkgit:git-rebase[1] diff --git a/third_party/git/Documentation/config/commitgraph.txt b/third_party/git/Documentation/config/commitgraph.txt new file mode 100644 index 000000000000..4582c39fc462 --- /dev/null +++ b/third_party/git/Documentation/config/commitgraph.txt @@ -0,0 +1,8 @@ +commitGraph.maxNewFilters:: + Specifies the default value for the `--max-new-filters` option of `git + commit-graph write` (c.f., linkgit:git-commit-graph[1]). + +commitGraph.readChangedPaths:: + If true, then git will use the changed-path Bloom filters in the + commit-graph file (if it exists, and they are present). Defaults to + true. See linkgit:git-commit-graph[1] for more information. diff --git a/third_party/git/Documentation/config/core.txt b/third_party/git/Documentation/config/core.txt index 75538d27e7e0..02002cf109e9 100644 --- a/third_party/git/Documentation/config/core.txt +++ b/third_party/git/Documentation/config/core.txt @@ -68,6 +68,17 @@ core.fsmonitor:: avoiding unnecessary processing of files that have not changed. See the "fsmonitor-watchman" section of linkgit:githooks[5]. +core.fsmonitorHookVersion:: + Sets the version of hook that is to be used when calling fsmonitor. + There are currently versions 1 and 2. When this is not set, + version 2 will be tried first and if it fails then version 1 + will be tried. Version 1 uses a timestamp as input to determine + which files have changes since that time but some monitors + like watchman have race conditions when used with a timestamp. + Version 2 uses an opaque string so that the monitor can return + something that can be used to determine what files have changed + without race conditions. + core.trustctime:: If false, the ctime differences between the index and the working tree are ignored; useful when the inode change time @@ -86,7 +97,9 @@ core.untrackedCache:: it will automatically be removed, if set to `false`. Before setting it to `true`, you should check that mtime is working properly on your system. - See linkgit:git-update-index[1]. `keep` by default. + See linkgit:git-update-index[1]. `keep` by default, unless + `feature.manyFiles` is enabled which sets this setting to + `true` by default. core.checkStat:: When missing or is set to `default`, many fields in the stat @@ -386,7 +399,7 @@ the largest projects. You probably do not need to adjust this value. Common unit suffixes of 'k', 'm', or 'g' are supported. core.deltaBaseCacheLimit:: - Maximum number of bytes to reserve for caching base objects + Maximum number of bytes per thread to reserve for caching base objects that may be referenced by multiple deltified objects. By storing the entire decompressed base objects in a cache Git is able to avoid unpacking and decompressing frequently used base @@ -557,6 +570,12 @@ core.unsetenvvars:: Defaults to `PERL5LIB` to account for the fact that Git for Windows insists on using its own Perl interpreter. +core.restrictinheritedhandles:: + Windows-only: override whether spawned processes inherit only standard + file handles (`stdin`, `stdout` and `stderr`) or all handles. Can be + `auto`, `true` or `false`. Defaults to `auto`, which means `true` on + Windows 7 and later, and `false` on older Windows versions. + core.createObject:: You can set this to 'link', in which case a hardlink followed by a delete of the source are used to make sure that object creation @@ -577,7 +596,7 @@ the `GIT_NOTES_REF` environment variable. See linkgit:git-notes[1]. core.commitGraph:: If true, then git will read the commit-graph file (if it exists) - to parse the graph structure of commits. Defaults to false. See + to parse the graph structure of commits. Defaults to true. See linkgit:git-commit-graph[1] for more information. core.useReplaceRefs:: @@ -591,8 +610,14 @@ core.multiPackIndex:: multi-pack-index design document]. core.sparseCheckout:: - Enable "sparse checkout" feature. See section "Sparse checkout" in - linkgit:git-read-tree[1] for more information. + Enable "sparse checkout" feature. See linkgit:git-sparse-checkout[1] + for more information. + +core.sparseCheckoutCone:: + Enables the "cone mode" of the sparse checkout feature. When the + sparse-checkout file contains a limited set of patterns, then this + mode provides significant performance advantages. See + linkgit:git-sparse-checkout[1] for more information. core.abbrev:: Set the length object names are abbreviated to. If diff --git a/third_party/git/Documentation/config/credential.txt b/third_party/git/Documentation/config/credential.txt index 60fb3189e161..9d01641c282a 100644 --- a/third_party/git/Documentation/config/credential.txt +++ b/third_party/git/Documentation/config/credential.txt @@ -1,9 +1,13 @@ credential.helper:: Specify an external helper to be called when a username or password credential is needed; the helper may consult external - storage to avoid prompting the user for the credentials. Note - that multiple helpers may be defined. See linkgit:gitcredentials[7] - for details. + storage to avoid prompting the user for the credentials. This is + normally the name of a credential helper with possible + arguments, but may also be an absolute path with arguments or, if + preceded by `!`, shell commands. ++ +Note that multiple helpers may be defined. See linkgit:gitcredentials[7] +for details and examples. credential.useHttpPath:: When acquiring credentials, consider the "path" component of an http diff --git a/third_party/git/Documentation/config/diff.txt b/third_party/git/Documentation/config/diff.txt index 5afb5a2cbc69..c3ae136eba6d 100644 --- a/third_party/git/Documentation/config/diff.txt +++ b/third_party/git/Documentation/config/diff.txt @@ -105,6 +105,10 @@ diff.mnemonicPrefix:: diff.noprefix:: If set, 'git diff' does not show any source or destination prefix. +diff.relative:: + If set to 'true', 'git diff' does not show changes outside of the directory + and show pathnames relative to the current directory. + diff.orderFile:: File indicating how to order files within a diff. See the '-O' option to linkgit:git-diff[1] for details. @@ -189,7 +193,7 @@ diff.guitool:: include::../mergetools-diff.txt[] diff.indentHeuristic:: - Set this option to `true` to enable experimental heuristics + Set this option to `false` to disable the default heuristics that shift diff hunk boundaries to make patches easier to read. diff.algorithm:: diff --git a/third_party/git/Documentation/config/extensions.txt b/third_party/git/Documentation/config/extensions.txt new file mode 100644 index 000000000000..4e23d73cdcad --- /dev/null +++ b/third_party/git/Documentation/config/extensions.txt @@ -0,0 +1,8 @@ +extensions.objectFormat:: + Specify the hash algorithm to use. The acceptable values are `sha1` and + `sha256`. If not specified, `sha1` is assumed. It is an error to specify + this key unless `core.repositoryFormatVersion` is 1. ++ +Note that this setting should only be set by linkgit:git-init[1] or +linkgit:git-clone[1]. Trying to change it after initialization will not +work and will produce hard-to-diagnose issues. diff --git a/third_party/git/Documentation/config/feature.txt b/third_party/git/Documentation/config/feature.txt new file mode 100644 index 000000000000..cdecd04e5bb7 --- /dev/null +++ b/third_party/git/Documentation/config/feature.txt @@ -0,0 +1,26 @@ +feature.*:: + The config settings that start with `feature.` modify the defaults of + a group of other config settings. These groups are created by the Git + developer community as recommended defaults and are subject to change. + In particular, new config options may be added with different defaults. + +feature.experimental:: + Enable config options that are new to Git, and are being considered for + future defaults. Config settings included here may be added or removed + with each release, including minor version updates. These settings may + have unintended interactions since they are so new. Please enable this + setting if you are interested in providing feedback on experimental + features. The new default values are: ++ +* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by +skipping more commits at a time, reducing the number of round trips. + +feature.manyFiles:: + Enable config options that optimize for repos with many files in the + working directory. With many files, commands such as `git status` and + `git checkout` may be slow and these new defaults improve performance: ++ +* `index.version=4` enables path-prefix compression in the index. ++ +* `core.untrackedCache=true` enables the untracked cache. This setting assumes +that mtime is working on your machine. diff --git a/third_party/git/Documentation/config/fetch.txt b/third_party/git/Documentation/config/fetch.txt index ba890b5884fc..6af6f5edb278 100644 --- a/third_party/git/Documentation/config/fetch.txt +++ b/third_party/git/Documentation/config/fetch.txt @@ -1,11 +1,14 @@ fetch.recurseSubmodules:: - This option can be either set to a boolean value or to 'on-demand'. + This option controls whether `git fetch` (and the underlying fetch + in `git pull`) will recursively fetch into populated submodules. + This option can be set either to a boolean value or to 'on-demand'. Setting it to a boolean changes the behavior of fetch and pull to - unconditionally recurse into submodules when set to true or to not - recurse at all when set to false. When set to 'on-demand' (the default - value), fetch and pull will only recurse into a populated submodule - when its superproject retrieves a commit that updates the submodule's + recurse unconditionally into submodules when set to true or to not + recurse at all when set to false. When set to 'on-demand', fetch and + pull will only recurse into a populated submodule when its + superproject retrieves a commit that updates the submodule's reference. + Defaults to 'on-demand', or to the value of 'submodule.recurse' if set. fetch.fsckObjects:: If it is set to true, git-fetch-pack will check all fetched @@ -57,9 +60,13 @@ fetch.negotiationAlgorithm:: sent when negotiating the contents of the packfile to be sent by the server. Set to "skipping" to use an algorithm that skips commits in an effort to converge faster, but may result in a larger-than-necessary - packfile; The default is "default" which instructs Git to use the default algorithm + packfile; or set to "noop" to not send any information at all, which + will almost certainly result in a larger-than-necessary packfile, but + will skip the negotiation step. + The default is "default" which instructs Git to use the default algorithm that never skips commits (unless the server has acknowledged it or one - of its descendants). + of its descendants). If `feature.experimental` is enabled, then this + setting defaults to "skipping". Unknown values will cause 'git fetch' to error out. + See also the `--negotiation-tip` option for linkgit:git-fetch[1]. @@ -68,3 +75,22 @@ fetch.showForcedUpdates:: Set to false to enable `--no-show-forced-updates` in linkgit:git-fetch[1] and linkgit:git-pull[1] commands. Defaults to true. + +fetch.parallel:: + Specifies the maximal number of fetch operations to be run in parallel + at a time (submodules, or remotes when the `--multiple` option of + linkgit:git-fetch[1] is in effect). ++ +A value of 0 will give some reasonable default. If unset, it defaults to 1. ++ +For submodules, this setting can be overridden using the `submodule.fetchJobs` +config setting. + +fetch.writeCommitGraph:: + Set to true to write a commit-graph after every `git fetch` command + that downloads a pack-file from a remote. Using the `--split` option, + most executions will create a very small commit-graph file on top of + the existing commit-graph file(s). Occasionally, these files will + merge and the write may take longer. Having an updated commit-graph + file helps performance of many Git commands, including `git merge-base`, + `git push -f`, and `git log --graph`. Defaults to false. diff --git a/third_party/git/Documentation/config/fmt-merge-msg.txt b/third_party/git/Documentation/config/fmt-merge-msg.txt index c73cfa90b70c..3fbf40e24f62 100644 --- a/third_party/git/Documentation/config/fmt-merge-msg.txt +++ b/third_party/git/Documentation/config/fmt-merge-msg.txt @@ -8,3 +8,15 @@ merge.log:: most the specified number of one-line descriptions from the actual commits that are being merged. Defaults to false, and true is a synonym for 20. + +merge.suppressDest:: + By adding a glob that matches the names of integration + branches to this multi-valued configuration variable, the + default merge message computed for merges into these + integration branches will omit "into " from + its title. ++ +An element with an empty value can be used to clear the list +of globs accumulated from previous configuration entries. +When there is no `merge.suppressDest` variable defined, the +default value of `master` is used for backward compatibility. diff --git a/third_party/git/Documentation/config/format.txt b/third_party/git/Documentation/config/format.txt index 414a5a8a9d7d..c2efd8758a58 100644 --- a/third_party/git/Documentation/config/format.txt +++ b/third_party/git/Documentation/config/format.txt @@ -36,6 +36,12 @@ format.subjectPrefix:: The default for format-patch is to output files with the '[PATCH]' subject prefix. Use this variable to change that prefix. +format.coverFromDescription:: + The default mode for format-patch to determine which parts of + the cover letter will be populated using the branch's + description. See the `--cover-from-description` option in + linkgit:git-format-patch[1]. + format.signature:: The default for format-patch is to output a signature containing the Git version number. Use this variable to change that default. @@ -51,6 +57,11 @@ format.suffix:: `.patch`. Use this variable to change that suffix (make sure to include the dot if you want it). +format.encodeEmailHeaders:: + Encode email headers that have non-ASCII characters with + "Q-encoding" (described in RFC 2047) for email transmission. + Defaults to true. + format.pretty:: The default pretty format for log/show/whatchanged command, See linkgit:git-log[1], linkgit:git-show[1], @@ -77,14 +88,17 @@ format.coverLetter:: A boolean that controls whether to generate a cover-letter when format-patch is invoked, but in addition can be set to "auto", to generate a cover-letter only when there's more than one patch. + Default is false. format.outputDirectory:: Set a custom directory to store the resulting files instead of the - current working directory. + current working directory. All directory components will be created. format.useAutoBase:: A boolean value which lets you enable the `--base=auto` option of - format-patch by default. + format-patch by default. Can also be set to "whenAble" to allow + enabling `--base=auto` if a suitable base is available, but to skip + adding base info otherwise without the format dying. format.notes:: Provides the default value for the `--notes` option to @@ -99,4 +113,20 @@ If one wishes to use the ref `ref/notes/true`, please use that literal instead. + This configuration can be specified multiple times in order to allow -multiple notes refs to be included. +multiple notes refs to be included. In that case, it will behave +similarly to multiple `--[no-]notes[=]` options passed in. That is, a +value of `true` will show the default notes, a value of `` will +also show notes from that notes ref and a value of `false` will negate +previous configurations and not show notes. ++ +For example, ++ +------------ +[format] + notes = true + notes = foo + notes = false + notes = bar +------------ ++ +will only show notes from `refs/notes/bar`. diff --git a/third_party/git/Documentation/config/gc.txt b/third_party/git/Documentation/config/gc.txt index 02b92b18b5c2..00ea0a678ee2 100644 --- a/third_party/git/Documentation/config/gc.txt +++ b/third_party/git/Documentation/config/gc.txt @@ -63,7 +63,7 @@ gc.writeCommitGraph:: If true, then gc will rewrite the commit-graph file when linkgit:git-gc[1] is run. When using `git gc --auto` the commit-graph will be updated if housekeeping is - required. Default is false. See linkgit:git-commit-graph[1] + required. Default is true. See linkgit:git-commit-graph[1] for details. gc.logExpiry:: diff --git a/third_party/git/Documentation/config/gpg.txt b/third_party/git/Documentation/config/gpg.txt index cce2c8924598..d94025cb3684 100644 --- a/third_party/git/Documentation/config/gpg.txt +++ b/third_party/git/Documentation/config/gpg.txt @@ -18,3 +18,18 @@ gpg..program:: chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still be used as a legacy synonym for `gpg.openpgp.program`. The default value for `gpg.x509.program` is "gpgsm". + +gpg.minTrustLevel:: + Specifies a minimum trust level for signature verification. If + this option is unset, then signature verification for merge + operations require a key with at least `marginal` trust. Other + operations that perform signature verification require a key + with at least `undefined` trust. Setting this option overrides + the required trust-level for all operations. Supported values, + in increasing order of significance: ++ +* `undefined` +* `never` +* `marginal` +* `fully` +* `ultimate` diff --git a/third_party/git/Documentation/config/http.txt b/third_party/git/Documentation/config/http.txt index 5a32f5b0a5a9..3968fbb697ae 100644 --- a/third_party/git/Documentation/config/http.txt +++ b/third_party/git/Documentation/config/http.txt @@ -29,6 +29,27 @@ http.proxyAuthMethod:: * `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`) -- +http.proxySSLCert:: + The pathname of a file that stores a client certificate to use to authenticate + with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CERT` environment + variable. + +http.proxySSLKey:: + The pathname of a file that stores a private key to use to authenticate with + an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_KEY` environment + variable. + +http.proxySSLCertPasswordProtected:: + Enable Git's password prompt for the proxy SSL certificate. Otherwise OpenSSL + will prompt the user, possibly many times, if the certificate or private key + is encrypted. Can be overriden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED` + environment variable. + +http.proxySSLCAInfo:: + Pathname to the file containing the certificate bundle that should be used to + verify the proxy with when using an HTTPS proxy. Can be overriden by the + `GIT_PROXY_SSL_CAINFO` environment variable. + http.emptyAuth:: Attempt authentication without seeking a username or password. This can be used to attempt GSS-Negotiate authentication without specifying @@ -71,7 +92,7 @@ http.saveCookies:: http.version:: Use the specified HTTP protocol version when communicating with a server. If you want to force the default. The available and default version depend - on libcurl. Actually the possible values of + on libcurl. Currently the possible values of this option are: - HTTP/2 @@ -84,7 +105,7 @@ http.sslVersion:: particular configuration of the crypto library in use. Internally this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl documentation for more details on the format of this option and - for the ssl version supported. Actually the possible values of + for the ssl version supported. Currently the possible values of this option are: - sslv2 @@ -199,6 +220,14 @@ http.postBuffer:: Transfer-Encoding: chunked is used to avoid creating a massive pack file locally. Default is 1 MiB, which is sufficient for most requests. ++ +Note that raising this limit is only effective for disabling chunked +transfer encoding and therefore should be used only where the remote +server or a proxy only supports HTTP/1.0 or is noncompliant with the +HTTP standard. Raising this is not, in general, an effective solution +for most push problems, but can increase memory consumption +significantly since the entire buffer is allocated even for small +pushes. http.lowSpeedLimit, http.lowSpeedTime:: If the HTTP transfer speed is less than 'http.lowSpeedLimit' diff --git a/third_party/git/Documentation/config/index.txt b/third_party/git/Documentation/config/index.txt index f18150304106..7cb50b37e98d 100644 --- a/third_party/git/Documentation/config/index.txt +++ b/third_party/git/Documentation/config/index.txt @@ -24,3 +24,4 @@ index.threads:: index.version:: Specify the version with which new index files should be initialized. This does not affect existing repositories. + If `feature.manyFiles` is enabled, then the default is 4. diff --git a/third_party/git/Documentation/config/init.txt b/third_party/git/Documentation/config/init.txt index 46fa8c6a0827..dc77f8c84468 100644 --- a/third_party/git/Documentation/config/init.txt +++ b/third_party/git/Documentation/config/init.txt @@ -1,3 +1,7 @@ init.templateDir:: Specify the directory from which templates will be copied. (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].) + +init.defaultBranch:: + Allows overriding the default branch name e.g. when initializing + a new repository or when cloning an empty repository. diff --git a/third_party/git/Documentation/config/log.txt b/third_party/git/Documentation/config/log.txt index e9e1e397f3fd..208d5fdcaa68 100644 --- a/third_party/git/Documentation/config/log.txt +++ b/third_party/git/Documentation/config/log.txt @@ -18,6 +18,12 @@ log.decorate:: names are shown. This is the same as the `--decorate` option of the `git log`. +log.excludeDecoration:: + Exclude the specified patterns from the log decorations. This is + similar to the `--decorate-refs-exclude` command-line option, but + the config option can be overridden by the `--decorate-refs` + option. + log.follow:: If `true`, `git log` will act as if the `--follow` option was used when a single is given. This has the same limitations as `--follow`, diff --git a/third_party/git/Documentation/config/maintenance.txt b/third_party/git/Documentation/config/maintenance.txt new file mode 100644 index 000000000000..7cc6700d574d --- /dev/null +++ b/third_party/git/Documentation/config/maintenance.txt @@ -0,0 +1,16 @@ +maintenance..enabled:: + This boolean config option controls whether the maintenance task + with name `` is run when no `--task` option is specified to + `git maintenance run`. These config values are ignored if a + `--task` option exists. By default, only `maintenance.gc.enabled` + is true. + +maintenance.commit-graph.auto:: + This integer config option controls how often the `commit-graph` task + should be run as part of `git maintenance run --auto`. If zero, then + the `commit-graph` task will not run with the `--auto` option. A + negative value will force the task to run every time. Otherwise, a + positive value implies the command should run when the number of + reachable commits that are not in the commit-graph file is at least + the value of `maintenance.commit-graph.auto`. The default value is + 100. diff --git a/third_party/git/Documentation/config/merge.txt b/third_party/git/Documentation/config/merge.txt index 6a313937f8c0..cb2ed589075b 100644 --- a/third_party/git/Documentation/config/merge.txt +++ b/third_party/git/Documentation/config/merge.txt @@ -70,6 +70,16 @@ merge.stat:: Whether to print the diffstat between ORIG_HEAD and the merge result at the end of the merge. True by default. +merge.autoStash:: + When set to true, automatically create a temporary stash entry + before the operation begins, and apply it after the operation + ends. This means that you can run merge on a dirty worktree. + However, use with care: the final stash application after a + successful merge might result in non-trivial conflicts. + This option can be overridden by the `--no-autostash` and + `--autostash` options of linkgit:git-merge[1]. + Defaults to false. + merge.tool:: Controls which merge tool is used by linkgit:git-mergetool[1]. The list below shows the valid built-in values. diff --git a/third_party/git/Documentation/config/mergetool.txt b/third_party/git/Documentation/config/mergetool.txt index 09ed31dbfa9c..16a27443a3ed 100644 --- a/third_party/git/Documentation/config/mergetool.txt +++ b/third_party/git/Documentation/config/mergetool.txt @@ -30,6 +30,16 @@ mergetool.meld.hasOutput:: to `true` tells Git to unconditionally use the `--output` option, and `false` avoids using `--output`. +mergetool.meld.useAutoMerge:: + When the `--auto-merge` is given, meld will merge all non-conflicting + parts automatically, highlight the conflicting parts and wait for + user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells + Git to unconditionally use the `--auto-merge` option with `meld`. + Setting this value to `auto` makes git detect whether `--auto-merge` + is supported and will only use `--auto-merge` when available. A + value of `false` avoids using `--auto-merge` altogether, and is the + default value. + mergetool.keepBackup:: After performing a merge, the original file with conflict markers can be saved as a file with a `.orig` extension. If this variable diff --git a/third_party/git/Documentation/config/pack.txt b/third_party/git/Documentation/config/pack.txt index 9cdcfa732478..837f1b16792f 100644 --- a/third_party/git/Documentation/config/pack.txt +++ b/third_party/git/Documentation/config/pack.txt @@ -27,6 +27,13 @@ Note that changing the compression level will not automatically recompress all existing objects. You can force recompression by passing the -F option to linkgit:git-repack[1]. +pack.allowPackReuse:: + When true, and when reachability bitmaps are enabled, + pack-objects will try to send parts of the bitmapped packfile + verbatim. This can reduce memory and CPU usage to serve fetches, + but might result in sending a slightly larger pack. Defaults to + true. + pack.island:: An extended regular expression configuring a set of delta islands. See "DELTA ISLANDS" in linkgit:git-pack-objects[1] @@ -112,7 +119,8 @@ pack.useSparse:: objects. This can have significant performance benefits when computing a pack to send a small change. However, it is possible that extra objects are added to the pack-file if the included - commits contain certain types of direct renames. + commits contain certain types of direct renames. Default is + `true`. pack.writeBitmaps (deprecated):: This is a deprecated synonym for `repack.writeBitmaps`. diff --git a/third_party/git/Documentation/config/protocol.txt b/third_party/git/Documentation/config/protocol.txt index bfccc074913e..756591d77b08 100644 --- a/third_party/git/Documentation/config/protocol.txt +++ b/third_party/git/Documentation/config/protocol.txt @@ -45,11 +45,10 @@ The protocol names currently used by git are: -- protocol.version:: - Experimental. If set, clients will attempt to communicate with a - server using the specified protocol version. If unset, no - attempt will be made by the client to communicate using a - particular protocol version, this results in protocol version 0 - being used. + If set, clients will attempt to communicate with a server + using the specified protocol version. If the server does + not support it, communication falls back to version 0. + If unset, the default is `2`. Supported versions: + -- diff --git a/third_party/git/Documentation/config/pull.txt b/third_party/git/Documentation/config/pull.txt index b87cab31b39c..540483060956 100644 --- a/third_party/git/Documentation/config/pull.txt +++ b/third_party/git/Documentation/config/pull.txt @@ -14,15 +14,16 @@ pull.rebase:: pull" is run. See "branch..rebase" for setting this on a per-branch basis. + -When `merges`, pass the `--rebase-merges` option to 'git rebase' +When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase' so that the local merge commits are included in the rebase (see linkgit:git-rebase[1] for details). + -When `preserve` (deprecated in favor of `merges`), also pass +When `preserve` (or just 'p', deprecated in favor of `merges`), also pass `--preserve-merges` along to 'git rebase' so that locally committed merge commits will not be flattened by running 'git pull'. + -When the value is `interactive`, the rebase is run in interactive mode. +When the value is `interactive` (or just 'i'), the rebase is run in interactive +mode. + *NOTE*: this is a possibly dangerous operation; do *not* use it unless you understand the implications (see linkgit:git-rebase[1] diff --git a/third_party/git/Documentation/config/push.txt b/third_party/git/Documentation/config/push.txt index 0a0e000569d8..f5e5b38c6889 100644 --- a/third_party/git/Documentation/config/push.txt +++ b/third_party/git/Documentation/config/push.txt @@ -1,6 +1,7 @@ push.default:: Defines the action `git push` should take if no refspec is - explicitly given. Different values are well-suited for + given (whether from the command-line, config, or elsewhere). + Different values are well-suited for specific workflows; for instance, in a purely central workflow (i.e. the fetch source is equal to the push destination), `upstream` is probably what you want. Possible values are: @@ -8,7 +9,7 @@ push.default:: -- * `nothing` - do not push anything (error out) unless a refspec is - explicitly given. This is primarily meant for people who want to + given. This is primarily meant for people who want to avoid mistakes by always being explicit. * `current` - push the current branch to update a branch with the same @@ -79,7 +80,7 @@ higher priority configuration file (e.g. `.git/config` in a repository) to clear the values inherited from a lower priority configuration files (e.g. `$HOME/.gitconfig`). + --- +---- Example: @@ -96,7 +97,7 @@ repo/.git/config This will result in only b (a and c are cleared). --- +---- push.recurseSubmodules:: Make sure all submodule commits used by the revisions to be pushed @@ -111,3 +112,5 @@ push.recurseSubmodules:: is 'no' then default behavior of ignoring submodules when pushing is retained. You may override this configuration at time of push by specifying '--recurse-submodules=check|on-demand|no'. + If not set, 'no' is used by default, unless 'submodule.recurse' is + set (in which case a 'true' value means 'on-demand'). diff --git a/third_party/git/Documentation/config/rebase.txt b/third_party/git/Documentation/config/rebase.txt index d98e32d812e7..7f7a07d22f86 100644 --- a/third_party/git/Documentation/config/rebase.txt +++ b/third_party/git/Documentation/config/rebase.txt @@ -5,6 +5,12 @@ rebase.useBuiltin:: is always used. Setting this will emit a warning, to alert any remaining users that setting this now does nothing. +rebase.backend:: + Default backend to use for rebasing. Possible choices are + 'apply' or 'merge'. In the future, if the merge backend gains + all remaining capabilities of the apply backend, this setting + may become unused. + rebase.stat:: Whether to show a diffstat of what changed upstream since the last rebase. False by default. diff --git a/third_party/git/Documentation/config/receive.txt b/third_party/git/Documentation/config/receive.txt index 65f78aac37fd..85d5b5a3d2d8 100644 --- a/third_party/git/Documentation/config/receive.txt +++ b/third_party/git/Documentation/config/receive.txt @@ -114,6 +114,28 @@ receive.hideRefs:: An attempt to update or delete a hidden ref by `git push` is rejected. +receive.procReceiveRefs:: + This is a multi-valued variable that defines reference prefixes + to match the commands in `receive-pack`. Commands matching the + prefixes will be executed by an external hook "proc-receive", + instead of the internal `execute_commands` function. If this + variable is not defined, the "proc-receive" hook will never be + used, and all commands will be executed by the internal + `execute_commands` function. ++ +For example, if this variable is set to "refs/for", pushing to reference +such as "refs/for/master" will not create or update a reference named +"refs/for/master", but may create or update a pull request directly by +running the hook "proc-receive". ++ +Optional modifiers can be provided in the beginning of the value to filter +commands for specific actions: create (a), modify (m), delete (d). +A `!` can be included in the modifiers to negate the reference prefix entry. +E.g.: ++ + git config --system --add receive.procReceiveRefs ad:refs/heads + git config --system --add receive.procReceiveRefs !:refs/heads + receive.updateServerInfo:: If set to true, git-receive-pack will run git-update-server-info after receiving data from git-push and updating refs. diff --git a/third_party/git/Documentation/config/remote.txt b/third_party/git/Documentation/config/remote.txt index 6c4cad83a2c9..a8e6437a9035 100644 --- a/third_party/git/Documentation/config/remote.txt +++ b/third_party/git/Documentation/config/remote.txt @@ -76,3 +76,11 @@ remote..pruneTags:: + See also `remote..prune` and the PRUNING section of linkgit:git-fetch[1]. + +remote..promisor:: + When set to true, this remote will be used to fetch promisor + objects. + +remote..partialclonefilter:: + The filter that will be applied when fetching from this + promisor remote. diff --git a/third_party/git/Documentation/config/sendemail.txt b/third_party/git/Documentation/config/sendemail.txt index 0006faf800ae..cbc5af42fdf0 100644 --- a/third_party/git/Documentation/config/sendemail.txt +++ b/third_party/git/Documentation/config/sendemail.txt @@ -61,3 +61,8 @@ sendemail.smtpBatchSize:: sendemail.smtpReloginDelay:: Seconds wait before reconnecting to smtp server. See also the `--relogin-delay` option of linkgit:git-send-email[1]. + +sendemail.forbidSendmailVariables:: + To avoid common misconfiguration mistakes, linkgit:git-send-email[1] + will abort with a warning if any configuration options for "sendmail" + exist. Set this variable to bypass the check. diff --git a/third_party/git/Documentation/config/stash.txt b/third_party/git/Documentation/config/stash.txt index abc7ef4a3a5c..00eb35434e88 100644 --- a/third_party/git/Documentation/config/stash.txt +++ b/third_party/git/Documentation/config/stash.txt @@ -1,17 +1,9 @@ stash.useBuiltin:: - Set to `false` to use the legacy shell script implementation of - linkgit:git-stash[1]. Is `true` by default, which means use - the built-in rewrite of it in C. -+ -The C rewrite is first included with Git version 2.22 (and Git for Windows -version 2.19). This option serves as an escape hatch to re-enable the -legacy version in case any bugs are found in the rewrite. This option and -the shell script version of linkgit:git-stash[1] will be removed in some -future release. -+ -If you find some reason to set this option to `false`, other than -one-off testing, you should report the behavior difference as a bug in -Git (see https://git-scm.com/community for details). + Unused configuration variable. Used in Git versions 2.22 to + 2.26 as an escape hatch to enable the legacy shellscript + implementation of stash. Now the built-in rewrite of it in C + is always used. Setting this will emit a warning, to alert any + remaining users that setting this now does nothing. stash.showPatch:: If this is set to true, the `git stash show` command without an diff --git a/third_party/git/Documentation/config/submodule.txt b/third_party/git/Documentation/config/submodule.txt index 0a1293b05135..d7a63c8c12bb 100644 --- a/third_party/git/Documentation/config/submodule.txt +++ b/third_party/git/Documentation/config/submodule.txt @@ -59,9 +59,17 @@ submodule.active:: submodule.recurse:: Specifies if commands recurse into submodules by default. This - applies to all commands that have a `--recurse-submodules` option, - except `clone`. + applies to all commands that have a `--recurse-submodules` option + (`checkout`, `fetch`, `grep`, `pull`, `push`, `read-tree`, `reset`, + `restore` and `switch`) except `clone` and `ls-files`. Defaults to false. + When set to true, it can be deactivated via the + `--no-recurse-submodules` option. Note that some Git commands + lacking this option may call some of the above commands affected by + `submodule.recurse`; for instance `git remote update` will call + `git fetch` but does not have a `--no-recurse-submodules` option. + For these commands a workaround is to temporarily change the + configuration value by using `git -c submodule.recurse=0`. submodule.fetchJobs:: Specifies how many submodules are fetched/cloned at the same time. @@ -79,4 +87,6 @@ submodule.alternateLocation:: submodule.alternateErrorStrategy:: Specifies how to treat errors with the alternates for a submodule as computed via `submodule.alternateLocation`. Possible values are - `ignore`, `info`, `die`. Default is `die`. + `ignore`, `info`, `die`. Default is `die`. Note that if set to `ignore` + or `info`, and if there is an error with the computed alternate, the + clone proceeds as if no alternate was specified. diff --git a/third_party/git/Documentation/config/tag.txt b/third_party/git/Documentation/config/tag.txt index ef5adb3f420d..5062a057ffc6 100644 --- a/third_party/git/Documentation/config/tag.txt +++ b/third_party/git/Documentation/config/tag.txt @@ -13,12 +13,5 @@ tag.gpgSign:: Use of this option when running in an automated script can result in a large number of tags being signed. It is therefore convenient to use an agent to avoid typing your gpg passphrase - several times. Note that this option doesn't affects tag signing + several times. Note that this option doesn't affect tag signing behavior enabled by "-u " or "--local-user=" options. - -tar.umask:: - This variable can be used to restrict the permission bits of - tar archive entries. The default is 0002, which turns off the - world write bit. The special value "user" indicates that the - archiving user's umask will be used instead. See umask(2) and - linkgit:git-archive[1]. diff --git a/third_party/git/Documentation/config/tar.txt b/third_party/git/Documentation/config/tar.txt new file mode 100644 index 000000000000..de8ff48ea9d4 --- /dev/null +++ b/third_party/git/Documentation/config/tar.txt @@ -0,0 +1,6 @@ +tar.umask:: + This variable can be used to restrict the permission bits of + tar archive entries. The default is 0002, which turns off the + world write bit. The special value "user" indicates that the + archiving user's umask will be used instead. See umask(2) and + linkgit:git-archive[1]. diff --git a/third_party/git/Documentation/config/trace2.txt b/third_party/git/Documentation/config/trace2.txt index 2edbfb02fe5b..01d3afd8a8b3 100644 --- a/third_party/git/Documentation/config/trace2.txt +++ b/third_party/git/Documentation/config/trace2.txt @@ -48,9 +48,24 @@ trace2.configParams:: May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment variable. Unset by default. +trace2.envVars:: + A comma-separated list of "important" environment variables that should + be recorded in the trace2 output. For example, + `GIT_HTTP_USER_AGENT,GIT_CONFIG` would cause the trace2 output to + contain events listing the overrides for HTTP user agent and the + location of the Git configuration file (assuming any are set). May be + overriden by the `GIT_TRACE2_ENV_VARS` environment variable. Unset by + default. + trace2.destinationDebug:: Boolean. When true Git will print error messages when a trace target destination cannot be opened for writing. By default, these errors are suppressed and tracing is silently disabled. May be overridden by the `GIT_TRACE2_DST_DEBUG` environment variable. + +trace2.maxFiles:: + Integer. When writing trace files to a target directory, do not + write additional traces if we would exceed this many files. Instead, + write a sentinel file that will block further tracing to this + directory. Defaults to 0, which disables this check. diff --git a/third_party/git/Documentation/config/uploadpack.txt b/third_party/git/Documentation/config/uploadpack.txt index ed1c835695c3..b0d761282cd6 100644 --- a/third_party/git/Documentation/config/uploadpack.txt +++ b/third_party/git/Documentation/config/uploadpack.txt @@ -57,6 +57,24 @@ uploadpack.allowFilter:: If this option is set, `upload-pack` will support partial clone and partial fetch object filtering. +uploadpackfilter.allow:: + Provides a default value for unspecified object filters (see: the + below configuration variable). + Defaults to `true`. + +uploadpackfilter..allow:: + Explicitly allow or ban the object filter corresponding to + ``, where `` may be one of: `blob:none`, + `blob:limit`, `tree`, `sparse:oid`, or `combine`. If using + combined filters, both `combine` and all of the nested filter + kinds must be allowed. Defaults to `uploadpackfilter.allow`. + +uploadpackfilter.tree.maxDepth:: + Only allow `--filter=tree:` when `` is no more than the value of + `uploadpackfilter.tree.maxDepth`. If set, this also implies + `uploadpackfilter.tree.allow=true`, unless this configuration + variable had already been set. Has no effect if unset. + uploadpack.allowRefInWant:: If this option is set, `upload-pack` will support the `ref-in-want` feature of the protocol version 2 `fetch` command. This feature diff --git a/third_party/git/Documentation/config/user.txt b/third_party/git/Documentation/config/user.txt index 0557cbbceb81..59aec7c3aed3 100644 --- a/third_party/git/Documentation/config/user.txt +++ b/third_party/git/Documentation/config/user.txt @@ -13,7 +13,12 @@ committer.email:: Also, all of these can be overridden by the `GIT_AUTHOR_NAME`, `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_NAME`, `GIT_COMMITTER_EMAIL` and `EMAIL` environment variables. - See linkgit:git-commit-tree[1] for more information. ++ +Note that the `name` forms of these variables conventionally refer to +some form of a personal name. See linkgit:git-commit[1] and the +environment variables section of linkgit:git[1] for more information on +these settings and the `credential.username` option if you're looking +for authentication credentials instead. user.useConfigOnly:: Instruct Git to avoid trying to guess defaults for `user.email` diff --git a/third_party/git/Documentation/date-formats.txt b/third_party/git/Documentation/date-formats.txt index 6926e0a4c86a..f1097fac69a6 100644 --- a/third_party/git/Documentation/date-formats.txt +++ b/third_party/git/Documentation/date-formats.txt @@ -20,7 +20,9 @@ RFC 2822:: ISO 8601:: Time and date specified by the ISO 8601 standard, for example `2005-04-07T22:13:13`. The parser accepts a space instead of the - `T` character as well. + `T` character as well. Fractional parts of a second will be ignored, + for example `2005-04-07T22:13:13.019` will be treated as + `2005-04-07T22:13:13`. + NOTE: In addition, the date part is accepted in the following formats: `YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`. diff --git a/third_party/git/Documentation/diff-format.txt b/third_party/git/Documentation/diff-format.txt index 4d846d73463c..fbbd410a8418 100644 --- a/third_party/git/Documentation/diff-format.txt +++ b/third_party/git/Documentation/diff-format.txt @@ -61,7 +61,7 @@ Possible status letters are: - R: renaming of a file - T: change in the type of the file - U: file is unmerged (you must complete the merge before it can -be committed) + be committed) - X: "unknown" change type (most probably a bug, please report it) Status letters C and R are always followed by a score (denoting the diff --git a/third_party/git/Documentation/diff-generate-patch.txt b/third_party/git/Documentation/diff-generate-patch.txt index f10ca410ad8a..b10ff4caa6c5 100644 --- a/third_party/git/Documentation/diff-generate-patch.txt +++ b/third_party/git/Documentation/diff-generate-patch.txt @@ -1,12 +1,17 @@ -Generating patches with -p --------------------------- - -When "git-diff-index", "git-diff-tree", or "git-diff-files" are run -with a `-p` option, "git diff" without the `--raw` option, or -"git log" with the "-p" option, they -do not produce the output described above; instead they produce a -patch file. You can customize the creation of such patches via the -`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables. +Generating patch text with -p +----------------------------- + +Running +linkgit:git-diff[1], +linkgit:git-log[1], +linkgit:git-show[1], +linkgit:git-diff-index[1], +linkgit:git-diff-tree[1], or +linkgit:git-diff-files[1] +with the `-p` option produces patch text. +You can customize the creation of patch text via the +`GIT_EXTERNAL_DIFF` and the `GIT_DIFF_OPTS` environment variables +(see linkgit:git[1]). What the -p option produces is slightly different from the traditional diff format: @@ -49,7 +54,7 @@ similarity index value of 100% is thus reserved for two equal files, while 100% dissimilarity means that no line from the old file made it into the new one. + -The index line includes the SHA-1 checksum before and after the change. +The index line includes the blob object names before and after the change. The is included if the file mode does not change; otherwise, separate lines indicate the old and the new mode. @@ -70,7 +75,7 @@ separate lines indicate the old and the new mode. rename to a -combined diff format +Combined diff format -------------------- Any diff-generating command can take the `-c` or `--cc` option to @@ -80,7 +85,7 @@ linkgit:git-show[1]. Note also that you can give the `-m` option to any of these commands to force generation of diffs with individual parents of a merge. -A 'combined diff' format looks like this: +A "combined diff" format looks like this: ------------ diff --combined describe.c @@ -113,11 +118,11 @@ index fabadb8,cc95eb0..4866510 ------------ 1. It is preceded with a "git diff" header, that looks like - this (when `-c` option is used): + this (when the `-c` option is used): diff --combined file + -or like this (when `--cc` option is used): +or like this (when the `--cc` option is used): diff --cc file @@ -160,7 +165,7 @@ parents. 4. Chunk header format is modified to prevent people from accidentally feeding it to `patch -p1`. Combined diff format was created for review of merge commit changes, and was not - meant for apply. The change is similar to the change in the + meant to be applied. The change is similar to the change in the extended 'index' header: @@@ @@@ diff --git a/third_party/git/Documentation/diff-options.txt b/third_party/git/Documentation/diff-options.txt index 09faee3b44db..573fb9bb71e2 100644 --- a/third_party/git/Documentation/diff-options.txt +++ b/third_party/git/Documentation/diff-options.txt @@ -73,6 +73,11 @@ ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] +ifdef::git-log[] +-t:: + Show the tree objects in the diff output. +endif::git-log[] + --indent-heuristic:: Enable the heuristic that shifts diff hunk boundaries to make patches easier to read. This is the default. @@ -441,10 +446,11 @@ endif::git-format-patch[] --abbrev[=]:: Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header - lines, show only a partial prefix. This is - independent of the `--full-index` option above, which controls - the diff-patch output format. Non default number of - digits can be specified with `--abbrev=`. + lines, show only a partial prefix. + In diff-patch output format, `--full-index` takes higher + precedence, i.e. if `--full-index` is specified, full blob + names will be shown regardless of `--abbrev`. + Non default number of digits can be specified with `--abbrev=`. -B[][/]:: --break-rewrites[=[][/]]:: @@ -567,13 +573,13 @@ To illustrate the difference between `-S --pickaxe-regex` and file: + ---- -+ return !regexec(regexp, two->ptr, 1, ®match, 0); ++ return frotz(nitfol, two->ptr, 1, 0); ... -- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0); +- hit = frotz(nitfol, mf2.ptr, 1, 0); ---- + -While `git log -G"regexec\(regexp"` will show this commit, `git log --S"regexec\(regexp" --pickaxe-regex` will not (because the number of +While `git log -G"frotz\(nitfol"` will show this commit, `git log +-S"frotz\(nitfol" --pickaxe-regex` will not (because the number of occurrences of that string did not change). + Unless `--text` is supplied patches of binary files without a textconv @@ -643,15 +649,18 @@ ifndef::git-format-patch[] -R:: Swap two inputs; that is, show differences from index or on-disk file to tree contents. +endif::git-format-patch[] --relative[=]:: +--no-relative:: When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a as an argument. -endif::git-format-patch[] + `--no-relative` can be used to countermand both `diff.relative` config + option and previous `--relative`. -a:: --text:: diff --git a/third_party/git/Documentation/doc-diff b/third_party/git/Documentation/doc-diff index 3355be479812..1694300e50bf 100755 --- a/third_party/git/Documentation/doc-diff +++ b/third_party/git/Documentation/doc-diff @@ -21,7 +21,7 @@ asciidoc use asciidoc with both commits to-asciidoc use asciidoc with the 'to'-commit to-asciidoctor use asciidoctor with the 'to'-commit asciidoctor use asciidoctor with both commits -cut-header-footer cut away header and footer +cut-footer cut away footer " SUBDIRECTORY_OK=1 . "$(git --exec-path)/git-sh-setup" @@ -31,7 +31,7 @@ force= clean= from_program= to_program= -cut_header_footer= +cut_footer= while test $# -gt 0 do case "$1" in @@ -55,8 +55,8 @@ do --asciidoc) from_program=-asciidoc to_program=-asciidoc ;; - --cut-header-footer) - cut_header_footer=-cut-header-footer ;; + --cut-footer) + cut_footer=-cut-footer ;; --) shift; break ;; *) @@ -118,8 +118,8 @@ construct_makemanflags () { from_makemanflags=$(construct_makemanflags "$from_program") && to_makemanflags=$(construct_makemanflags "$to_program") && -from_dir=$from_oid$from_program$cut_header_footer && -to_dir=$to_oid$to_program$cut_header_footer && +from_dir=$from_oid$from_program$cut_footer && +to_dir=$to_oid$to_program$cut_footer && # generate_render_makefile generate_render_makefile () { @@ -127,7 +127,7 @@ generate_render_makefile () { while read src do dst=$2/${src#$1/} - printf 'all:: %s\n' "$dst" + printf 'all: %s\n' "$dst" printf '%s: %s\n' "$dst" "$src" printf '\t@echo >&2 " RENDER $(notdir $@)" && \\\n' printf '\tmkdir -p $(dir $@) && \\\n' @@ -169,12 +169,11 @@ render_tree () { make -j$parallel -f - && mv "$tmp/rendered/$dname+" "$tmp/rendered/$dname" - if test "$cut_header_footer" = "-cut-header-footer" + if test "$cut_footer" = "-cut-footer" then for f in $(find "$tmp/rendered/$dname" -type f) do - tail -n +3 "$f" | head -n -2 | - sed -e '1{/^$/d}' -e '${/^$/d}' >"$f+" && + head -n -2 "$f" | sed -e '${/^$/d}' >"$f+" && mv "$f+" "$f" || return 1 done diff --git a/third_party/git/Documentation/fetch-options.txt b/third_party/git/Documentation/fetch-options.txt index 3c9b4f9e0951..2bf77b46fd85 100644 --- a/third_party/git/Documentation/fetch-options.txt +++ b/third_party/git/Documentation/fetch-options.txt @@ -61,9 +61,16 @@ this option multiple times, one for each matching ref name. See also the `fetch.negotiationAlgorithm` configuration variable documented in linkgit:git-config[1]. -ifndef::git-pull[] --dry-run:: Show what would be done, without making any changes. + +ifndef::git-pull[] +--[no-]write-fetch-head:: + Write the list of remote refs fetched in the `FETCH_HEAD` + file directly under `$GIT_DIR`. This is the default. + Passing `--no-write-fetch-head` from the command line tells + Git not to write the file. Under `--dry-run` option, the + file is never written. endif::git-pull[] -f:: @@ -88,9 +95,16 @@ ifndef::git-pull[] Allow several and arguments to be specified. No s may be specified. +--[no-]auto-maintenance:: --[no-]auto-gc:: - Run `git gc --auto` at the end to perform garbage collection - if needed. This is enabled by default. + Run `git maintenance run --auto` at the end to perform automatic + repository maintenance if needed. (`--[no-]auto-gc` is a synonym.) + This is enabled by default. + +--[no-]write-commit-graph:: + Write a commit-graph after fetching. This overrides the config + setting `fetch.writeCommitGraph`. +endif::git-pull[] -p:: --prune:: @@ -103,6 +117,7 @@ ifndef::git-pull[] was cloned with the --mirror option), then they are also subject to pruning. Supplying `--prune-tags` is a shorthand for providing the tag refspec. +ifndef::git-pull[] + See the PRUNING section below for more details. @@ -129,13 +144,15 @@ endif::git-pull[] behavior for a remote may be specified with the remote..tagOpt setting. See linkgit:git-config[1]. -ifndef::git-pull[] --refmap=:: When fetching refs listed on the command line, use the specified refspec (can be given more than once) to map the refs to remote-tracking branches, instead of the values of `remote.*.fetch` configuration variables for the remote - repository. See section on "Configured Remote-tracking + repository. Providing an empty `` to the + `--refmap` option causes Git to ignore the configured + refspecs and rely entirely on the refspecs supplied as + command-line arguments. See section on "Configured Remote-tracking Branches" for details. -t:: @@ -147,6 +164,7 @@ ifndef::git-pull[] is used (though tags may be pruned anyway if they are also the destination of an explicit refspec; see `--prune`). +ifndef::git-pull[] --recurse-submodules[=yes|on-demand|no]:: This option controls if and under what conditions new commits of populated submodules should be fetched too. It can be used as a @@ -156,19 +174,36 @@ ifndef::git-pull[] value. Use 'on-demand' to only recurse into a populated submodule when the superproject retrieves a commit that updates the submodule's reference to a commit that isn't already in the local submodule - clone. + clone. By default, 'on-demand' is used, unless + `fetch.recurseSubmodules` is set (see linkgit:git-config[1]). +endif::git-pull[] -j:: --jobs=:: - Number of parallel children to be used for fetching submodules. - Each will fetch from different submodules, such that fetching many - submodules will be faster. By default submodules will be fetched - one at a time. + Number of parallel children to be used for all forms of fetching. ++ +If the `--multiple` option was specified, the different remotes will be fetched +in parallel. If multiple submodules are fetched, they will be fetched in +parallel. To control them independently, use the config settings +`fetch.parallel` and `submodule.fetchJobs` (see linkgit:git-config[1]). ++ +Typically, parallel recursive and multi-remote fetches will be faster. By +default fetches are performed sequentially, not in parallel. +ifndef::git-pull[] --no-recurse-submodules:: Disable recursive fetching of submodules (this has the same effect as using the `--recurse-submodules=no` option). +endif::git-pull[] +--set-upstream:: + If the remote is fetched successfully, add upstream + (tracking) reference, used by argument-less + linkgit:git-pull[1] and other commands. For more information, + see `branch..merge` and `branch..remote` in + linkgit:git-config[1]. + +ifndef::git-pull[] --submodule-prefix=:: Prepend to paths printed in informative messages such as "Fetching submodule foo". This option is used @@ -181,7 +216,6 @@ ifndef::git-pull[] recursion (such as settings in linkgit:gitmodules[5] and linkgit:git-config[1]) override this option, as does specifying --[no-]recurse-submodules directly. -endif::git-pull[] -u:: --update-head-ok:: @@ -191,6 +225,7 @@ endif::git-pull[] to communicate with 'git fetch', and unless you are implementing your own Porcelain you are not supposed to use it. +endif::git-pull[] --upload-pack :: When given, and the repository to fetch from is handled diff --git a/third_party/git/Documentation/git-add.txt b/third_party/git/Documentation/git-add.txt index 8b0e4c7fa8c5..be5e3ac54b85 100644 --- a/third_party/git/Documentation/git-add.txt +++ b/third_party/git/Documentation/git-add.txt @@ -11,7 +11,8 @@ SYNOPSIS 'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize] - [--chmod=(+|-)x] [--] [...] + [--chmod=(+|-)x] [--pathspec-from-file= [--pathspec-file-nul]] + [--] [...] DESCRIPTION ----------- @@ -187,6 +188,19 @@ for "git add --no-all ...", i.e. ignored removed files. bit is only changed in the index, the files on disk are left unchanged. +--pathspec-from-file=:: + Pathspec is passed in `` instead of commandline args. If + `` is exactly `-` then standard input is used. Pathspec + elements are separated by LF or CR/LF. Pathspec elements can be + quoted as explained for the configuration variable `core.quotePath` + (see linkgit:git-config[1]). See also `--pathspec-file-nul` and + global `--literal-pathspecs`. + +--pathspec-file-nul:: + Only meaningful with `--pathspec-from-file`. Pathspec elements are + separated with NUL character and all other characters are taken + literally (including newlines and quotes). + \--:: This option can be used to separate command-line options from the list of files, (useful when filenames might be mistaken diff --git a/third_party/git/Documentation/git-am.txt b/third_party/git/Documentation/git-am.txt index fc3b993c3338..38c0852139c1 100644 --- a/third_party/git/Documentation/git-am.txt +++ b/third_party/git/Documentation/git-am.txt @@ -16,7 +16,7 @@ SYNOPSIS [--exclude=] [--include=] [--reject] [-q | --quiet] [--[no-]scissors] [-S[]] [--patch-format=] [( | )...] -'git am' (--continue | --skip | --abort | --quit | --show-current-patch) +'git am' (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)]) DESCRIPTION ----------- @@ -148,9 +148,12 @@ default. You can use `--no-utf8` to override this. -S[]:: --gpg-sign[=]:: +--no-gpg-sign:: GPG-sign commits. The `keyid` argument is optional and defaults to the committer identity; if specified, it must be - stuck to the option without a space. + stuck to the option without a space. `--no-gpg-sign` is useful to + countermand both `commit.gpgSign` configuration variable, and + earlier `--gpg-sign`. --continue:: -r:: @@ -176,9 +179,11 @@ default. You can use `--no-utf8` to override this. Abort the patching operation but keep HEAD and the index untouched. ---show-current-patch:: - Show the patch being applied when "git am" is stopped because - of conflicts. +--show-current-patch[=(diff|raw)]:: + Show the message at which `git am` has stopped due to + conflicts. If `raw` is specified, show the raw contents of + the e-mail message; if `diff`, show the diff portion only. + Defaults to `raw`. DISCUSSION ---------- @@ -190,8 +195,8 @@ the commit, after stripping common prefix "[PATCH ]". The "Subject: " line is supposed to concisely describe what the commit is about in one line of text. -"From: " and "Subject: " lines starting the body override the respective -commit author name and title values taken from the headers. +"From: ", "Date: ", and "Subject: " lines starting the body override the +respective commit author name and title values taken from the headers. The commit message is formed by the title taken from the "Subject: ", a blank line and the body of the message up to diff --git a/third_party/git/Documentation/git-apply.txt b/third_party/git/Documentation/git-apply.txt index b9aa39000fc8..91d9a8601c8c 100644 --- a/third_party/git/Documentation/git-apply.txt +++ b/third_party/git/Documentation/git-apply.txt @@ -61,18 +61,18 @@ OPTIONS file and detects errors. Turns off "apply". --index:: - When `--check` is in effect, or when applying the patch - (which is the default when none of the options that - disables it is in effect), make sure the patch is - applicable to what the current index file records. If - the file to be patched in the working tree is not - up to date, it is flagged as an error. This flag also - causes the index file to be updated. + Apply the patch to both the index and the working tree (or + merely check that it would apply cleanly to both if `--check` is + in effect). Note that `--index` expects index entries and + working tree copies for relevant paths to be identical (their + contents and metadata such as file mode must match), and will + raise an error if they are not, even if the patch would apply + cleanly to both the index and the working tree in isolation. --cached:: - Apply a patch without touching the working tree. Instead take the - cached data, apply the patch, and store the result in the index - without using the working tree. This implies `--index`. + Apply the patch to just the index, without touching the working + tree. If `--check` is in effect, merely check that it would + apply cleanly to the index entry. --intent-to-add:: When applying the patch only to the working tree, mark new diff --git a/third_party/git/Documentation/git-archive.txt b/third_party/git/Documentation/git-archive.txt index cfa1e4ebe486..9f8172828d70 100644 --- a/third_party/git/Documentation/git-archive.txt +++ b/third_party/git/Documentation/git-archive.txt @@ -55,6 +55,12 @@ OPTIONS --output=:: Write the archive to instead of stdout. +--add-file=:: + Add a non-tracked file to the archive. Can be repeated to add + multiple files. The path of the file in the archive is built + by concatenating the value for `--prefix` (if any) and the + basename of . + --worktree-attributes:: Look for attributes in .gitattributes files in the working tree as well (see <>). diff --git a/third_party/git/Documentation/git-bisect-lk2009.txt b/third_party/git/Documentation/git-bisect-lk2009.txt index e99925184d03..f3d9566c8988 100644 --- a/third_party/git/Documentation/git-bisect-lk2009.txt +++ b/third_party/git/Documentation/git-bisect-lk2009.txt @@ -158,7 +158,7 @@ Test suites are very nice. But when they are used alone, they are supposed to be used so that all the tests are checked after each commit. This means that they are not very efficient, because many tests are run for no interesting result, and they suffer from -combinational explosion. +combinatorial explosion. In fact the problem is that big software often has many different configuration options and that each test case should pass for each @@ -473,7 +473,7 @@ Z-Z ------------- 2) starting from the "good" ends of the graph, associate to each -commit the number of ancestors it has plus one + commit the number of ancestors it has plus one For example with the following graph where H is the "bad" commit and A and D are some parents of some "good" commits: @@ -514,7 +514,7 @@ D---E ------------- 4) the best bisection point is the commit with the highest associated -number + number So in the above example the best bisection point is commit C. @@ -580,8 +580,8 @@ good or a bad commit does not give more or less information). Let's also suppose that we have a cleaned up graph like one after step 1) in the bisection algorithm above. This means that we can measure -the information we get in terms of number of commit we can remove from -the graph.. + the information we get in terms of number of commit we can remove + from the graph.. And let's take a commit X in the graph. @@ -689,18 +689,18 @@ roughly the following steps: 6) sort the commit by decreasing associated value 7) if the first commit has not been skipped, we can return it and stop -here + here 8) otherwise filter out all the skipped commits in the sorted list 9) use a pseudo random number generator (PRNG) to generate a random -number between 0 and 1 + number between 0 and 1 10) multiply this random number with its square root to bias it toward -0 + 0 11) multiply the result by the number of commits in the filtered list -to get an index into this list + to get an index into this list 12) return the commit at the computed index @@ -1350,9 +1350,9 @@ References - [[[1]]] https://www.nist.gov/sites/default/files/documents/director/planning/report02-3.pdf['The Economic Impacts of Inadequate Infratructure for Software Testing'. Nist Planning Report 02-3], see Executive Summary and Chapter 8. - [[[2]]] http://www.oracle.com/technetwork/java/codeconvtoc-136057.html['Code Conventions for the Java Programming Language'. Sun Microsystems.] - [[[3]]] https://en.wikipedia.org/wiki/Software_maintenance['Software maintenance'. Wikipedia.] -- [[[4]]] https://public-inbox.org/git/7vps5xsbwp.fsf_-_@assigned-by-dhcp.cox.net/[Junio C Hamano. 'Automated bisect success story'.] +- [[[4]]] https://lore.kernel.org/git/7vps5xsbwp.fsf_-_@assigned-by-dhcp.cox.net/[Junio C Hamano. 'Automated bisect success story'.] - [[[5]]] https://lwn.net/Articles/317154/[Christian Couder. 'Fully automated bisecting with "git bisect run"'. LWN.net.] - [[[6]]] https://lwn.net/Articles/277872/[Jonathan Corbet. 'Bisection divides users and developers'. LWN.net.] -- [[[7]]] http://marc.info/?l=linux-kernel&m=119702753411680&w=2[Ingo Molnar. 'Re: BUG 2.6.23-rc3 can't see sd partitions on Alpha'. Linux-kernel mailing list.] +- [[[7]]] https://lore.kernel.org/lkml/20071207113734.GA14598@elte.hu/[Ingo Molnar. 'Re: BUG 2.6.23-rc3 can't see sd partitions on Alpha'. Linux-kernel mailing list.] - [[[8]]] https://www.kernel.org/pub/software/scm/git/docs/git-bisect.html[Junio C Hamano and the git-list. 'git-bisect(1) Manual Page'. Linux Kernel Archives.] - [[[9]]] https://github.com/Ealdwulf/bbchop[Ealdwulf. 'bbchop'. GitHub.] diff --git a/third_party/git/Documentation/git-bisect.txt b/third_party/git/Documentation/git-bisect.txt index 4b45d837a7e7..fbb39fbdf5d6 100644 --- a/third_party/git/Documentation/git-bisect.txt +++ b/third_party/git/Documentation/git-bisect.txt @@ -16,8 +16,8 @@ DESCRIPTION The command takes various subcommands, and different options depending on the subcommand: - git bisect start [--term-{old,good}= --term-{new,bad}=] - [--no-checkout] [ [...]] [--] [...] + git bisect start [--term-{new,bad}= --term-{old,good}=] + [--no-checkout] [--first-parent] [ [...]] [--] [...] git bisect (bad|new|) [] git bisect (good|old|) [...] git bisect terms [--term-good | --term-bad] @@ -365,6 +365,17 @@ does not require a checked out tree. + If the repository is bare, `--no-checkout` is assumed. +--first-parent:: ++ +Follow only the first parent commit upon seeing a merge commit. ++ +In detecting regressions introduced through the merging of a branch, the merge +commit will be identified as introduction of the bug and its ancestors will be +ignored. ++ +This option is particularly useful in avoiding false positives when a merged +branch contained broken or non-buildable commits, but the merge itself was OK. + EXAMPLES -------- @@ -413,7 +424,7 @@ $ cat ~/test.sh # tweak the working tree by merging the hot-fix branch # and then attempt a build -if git merge --no-commit hot-fix && +if git merge --no-commit --no-ff hot-fix && make then # run project specific test and report its status diff --git a/third_party/git/Documentation/git-branch.txt b/third_party/git/Documentation/git-branch.txt index 135206ff4aba..ace4ad3da887 100644 --- a/third_party/git/Documentation/git-branch.txt +++ b/third_party/git/Documentation/git-branch.txt @@ -11,8 +11,8 @@ SYNOPSIS 'git branch' [--color[=] | --no-color] [--show-current] [-v [--abbrev= | --no-abbrev]] [--column[=] | --no-column] [--sort=] - [(--merged | --no-merged) []] - [--contains []] + [--merged []] [--no-merged []] + [--contains []] [--no-contains []] [--points-at ] [--format=] [(-r | --remotes) | (-a | --all)] [--list] [...] @@ -252,13 +252,11 @@ start-point is either a local or remote-tracking branch. --merged []:: Only list branches whose tips are reachable from the - specified commit (HEAD if not specified). Implies `--list`, - incompatible with `--no-merged`. + specified commit (HEAD if not specified). Implies `--list`. --no-merged []:: Only list branches whose tips are not reachable from the - specified commit (HEAD if not specified). Implies `--list`, - incompatible with `--merged`. + specified commit (HEAD if not specified). Implies `--list`. :: The name of the branch to create or delete. @@ -370,6 +368,8 @@ serve four related but different purposes: - `--no-merged` is used to find branches which are candidates for merging into HEAD, since those branches are not fully contained by HEAD. +include::ref-reachability-filters.txt[] + SEE ALSO -------- linkgit:git-check-ref-format[1], diff --git a/third_party/git/Documentation/git-bugreport.txt b/third_party/git/Documentation/git-bugreport.txt new file mode 100644 index 000000000000..66e88c2e312b --- /dev/null +++ b/third_party/git/Documentation/git-bugreport.txt @@ -0,0 +1,54 @@ +git-bugreport(1) +================ + +NAME +---- +git-bugreport - Collect information for user to file a bug report + +SYNOPSIS +-------- +[verse] +'git bugreport' [(-o | --output-directory) ] [(-s | --suffix) ] + +DESCRIPTION +----------- +Captures information about the user's machine, Git client, and repository state, +as well as a form requesting information about the behavior the user observed, +into a single text file which the user can then share, for example to the Git +mailing list, in order to report an observed bug. + +The following information is requested from the user: + + - Reproduction steps + - Expected behavior + - Actual behavior + +The following information is captured automatically: + + - 'git version --build-options' + - uname sysname, release, version, and machine strings + - Compiler-specific info string + - A list of enabled hooks + - $SHELL + +This tool is invoked via the typical Git setup process, which means that in some +cases, it might not be able to launch - for example, if a relevant config file +is unreadable. In this kind of scenario, it may be helpful to manually gather +the kind of information listed above when manually asking for help. + +OPTIONS +------- +-o :: +--output-directory :: + Place the resulting bug report file in `` instead of the root of + the Git repository. + +-s :: +--suffix :: + Specify an alternate suffix for the bugreport name, to create a file + named 'git-bugreport-'. This should take the form of a + strftime(3) format string; the current local time will be used. + +GIT +--- +Part of the linkgit:git[1] suite diff --git a/third_party/git/Documentation/git-bundle.txt b/third_party/git/Documentation/git-bundle.txt index 7d6c9dcd177b..53804cad4b67 100644 --- a/third_party/git/Documentation/git-bundle.txt +++ b/third_party/git/Documentation/git-bundle.txt @@ -9,8 +9,9 @@ git-bundle - Move objects and refs by archive SYNOPSIS -------- [verse] -'git bundle' create -'git bundle' verify +'git bundle' create [-q | --quiet | --progress | --all-progress] [--all-progress-implied] + [--version=] +'git bundle' verify [-q | --quiet] 'git bundle' list-heads [...] 'git bundle' unbundle [...] @@ -20,11 +21,14 @@ DESCRIPTION Some workflows require that one or more branches of development on one machine be replicated on another machine, but the two machines cannot be directly connected, and therefore the interactive Git protocols (git, -ssh, http) cannot be used. This command provides support for -'git fetch' and 'git pull' to operate by packaging objects and references -in an archive at the originating machine, then importing those into -another repository using 'git fetch' and 'git pull' -after moving the archive by some means (e.g., by sneakernet). As no +ssh, http) cannot be used. + +The 'git bundle' command packages objects and references in an archive +at the originating machine, which can then be imported into another +repository using 'git fetch', 'git pull', or 'git clone', +after moving the archive by some means (e.g., by sneakernet). + +As no direct connection between the repositories exists, the user must specify a basis for the bundle that is held by the destination repository: the bundle assumes that all objects in the basis are already in the @@ -33,9 +37,11 @@ destination repository. OPTIONS ------- -create :: +create [options] :: Used to create a bundle named 'file'. This requires the - 'git-rev-list-args' arguments to define the bundle contents. + '' arguments to define the bundle contents. + 'options' contains the options specific to the 'git bundle create' + subcommand. verify :: Used to check that a bundle file is valid and will apply @@ -75,6 +81,39 @@ unbundle :: necessarily everything in the pack (in this case, 'git bundle' acts like 'git fetch-pack'). +--progress:: + Progress status is reported on the standard error stream + by default when it is attached to a terminal, unless -q + is specified. This flag forces progress status even if + the standard error stream is not directed to a terminal. + +--all-progress:: + When --stdout is specified then progress report is + displayed during the object count and compression phases + but inhibited during the write-out phase. The reason is + that in some cases the output stream is directly linked + to another command which may wish to display progress + status of its own as it processes incoming pack data. + This flag is like --progress except that it forces progress + report for the write-out phase as well even if --stdout is + used. + +--all-progress-implied:: + This is used to imply --all-progress whenever progress display + is activated. Unlike --all-progress this flag doesn't actually + force any progress display by itself. + +--version=:: + Specify the bundle version. Version 2 is the older format and can only be + used with SHA-1 repositories; the newer version 3 contains capabilities that + permit extensions. The default is the oldest supported format, based on the + hash algorithm in use. + +-q:: +--quiet:: + This flag makes the command not to report its progress + on the standard error stream. + SPECIFYING REFERENCES --------------------- @@ -92,6 +131,14 @@ It is okay to err on the side of caution, causing the bundle file to contain objects already in the destination, as these are ignored when unpacking at the destination. +`git clone` can use any bundle created without negative refspecs +(e.g., `new`, but not `old..new`). +If you want to match `git clone --mirror`, which would include your +refs such as `refs/remotes/*`, use `--all`. +If you want to provide the same set of refs that a clone directly +from the source repository would get, use `--branches --tags` for +the ``. + EXAMPLES -------- diff --git a/third_party/git/Documentation/git-cat-file.txt b/third_party/git/Documentation/git-cat-file.txt index 8eca671b8278..8e192d87db4c 100644 --- a/third_party/git/Documentation/git-cat-file.txt +++ b/third_party/git/Documentation/git-cat-file.txt @@ -10,7 +10,7 @@ SYNOPSIS -------- [verse] 'git cat-file' (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | | --textconv | --filters ) [--path=] -'git cat-file' (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks] +'git cat-file' (--batch[=] | --batch-check[=]) [ --textconv | --filters ] [--follow-symlinks] DESCRIPTION ----------- diff --git a/third_party/git/Documentation/git-check-attr.txt b/third_party/git/Documentation/git-check-attr.txt index 3c0578217ba7..84f41a8e8259 100644 --- a/third_party/git/Documentation/git-check-attr.txt +++ b/third_party/git/Documentation/git-check-attr.txt @@ -32,7 +32,7 @@ OPTIONS instead of from the command-line. -z:: - The output format is modified to be machine-parseable. + The output format is modified to be machine-parsable. If `--stdin` is also given, input paths are separated with a NUL character instead of a linefeed character. diff --git a/third_party/git/Documentation/git-check-ignore.txt b/third_party/git/Documentation/git-check-ignore.txt index 8b42cb3fb20a..0c3924a63d2f 100644 --- a/third_party/git/Documentation/git-check-ignore.txt +++ b/third_party/git/Documentation/git-check-ignore.txt @@ -30,16 +30,22 @@ OPTIONS valid with a single pathname. -v, --verbose:: - Also output details about the matching pattern (if any) - for each given pathname. For precedence rules within and - between exclude sources, see linkgit:gitignore[5]. + Instead of printing the paths that are excluded, for each path + that matches an exclude pattern, print the exclude pattern + together with the path. (Matching an exclude pattern usually + means the path is excluded, but if the pattern begins with '!' + then it is a negated pattern and matching it means the path is + NOT excluded.) ++ +For precedence rules within and between exclude sources, see +linkgit:gitignore[5]. --stdin:: Read pathnames from the standard input, one per line, instead of from the command-line. -z:: - The output format is modified to be machine-parseable (see + The output format is modified to be machine-parsable (see below). If `--stdin` is also given, input paths are separated with a NUL character instead of a linefeed character. diff --git a/third_party/git/Documentation/git-checkout.txt b/third_party/git/Documentation/git-checkout.txt index cf3cac0a2b51..afa5c11fd3c4 100644 --- a/third_party/git/Documentation/git-checkout.txt +++ b/third_party/git/Documentation/git-checkout.txt @@ -12,14 +12,14 @@ SYNOPSIS 'git checkout' [-q] [-f] [-m] --detach [] 'git checkout' [-q] [-f] [-m] [--detach] 'git checkout' [-q] [-f] [-m] [[-b|-B|--orphan] ] [] -'git checkout' [-f|--ours|--theirs|-m|--conflict=