summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format169
-rw-r--r--.gitattributes14
-rw-r--r--.github/CONTRIBUTING.md19
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md7
-rw-r--r--.gitignore14
-rw-r--r--.gitmodules4
-rw-r--r--.mailmap26
-rw-r--r--.travis.yml125
-rw-r--r--.tsan-suppressions10
-rw-r--r--Documentation/.gitignore2
-rw-r--r--Documentation/CodingGuidelines72
-rw-r--r--Documentation/Makefile40
-rw-r--r--Documentation/RelNotes/1.7.10.1.txt2
-rw-r--r--Documentation/RelNotes/1.7.11.7.txt2
-rw-r--r--Documentation/RelNotes/2.10.0.txt390
-rw-r--r--Documentation/RelNotes/2.10.1.txt131
-rw-r--r--Documentation/RelNotes/2.10.2.txt111
-rw-r--r--Documentation/RelNotes/2.10.3.txt55
-rw-r--r--Documentation/RelNotes/2.10.4.txt4
-rw-r--r--Documentation/RelNotes/2.10.5.txt17
-rw-r--r--Documentation/RelNotes/2.11.0.txt593
-rw-r--r--Documentation/RelNotes/2.11.1.txt168
-rw-r--r--Documentation/RelNotes/2.11.2.txt12
-rw-r--r--Documentation/RelNotes/2.11.3.txt4
-rw-r--r--Documentation/RelNotes/2.11.4.txt17
-rw-r--r--Documentation/RelNotes/2.12.0.txt500
-rw-r--r--Documentation/RelNotes/2.12.1.txt41
-rw-r--r--Documentation/RelNotes/2.12.2.txt83
-rw-r--r--Documentation/RelNotes/2.12.3.txt64
-rw-r--r--Documentation/RelNotes/2.12.4.txt4
-rw-r--r--Documentation/RelNotes/2.12.5.txt17
-rw-r--r--Documentation/RelNotes/2.13.0.txt618
-rw-r--r--Documentation/RelNotes/2.13.1.txt114
-rw-r--r--Documentation/RelNotes/2.13.2.txt54
-rw-r--r--Documentation/RelNotes/2.13.3.txt62
-rw-r--r--Documentation/RelNotes/2.13.4.txt28
-rw-r--r--Documentation/RelNotes/2.13.5.txt4
-rw-r--r--Documentation/RelNotes/2.13.6.txt17
-rw-r--r--Documentation/RelNotes/2.13.7.txt20
-rw-r--r--Documentation/RelNotes/2.14.0.txt517
-rw-r--r--Documentation/RelNotes/2.14.1.txt4
-rw-r--r--Documentation/RelNotes/2.14.2.txt105
-rw-r--r--Documentation/RelNotes/2.14.3.txt99
-rw-r--r--Documentation/RelNotes/2.14.4.txt5
-rw-r--r--Documentation/RelNotes/2.14.5.txt16
-rw-r--r--Documentation/RelNotes/2.15.0.txt508
-rw-r--r--Documentation/RelNotes/2.15.1.txt88
-rw-r--r--Documentation/RelNotes/2.15.2.txt50
-rw-r--r--Documentation/RelNotes/2.15.3.txt6
-rw-r--r--Documentation/RelNotes/2.16.0.txt482
-rw-r--r--Documentation/RelNotes/2.16.1.txt11
-rw-r--r--Documentation/RelNotes/2.16.2.txt30
-rw-r--r--Documentation/RelNotes/2.16.3.txt49
-rw-r--r--Documentation/RelNotes/2.16.4.txt5
-rw-r--r--Documentation/RelNotes/2.16.5.txt6
-rw-r--r--Documentation/RelNotes/2.17.0.txt398
-rw-r--r--Documentation/RelNotes/2.17.1.txt16
-rw-r--r--Documentation/RelNotes/2.17.2.txt12
-rw-r--r--Documentation/RelNotes/2.18.0.txt583
-rw-r--r--Documentation/RelNotes/2.18.1.txt6
-rw-r--r--Documentation/RelNotes/2.19.0.txt615
-rw-r--r--Documentation/RelNotes/2.19.1.txt6
-rw-r--r--Documentation/RelNotes/2.20.0.txt183
-rw-r--r--Documentation/RelNotes/2.3.10.txt2
-rw-r--r--Documentation/RelNotes/2.4.10.txt2
-rw-r--r--Documentation/RelNotes/2.4.12.txt12
-rw-r--r--Documentation/RelNotes/2.5.4.txt2
-rw-r--r--Documentation/RelNotes/2.5.6.txt12
-rw-r--r--Documentation/RelNotes/2.6.1.txt2
-rw-r--r--Documentation/RelNotes/2.6.7.txt12
-rw-r--r--Documentation/RelNotes/2.7.5.txt14
-rw-r--r--Documentation/RelNotes/2.7.6.txt25
-rw-r--r--Documentation/RelNotes/2.8.5.txt12
-rw-r--r--Documentation/RelNotes/2.8.6.txt4
-rw-r--r--Documentation/RelNotes/2.9.3.txt170
-rw-r--r--Documentation/RelNotes/2.9.4.txt90
-rw-r--r--Documentation/RelNotes/2.9.5.txt4
-rw-r--r--Documentation/SubmittingPatches411
-rw-r--r--Documentation/asciidoctor-extensions.rb28
-rw-r--r--Documentation/blame-options.txt9
-rwxr-xr-xDocumentation/cat-texi.perl21
-rw-r--r--Documentation/config.txt1517
-rw-r--r--Documentation/date-formats.txt2
-rw-r--r--Documentation/diff-config.txt53
-rw-r--r--Documentation/diff-format.txt7
-rw-r--r--Documentation/diff-generate-patch.txt7
-rw-r--r--Documentation/diff-options.txt208
-rwxr-xr-xDocumentation/doc-diff130
-rw-r--r--Documentation/fetch-config.txt65
-rw-r--r--Documentation/fetch-options.txt73
-rw-r--r--Documentation/format-config.txt87
-rw-r--r--Documentation/git-add.txt30
-rw-r--r--Documentation/git-am.txt10
-rw-r--r--Documentation/git-annotate.txt2
-rw-r--r--Documentation/git-apply.txt31
-rw-r--r--Documentation/git-archimport.txt7
-rw-r--r--Documentation/git-bisect-lk2009.txt20
-rw-r--r--Documentation/git-bisect.txt23
-rw-r--r--Documentation/git-blame.txt2
-rw-r--r--Documentation/git-branch.txt99
-rw-r--r--Documentation/git-bundle.txt4
-rw-r--r--Documentation/git-cat-file.txt59
-rw-r--r--Documentation/git-check-attr.txt4
-rw-r--r--Documentation/git-check-ignore.txt4
-rw-r--r--Documentation/git-check-mailmap.txt2
-rw-r--r--Documentation/git-check-ref-format.txt34
-rw-r--r--Documentation/git-checkout.txt70
-rw-r--r--Documentation/git-clone.txt56
-rw-r--r--Documentation/git-column.txt35
-rw-r--r--Documentation/git-commit-graph.txt104
-rw-r--r--Documentation/git-commit.txt37
-rw-r--r--Documentation/git-config.txt112
-rw-r--r--Documentation/git-count-objects.txt5
-rw-r--r--Documentation/git-credential-cache.txt13
-rw-r--r--Documentation/git-credential-store.txt2
-rw-r--r--Documentation/git-cvsimport.txt2
-rw-r--r--Documentation/git-cvsserver.txt14
-rw-r--r--Documentation/git-daemon.txt28
-rw-r--r--Documentation/git-describe.txt54
-rw-r--r--Documentation/git-diff-index.txt12
-rw-r--r--Documentation/git-diff-tree.txt2
-rw-r--r--Documentation/git-diff.txt40
-rw-r--r--Documentation/git-difftool.txt5
-rw-r--r--Documentation/git-fast-export.txt4
-rw-r--r--Documentation/git-fast-import.txt26
-rw-r--r--Documentation/git-fetch-pack.txt20
-rw-r--r--Documentation/git-fetch.txt89
-rw-r--r--Documentation/git-filter-branch.txt66
-rw-r--r--Documentation/git-fmt-merge-msg.txt8
-rw-r--r--Documentation/git-for-each-ref.txt169
-rw-r--r--Documentation/git-format-patch.txt47
-rw-r--r--Documentation/git-fsck.txt12
-rw-r--r--Documentation/git-gc.txt93
-rw-r--r--Documentation/git-grep.txt38
-rw-r--r--Documentation/git-gui.txt2
-rw-r--r--Documentation/git-help.txt9
-rw-r--r--Documentation/git-http-fetch.txt13
-rw-r--r--Documentation/git-http-push.txt2
-rw-r--r--Documentation/git-imap-send.txt8
-rw-r--r--Documentation/git-index-pack.txt9
-rw-r--r--Documentation/git-init.txt4
-rw-r--r--Documentation/git-interpret-trailers.txt90
-rw-r--r--Documentation/git-log.txt15
-rw-r--r--Documentation/git-ls-files.txt36
-rw-r--r--Documentation/git-ls-remote.txt24
-rw-r--r--Documentation/git-ls-tree.txt10
-rw-r--r--Documentation/git-merge-base.txt84
-rw-r--r--Documentation/git-merge.txt44
-rw-r--r--Documentation/git-mergetool.txt7
-rw-r--r--Documentation/git-mktree.txt2
-rw-r--r--Documentation/git-multi-pack-index.txt66
-rw-r--r--Documentation/git-name-rev.txt17
-rw-r--r--Documentation/git-notes.txt6
-rw-r--r--Documentation/git-p4.txt100
-rw-r--r--Documentation/git-pack-objects.txt175
-rw-r--r--Documentation/git-patch-id.txt3
-rw-r--r--Documentation/git-prune.txt15
-rw-r--r--Documentation/git-pull.txt35
-rw-r--r--Documentation/git-push.txt139
-rw-r--r--Documentation/git-range-diff.txt252
-rw-r--r--Documentation/git-read-tree.txt19
-rw-r--r--Documentation/git-rebase.txt359
-rw-r--r--Documentation/git-receive-pack.txt40
-rw-r--r--Documentation/git-reflog.txt4
-rw-r--r--Documentation/git-relink.txt30
-rw-r--r--Documentation/git-remote-ext.txt12
-rw-r--r--Documentation/git-remote-fd.txt2
-rw-r--r--Documentation/git-remote.txt20
-rw-r--r--Documentation/git-repack.txt32
-rw-r--r--Documentation/git-replace.txt11
-rw-r--r--Documentation/git-request-pull.txt4
-rw-r--r--Documentation/git-rerere.txt8
-rw-r--r--Documentation/git-reset.txt50
-rw-r--r--Documentation/git-rev-list.txt4
-rw-r--r--Documentation/git-rev-parse.txt34
-rw-r--r--Documentation/git-rm.txt15
-rw-r--r--Documentation/git-send-email.txt68
-rw-r--r--Documentation/git-send-pack.txt12
-rw-r--r--Documentation/git-shell.txt20
-rw-r--r--Documentation/git-shortlog.txt10
-rw-r--r--Documentation/git-show-branch.txt4
-rw-r--r--Documentation/git-show-index.txt26
-rw-r--r--Documentation/git-show-ref.txt4
-rw-r--r--Documentation/git-show.txt6
-rw-r--r--Documentation/git-stash.txt108
-rw-r--r--Documentation/git-status.txt218
-rw-r--r--Documentation/git-submodule.txt262
-rw-r--r--Documentation/git-svn.txt63
-rw-r--r--Documentation/git-tag.txt104
-rw-r--r--Documentation/git-tools.txt2
-rw-r--r--Documentation/git-unpack-objects.txt3
-rw-r--r--Documentation/git-update-index.txt153
-rw-r--r--Documentation/git-update-ref.txt4
-rw-r--r--Documentation/git-var.txt4
-rw-r--r--Documentation/git-verify-tag.txt2
-rw-r--r--Documentation/git-web--browse.txt4
-rw-r--r--Documentation/git-worktree.txt164
-rw-r--r--Documentation/git.txt620
-rw-r--r--Documentation/gitattributes.txt386
-rw-r--r--Documentation/gitcli.txt6
-rw-r--r--Documentation/gitcore-tutorial.txt24
-rw-r--r--Documentation/gitcredentials.txt20
-rw-r--r--Documentation/gitcvs-config.txt67
-rw-r--r--Documentation/gitcvs-migration.txt8
-rw-r--r--Documentation/gitdiffcore.txt12
-rw-r--r--Documentation/giteveryday.txt19
-rw-r--r--Documentation/gitglossary.txt2
-rw-r--r--Documentation/githooks.txt187
-rw-r--r--Documentation/gitignore.txt13
-rw-r--r--Documentation/gitk.txt18
-rw-r--r--Documentation/gitmodules.txt45
-rw-r--r--Documentation/gitnamespaces.txt20
-rw-r--r--Documentation/gitremote-helpers.txt60
-rw-r--r--Documentation/gitrepository-layout.txt15
-rw-r--r--Documentation/gitrevisions.txt17
-rw-r--r--Documentation/gitsubmodules.txt279
-rw-r--r--Documentation/gittutorial-2.txt2
-rw-r--r--Documentation/gittutorial.txt4
-rw-r--r--Documentation/gitweb.conf.txt25
-rw-r--r--Documentation/gitweb.txt2
-rw-r--r--Documentation/gitworkflows.txt10
-rw-r--r--Documentation/glossary-content.txt35
-rw-r--r--Documentation/gui-config.txt57
-rw-r--r--Documentation/howto/rebuild-from-update-hook.txt4
-rw-r--r--Documentation/howto/recover-corrupted-object-harder.txt2
-rw-r--r--Documentation/howto/revert-a-faulty-merge.txt16
-rw-r--r--Documentation/i18n.txt10
-rwxr-xr-xDocumentation/install-doc-quick.sh9
-rw-r--r--Documentation/merge-config.txt12
-rw-r--r--Documentation/merge-options.txt21
-rw-r--r--Documentation/merge-strategies.txt19
-rw-r--r--Documentation/pretty-formats.txt53
-rw-r--r--Documentation/pull-config.txt36
-rw-r--r--Documentation/pull-fetch-param.txt45
-rw-r--r--Documentation/push-config.txt113
-rw-r--r--Documentation/rebase-config.txt52
-rw-r--r--Documentation/receive-config.txt123
-rw-r--r--Documentation/rev-list-options.txt138
-rw-r--r--Documentation/revisions.txt155
-rw-r--r--Documentation/sendemail-config.txt63
-rw-r--r--Documentation/submodule-config.txt82
-rw-r--r--Documentation/technical/api-argv-array.txt2
-rw-r--r--Documentation/technical/api-builtin.txt73
-rw-r--r--Documentation/technical/api-config.txt20
-rw-r--r--Documentation/technical/api-decorate.txt6
-rw-r--r--Documentation/technical/api-directory-listing.txt33
-rw-r--r--Documentation/technical/api-gitattributes.txt86
-rw-r--r--Documentation/technical/api-hashmap.txt280
-rw-r--r--Documentation/technical/api-in-core-index.txt21
-rw-r--r--Documentation/technical/api-object-access.txt4
-rw-r--r--Documentation/technical/api-oid-array.txt85
-rw-r--r--Documentation/technical/api-parse-options.txt13
-rw-r--r--Documentation/technical/api-ref-iteration.txt7
-rw-r--r--Documentation/technical/api-setup.txt2
-rw-r--r--Documentation/technical/api-sha1-array.txt76
-rw-r--r--Documentation/technical/api-string-list.txt209
-rw-r--r--Documentation/technical/api-submodule-config.txt18
-rw-r--r--Documentation/technical/api-tree-walking.txt6
-rw-r--r--Documentation/technical/commit-graph-format.txt97
-rw-r--r--Documentation/technical/commit-graph.txt172
-rw-r--r--Documentation/technical/directory-rename-detection.txt115
-rw-r--r--Documentation/technical/hash-function-transition.txt827
-rw-r--r--Documentation/technical/http-protocol.txt15
-rw-r--r--Documentation/technical/index-format.txt19
-rw-r--r--Documentation/technical/long-running-process-protocol.txt50
-rw-r--r--Documentation/technical/multi-pack-index.txt109
-rw-r--r--Documentation/technical/pack-format.txt169
-rw-r--r--Documentation/technical/pack-protocol.txt103
-rw-r--r--Documentation/technical/partial-clone.txt324
-rw-r--r--Documentation/technical/protocol-capabilities.txt42
-rw-r--r--Documentation/technical/protocol-common.txt6
-rw-r--r--Documentation/technical/protocol-v2.txt439
-rw-r--r--Documentation/technical/repository-version.txt12
-rw-r--r--Documentation/technical/rerere.txt186
-rw-r--r--Documentation/technical/shallow.txt20
-rw-r--r--Documentation/technical/trivial-merge.txt4
-rw-r--r--Documentation/texi.xsl26
-rw-r--r--Documentation/transfer-data-leaks.txt30
-rw-r--r--Documentation/user-manual.txt44
-rwxr-xr-xGIT-VERSION-GEN4
-rw-r--r--INSTALL25
-rw-r--r--Makefile872
-rw-r--r--README.md9
l---------RelNotes2
-rw-r--r--abspath.c272
-rw-r--r--advice.c105
-rw-r--r--advice.h6
-rw-r--r--alias.c53
-rw-r--r--alias.h12
-rw-r--r--alloc.c67
-rw-r--r--alloc.h21
-rw-r--r--apply.c5005
-rw-r--r--apply.h141
-rw-r--r--archive-tar.c58
-rw-r--r--archive-zip.c267
-rw-r--r--archive.c174
-rw-r--r--archive.h29
-rw-r--r--argv-array.c26
-rw-r--r--argv-array.h6
-rw-r--r--attr.c933
-rw-r--r--attr.h54
-rw-r--r--banned.h30
-rw-r--r--bisect.c232
-rw-r--r--bisect.h16
-rw-r--r--blame.c1895
-rw-r--r--blame.h182
-rw-r--r--blob.c11
-rw-r--r--blob.h2
-rw-r--r--branch.c142
-rw-r--r--branch.h75
-rw-r--r--builtin.h108
-rw-r--r--builtin/add.c168
-rw-r--r--builtin/am.c746
-rw-r--r--builtin/apply.c4863
-rw-r--r--builtin/archive.c12
-rw-r--r--builtin/bisect--helper.c137
-rw-r--r--builtin/blame.c2336
-rw-r--r--builtin/branch.c576
-rw-r--r--builtin/bundle.c8
-rw-r--r--builtin/cat-file.c320
-rw-r--r--builtin/check-attr.c68
-rw-r--r--builtin/check-ignore.c13
-rw-r--r--builtin/check-mailmap.c1
-rw-r--r--builtin/check-ref-format.c7
-rw-r--r--builtin/checkout-index.c16
-rw-r--r--builtin/checkout.c603
-rw-r--r--builtin/clean.c138
-rw-r--r--builtin/clone.c352
-rw-r--r--builtin/column.c2
-rw-r--r--builtin/commit-graph.c215
-rw-r--r--builtin/commit-tree.c25
-rw-r--r--builtin/commit.c732
-rw-r--r--builtin/config.c294
-rw-r--r--builtin/count-objects.c25
-rw-r--r--builtin/credential.c4
-rw-r--r--builtin/describe.c344
-rw-r--r--builtin/diff-files.c7
-rw-r--r--builtin/diff-index.c8
-rw-r--r--builtin/diff-tree.c105
-rw-r--r--builtin/diff.c163
-rw-r--r--builtin/difftool.c761
-rw-r--r--builtin/fast-export.c236
-rw-r--r--builtin/fetch-pack.c74
-rw-r--r--builtin/fetch.c635
-rw-r--r--builtin/fmt-merge-msg.c107
-rw-r--r--builtin/for-each-ref.c37
-rw-r--r--builtin/fsck.c456
-rw-r--r--builtin/gc.c358
-rw-r--r--builtin/get-tar-commit-id.c9
-rw-r--r--builtin/grep.c401
-rw-r--r--builtin/hash-object.c36
-rw-r--r--builtin/help.c97
-rw-r--r--builtin/index-pack.c469
-rw-r--r--builtin/init-db.c153
-rw-r--r--builtin/interpret-trailers.c108
-rw-r--r--builtin/log.c383
-rw-r--r--builtin/ls-files.c362
-rw-r--r--builtin/ls-remote.c64
-rw-r--r--builtin/ls-tree.c32
-rw-r--r--builtin/mailinfo.c12
-rw-r--r--builtin/mailsplit.c10
-rw-r--r--builtin/merge-base.c74
-rw-r--r--builtin/merge-file.c19
-rw-r--r--builtin/merge-index.c4
-rw-r--r--builtin/merge-ours.c16
-rw-r--r--builtin/merge-recursive.c23
-rw-r--r--builtin/merge-tree.c37
-rw-r--r--builtin/merge.c522
-rw-r--r--builtin/mktag.c28
-rw-r--r--builtin/mktree.c44
-rw-r--r--builtin/multi-pack-index.c49
-rw-r--r--builtin/mv.c85
-rw-r--r--builtin/name-rev.c222
-rw-r--r--builtin/notes.c292
-rw-r--r--builtin/pack-objects.c1628
-rw-r--r--builtin/pack-redundant.c120
-rw-r--r--builtin/pack-refs.c3
-rw-r--r--builtin/patch-id.c3
-rw-r--r--builtin/prune-packed.c11
-rw-r--r--builtin/prune.c40
-rw-r--r--builtin/pull.c347
-rw-r--r--builtin/push.c182
-rw-r--r--builtin/range-diff.c101
-rw-r--r--builtin/read-tree.c76
-rw-r--r--builtin/rebase--helper.c88
-rw-r--r--builtin/receive-pack.c661
-rw-r--r--builtin/reflog.c110
-rw-r--r--builtin/remote-ext.c11
-rw-r--r--builtin/remote-fd.c5
-rw-r--r--builtin/remote.c198
-rw-r--r--builtin/repack.c229
-rw-r--r--builtin/replace.c406
-rw-r--r--builtin/rerere.c7
-rw-r--r--builtin/reset.c140
-rw-r--r--builtin/rev-list.c299
-rw-r--r--builtin/rev-parse.c346
-rw-r--r--builtin/revert.c92
-rw-r--r--builtin/rm.c130
-rw-r--r--builtin/send-pack.c62
-rw-r--r--builtin/serve.c30
-rw-r--r--builtin/shortlog.c89
-rw-r--r--builtin/show-branch.c171
-rw-r--r--builtin/show-index.c (renamed from show-index.c)3
-rw-r--r--builtin/show-ref.c52
-rw-r--r--builtin/stripspace.c5
-rw-r--r--builtin/submodule--helper.c1533
-rw-r--r--builtin/symbolic-ref.c8
-rw-r--r--builtin/tag.c283
-rw-r--r--builtin/unpack-file.c16
-rw-r--r--builtin/unpack-objects.c105
-rw-r--r--builtin/update-index.c252
-rw-r--r--builtin/update-ref.c124
-rw-r--r--builtin/update-server-info.c3
-rw-r--r--builtin/upload-archive.c12
-rw-r--r--builtin/upload-pack.c74
-rw-r--r--builtin/var.c1
-rw-r--r--builtin/verify-commit.c18
-rw-r--r--builtin/verify-pack.c1
-rw-r--r--builtin/verify-tag.c28
-rw-r--r--builtin/worktree.c637
-rw-r--r--builtin/write-tree.c12
-rw-r--r--bulk-checkin.c62
-rw-r--r--bulk-checkin.h4
-rw-r--r--bundle.c86
-rw-r--r--bundle.h4
-rw-r--r--cache-tree.c221
-rw-r--r--cache-tree.h25
-rw-r--r--cache.h1226
-rw-r--r--chdir-notify.c93
-rw-r--r--chdir-notify.h73
-rw-r--r--checkout.c71
-rw-r--r--checkout.h15
-rwxr-xr-xci/install-dependencies.sh42
-rwxr-xr-xci/lib-travisci.sh129
-rwxr-xr-xci/print-test-failures.sh78
-rwxr-xr-xci/run-build-and-tests.sh23
-rwxr-xr-xci/run-linux32-build.sh60
-rwxr-xr-xci/run-linux32-docker.sh31
-rwxr-xr-xci/run-static-analysis.sh29
-rwxr-xr-xci/run-windows-build.sh103
-rwxr-xr-xci/test-documentation.sh27
-rwxr-xr-xci/util/extract-trash-dirs.sh50
-rw-r--r--color.c59
-rw-r--r--color.h47
-rw-r--r--column.c5
-rw-r--r--column.h1
-rw-r--r--combine-diff.c92
-rw-r--r--command-list.txt114
-rw-r--r--commit-graph.c1141
-rw-r--r--commit-graph.h75
-rw-r--r--commit-reach.c692
-rw-r--r--commit-reach.h77
-rw-r--r--commit-slab-decl.h43
-rw-r--r--commit-slab-impl.h94
-rw-r--r--commit-slab.h118
-rw-r--r--commit.c806
-rw-r--r--commit.h214
-rw-r--r--common-main.c9
-rw-r--r--compat/bswap.h60
-rw-r--r--compat/cygwin.c19
-rw-r--r--compat/cygwin.h2
-rw-r--r--compat/fopen.c4
-rw-r--r--compat/mingw.c280
-rw-r--r--compat/mingw.h22
-rw-r--r--compat/nedmalloc/nedmalloc.c25
-rw-r--r--compat/obstack.c5
-rw-r--r--compat/obstack.h5
-rw-r--r--compat/poll/poll.c7
-rw-r--r--compat/poll/poll.h3
-rw-r--r--compat/precompose_utf8.c1
-rw-r--r--compat/precompose_utf8.h3
-rw-r--r--compat/qsort_s.c69
-rw-r--r--compat/regex/regcomp.c5
-rw-r--r--compat/regex/regex.c5
-rw-r--r--compat/regex/regex.h5
-rw-r--r--compat/regex/regex_internal.c9
-rw-r--r--compat/regex/regex_internal.h5
-rw-r--r--compat/regex/regexec.c9
-rw-r--r--compat/strdup.c11
-rw-r--r--compat/vcbuild/README4
-rw-r--r--compat/win32/lazyload.h57
-rw-r--r--compat/win32/syslog.c2
-rw-r--r--compat/winansi.c192
-rw-r--r--config.c1708
-rw-r--r--config.h274
-rw-r--r--config.mak.dev48
-rw-r--r--config.mak.uname61
-rw-r--r--configure.ac139
-rw-r--r--connect.c821
-rw-r--r--connect.h9
-rw-r--r--connected.c40
-rw-r--r--connected.h27
-rw-r--r--contrib/coccinelle/.gitignore1
-rw-r--r--contrib/coccinelle/array.cocci59
-rw-r--r--contrib/coccinelle/commit.cocci28
-rw-r--r--contrib/coccinelle/free.cocci18
-rw-r--r--contrib/coccinelle/object_id.cocci57
-rw-r--r--contrib/coccinelle/qsort.cocci37
-rw-r--r--contrib/coccinelle/strbuf.cocci32
-rw-r--r--contrib/coccinelle/swap.cocci28
-rw-r--r--contrib/coccinelle/xstrdup_or_null.cocci13
-rw-r--r--contrib/completion/.gitattributes1
-rw-r--r--contrib/completion/git-completion.bash1801
-rw-r--r--contrib/completion/git-completion.zsh20
-rw-r--r--contrib/completion/git-prompt.sh10
-rwxr-xr-xcontrib/contacts/git-contacts2
-rwxr-xr-xcontrib/convert-grafts-to-replace-refs.sh28
-rw-r--r--contrib/convert-objects/convert-objects.c329
-rw-r--r--contrib/convert-objects/git-convert-objects.txt29
-rw-r--r--contrib/credential/gnome-keyring/git-credential-gnome-keyring.c3
-rw-r--r--contrib/credential/libsecret/Makefile25
-rw-r--r--contrib/credential/libsecret/git-credential-libsecret.c369
-rw-r--r--contrib/credential/netrc/Makefile7
-rwxr-xr-xcontrib/credential/netrc/git-credential-netrc57
-rwxr-xr-xcontrib/credential/netrc/t-git-credential-netrc.sh32
-rwxr-xr-xcontrib/credential/netrc/test.command-option-gpg2
-rwxr-xr-xcontrib/credential/netrc/test.git-config-gpg2
-rw-r--r--contrib/credential/netrc/test.netrc.gpg0
-rwxr-xr-xcontrib/credential/netrc/test.pl89
-rw-r--r--contrib/credential/wincred/git-credential-wincred.c10
-rw-r--r--contrib/diff-highlight/.gitignore2
-rw-r--r--[-rwxr-xr-x]contrib/diff-highlight/DiffHighlight.pm (renamed from contrib/diff-highlight/diff-highlight)112
-rw-r--r--contrib/diff-highlight/Makefile23
-rw-r--r--contrib/diff-highlight/README30
-rw-r--r--contrib/diff-highlight/diff-highlight.perl8
-rw-r--r--contrib/diff-highlight/t/.gitignore2
-rw-r--r--contrib/diff-highlight/t/Makefile22
-rwxr-xr-xcontrib/diff-highlight/t/t9400-diff-highlight.sh341
-rw-r--r--contrib/emacs/.gitignore1
-rw-r--r--contrib/emacs/Makefile21
-rw-r--r--contrib/emacs/README32
-rw-r--r--contrib/emacs/git-blame.el490
-rw-r--r--contrib/emacs/git.el1711
-rw-r--r--contrib/examples/README23
-rw-r--r--contrib/examples/builtin-fetch--tool.c575
-rwxr-xr-xcontrib/examples/git-am.sh975
-rwxr-xr-xcontrib/examples/git-checkout.sh302
-rwxr-xr-xcontrib/examples/git-clean.sh118
-rwxr-xr-xcontrib/examples/git-clone.sh525
-rwxr-xr-xcontrib/examples/git-commit.sh639
-rwxr-xr-xcontrib/examples/git-fetch.sh379
-rwxr-xr-xcontrib/examples/git-gc.sh37
-rwxr-xr-xcontrib/examples/git-log.sh15
-rwxr-xr-xcontrib/examples/git-ls-remote.sh142
-rwxr-xr-xcontrib/examples/git-merge-ours.sh14
-rwxr-xr-xcontrib/examples/git-merge.sh620
-rwxr-xr-xcontrib/examples/git-notes.sh121
-rwxr-xr-xcontrib/examples/git-pull.sh381
-rwxr-xr-xcontrib/examples/git-remote.perl474
-rwxr-xr-xcontrib/examples/git-repack.sh194
-rwxr-xr-xcontrib/examples/git-rerere.perl284
-rwxr-xr-xcontrib/examples/git-reset.sh106
-rwxr-xr-xcontrib/examples/git-resolve.sh112
-rwxr-xr-xcontrib/examples/git-revert.sh207
-rwxr-xr-xcontrib/examples/git-svnimport.perl976
-rw-r--r--contrib/examples/git-svnimport.txt179
-rwxr-xr-xcontrib/examples/git-tag.sh205
-rwxr-xr-xcontrib/examples/git-verify-tag.sh45
-rwxr-xr-xcontrib/examples/git-whatchanged.sh28
-rwxr-xr-xcontrib/fast-import/import-directories.perl3
-rwxr-xr-xcontrib/fast-import/import-tars.perl56
-rw-r--r--contrib/git-jump/README28
-rwxr-xr-xcontrib/git-jump/git-jump15
-rwxr-xr-xcontrib/git-resurrect.sh4
-rwxr-xr-xcontrib/gitview/gitview1305
-rw-r--r--contrib/gitview/gitview.txt57
-rwxr-xr-xcontrib/hg-to-git/hg-to-git.py3
-rw-r--r--contrib/hooks/multimail/CHANGES59
-rw-r--r--contrib/hooks/multimail/CONTRIBUTING.rst9
-rw-r--r--contrib/hooks/multimail/README89
-rw-r--r--contrib/hooks/multimail/README.Git4
-rw-r--r--contrib/hooks/multimail/doc/troubleshooting.rst34
-rwxr-xr-xcontrib/hooks/multimail/git_multimail.py810
-rwxr-xr-xcontrib/hooks/pre-auto-gc-battery2
-rwxr-xr-xcontrib/long-running-filter/example.pl132
-rw-r--r--contrib/mw-to-git/.perlcriticrc2
-rw-r--r--contrib/mw-to-git/Git/Mediawiki.pm3
-rw-r--r--contrib/mw-to-git/Makefile5
-rwxr-xr-xcontrib/mw-to-git/git-remote-mediawiki.perl42
-rw-r--r--contrib/mw-to-git/t/README2
-rwxr-xr-xcontrib/mw-to-git/t/t9360-mw-to-git-clone.sh2
-rw-r--r--contrib/persistent-https/Makefile6
-rw-r--r--contrib/persistent-https/README10
-rwxr-xr-xcontrib/remote-helpers/git-remote-bzr16
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg16
-rwxr-xr-xcontrib/rerere-train.sh54
-rw-r--r--contrib/subtree/Makefile26
-rwxr-xr-xcontrib/subtree/git-subtree.sh690
-rw-r--r--contrib/subtree/git-subtree.txt2
-rwxr-xr-xcontrib/subtree/t/t7900-subtree.sh157
-rw-r--r--contrib/update-unicode/.gitignore3
-rw-r--r--contrib/update-unicode/README20
-rwxr-xr-xcontrib/update-unicode/update_unicode.sh33
-rw-r--r--contrib/vscode/.gitattributes1
-rw-r--r--contrib/vscode/README.md14
-rwxr-xr-xcontrib/vscode/init.sh375
-rw-r--r--contrib/workdir/.gitattributes1
-rw-r--r--convert.c904
-rw-r--r--convert.h97
-rw-r--r--credential-cache--daemon.c24
-rw-r--r--credential-cache.c17
-rw-r--r--credential-store.c2
-rw-r--r--credential.c13
-rw-r--r--csum-file.c56
-rw-r--r--csum-file.h45
-rw-r--r--daemon.c206
-rw-r--r--date.c135
-rw-r--r--decorate.c28
-rw-r--r--decorate.h49
-rw-r--r--delta-islands.c502
-rw-r--r--delta-islands.h15
-rwxr-xr-xdetect-compiler53
-rw-r--r--diff-delta.c27
-rw-r--r--diff-lib.c168
-rw-r--r--diff-no-index.c24
-rw-r--r--diff.c2763
-rw-r--r--diff.h310
-rw-r--r--diffcore-break.c3
-rw-r--r--diffcore-delta.c22
-rw-r--r--diffcore-order.c4
-rw-r--r--diffcore-pickaxe.c74
-rw-r--r--diffcore-rename.c60
-rw-r--r--diffcore.h55
-rw-r--r--dir-iterator.c202
-rw-r--r--dir-iterator.h89
-rw-r--r--dir.c1080
-rw-r--r--dir.h116
-rw-r--r--editor.c33
-rw-r--r--entry.c278
-rw-r--r--environment.c228
-rw-r--r--ewah/bitmap.c35
-rw-r--r--ewah/ewah_bitmap.c256
-rw-r--r--ewah/ewah_io.c119
-rw-r--r--ewah/ewah_rlw.c11
-rw-r--r--ewah/ewok.h38
-rw-r--r--ewah/ewok_rlw.h6
-rw-r--r--exec-cmd.c365
-rw-r--r--exec-cmd.h (renamed from exec_cmd.h)4
-rw-r--r--exec_cmd.c153
-rw-r--r--fast-import.c721
-rw-r--r--fetch-negotiator.c20
-rw-r--r--fetch-negotiator.h58
-rw-r--r--fetch-object.c40
-rw-r--r--fetch-object.h7
-rw-r--r--fetch-pack.c1226
-rw-r--r--fetch-pack.h51
-rw-r--r--fsck.c466
-rw-r--r--fsck.h23
-rw-r--r--fsmonitor.c263
-rw-r--r--fsmonitor.h76
-rwxr-xr-xgenerate-cmdlist.sh145
-rw-r--r--gettext.c16
-rwxr-xr-xgit-add--interactive.perl553
-rwxr-xr-xgit-archimport.perl4
-rwxr-xr-xgit-bisect.sh101
-rw-r--r--git-compat-util.h252
-rwxr-xr-xgit-cvsimport.perl5
-rwxr-xr-xgit-cvsserver.perl77
-rwxr-xr-xgit-difftool--helper.sh7
-rwxr-xr-xgit-difftool.perl502
-rwxr-xr-xgit-filter-branch.sh143
-rw-r--r--git-gui/.gitattributes1
-rwxr-xr-xgit-gui/GIT-VERSION-GEN2
-rw-r--r--git-gui/Makefile6
-rwxr-xr-xgit-gui/git-gui.sh185
-rw-r--r--git-gui/lib/blame.tcl2
-rw-r--r--git-gui/lib/branch_checkout.tcl2
-rw-r--r--git-gui/lib/branch_create.tcl2
-rw-r--r--git-gui/lib/branch_delete.tcl4
-rw-r--r--git-gui/lib/branch_rename.tcl2
-rw-r--r--git-gui/lib/browser.tcl6
-rw-r--r--git-gui/lib/choose_repository.tcl17
-rw-r--r--git-gui/lib/commit.tcl47
-rw-r--r--git-gui/lib/database.tcl4
-rw-r--r--git-gui/lib/diff.tcl15
-rw-r--r--git-gui/lib/error.tcl8
-rw-r--r--git-gui/lib/index.tcl12
-rw-r--r--git-gui/lib/merge.tcl18
-rw-r--r--git-gui/lib/option.tcl8
-rw-r--r--git-gui/lib/remote.tcl8
-rw-r--r--git-gui/lib/remote_add.tcl2
-rw-r--r--git-gui/lib/remote_branch_delete.tcl2
-rw-r--r--git-gui/lib/shortcut.tcl17
-rw-r--r--git-gui/lib/sshkey.tcl5
-rw-r--r--git-gui/lib/themed.tcl100
-rw-r--r--git-gui/lib/tools.tcl3
-rw-r--r--git-gui/lib/tools_dlg.tcl6
-rw-r--r--git-gui/lib/transport.tcl2
-rw-r--r--git-gui/po/README2
-rw-r--r--git-gui/po/bg.po2833
-rw-r--r--git-gui/po/glossary/pt_pt.po293
-rw-r--r--git-gui/po/ja.po2747
-rw-r--r--git-gui/po/pt_pt.po2716
-rw-r--r--git-gui/po/ru.po680
-rwxr-xr-xgit-instaweb.sh20
-rwxr-xr-xgit-merge-octopus.sh8
-rwxr-xr-xgit-merge-one-file.sh8
-rwxr-xr-xgit-merge-resolve.sh2
-rw-r--r--git-mergetool--lib.sh56
-rwxr-xr-xgit-mergetool.sh197
-rwxr-xr-xgit-p4.py1060
-rw-r--r--git-rebase--am.sh88
-rw-r--r--git-rebase--interactive.sh1368
-rw-r--r--git-rebase--merge.sh23
-rw-r--r--git-rebase--preserve-merges.sh1012
-rwxr-xr-xgit-rebase.sh196
-rwxr-xr-xgit-relink.perl173
-rwxr-xr-xgit-request-pull.sh5
-rwxr-xr-xgit-send-email.perl598
-rw-r--r--git-sh-i18n.sh8
-rw-r--r--git-sh-setup.sh18
-rwxr-xr-xgit-stash.sh195
-rwxr-xr-xgit-submodule.sh344
-rwxr-xr-xgit-svn.perl33
-rw-r--r--git.c414
-rw-r--r--git.rc4
-rw-r--r--gitk-git/Makefile1
-rwxr-xr-xgitk-git/gitk166
-rw-r--r--gitk-git/po/bg.po4
-rw-r--r--gitk-git/po/ca.po6
-rw-r--r--gitk-git/po/de.po4
-rw-r--r--gitk-git/po/es.po4
-rw-r--r--gitk-git/po/fr.po4
-rw-r--r--gitk-git/po/hu.po4
-rw-r--r--gitk-git/po/it.po4
-rw-r--r--gitk-git/po/ja.po13
-rw-r--r--gitk-git/po/pt_br.po4
-rw-r--r--gitk-git/po/pt_pt.po1376
-rw-r--r--gitk-git/po/ru.po670
-rw-r--r--gitk-git/po/sv.po19
-rw-r--r--gitk-git/po/vi.po4
-rw-r--r--gitweb/INSTALL3
-rwxr-xr-xgitweb/gitweb.perl66
-rw-r--r--gpg-interface.c182
-rw-r--r--gpg-interface.h54
-rw-r--r--graph.c178
-rw-r--r--graph.h22
-rw-r--r--grep.c793
-rw-r--r--grep.h72
-rw-r--r--hash.h101
-rw-r--r--hashmap.c66
-rw-r--r--hashmap.h388
-rw-r--r--help.c430
-rw-r--r--help.h54
-rw-r--r--hex.c41
-rw-r--r--http-backend.c348
-rw-r--r--http-fetch.c18
-rw-r--r--http-push.c134
-rw-r--r--http-walker.c146
-rw-r--r--http.c514
-rw-r--r--http.h23
-rw-r--r--ident.c97
-rw-r--r--imap-send.c116
-rw-r--r--interdiff.c28
-rw-r--r--interdiff.h8
-rw-r--r--iterator.h81
-rw-r--r--json-writer.c414
-rw-r--r--json-writer.h107
-rw-r--r--khash.h3
-rw-r--r--kwset.c4
-rw-r--r--kwset.h4
-rw-r--r--line-log.c106
-rw-r--r--line-log.h2
-rw-r--r--line-range.c5
-rw-r--r--line-range.h12
-rw-r--r--linear-assignment.c207
-rw-r--r--linear-assignment.h22
-rw-r--r--list-objects-filter-options.c154
-rw-r--r--list-objects-filter-options.h79
-rw-r--r--list-objects-filter.c402
-rw-r--r--list-objects-filter.h81
-rw-r--r--list-objects.c184
-rw-r--r--list-objects.h17
-rw-r--r--list.h204
-rw-r--r--ll-merge.c47
-rw-r--r--ll-merge.h2
-rw-r--r--lockfile.c21
-rw-r--r--lockfile.h84
-rw-r--r--log-tree.c274
-rw-r--r--log-tree.h11
-rw-r--r--ls-refs.c96
-rw-r--r--ls-refs.h10
-rw-r--r--mailinfo.c324
-rw-r--r--mailinfo.h5
-rw-r--r--mailmap.c13
-rw-r--r--mailmap.h2
-rw-r--r--match-trees.c98
-rw-r--r--mem-pool.c145
-rw-r--r--mem-pool.h57
-rw-r--r--merge-blobs.c5
-rw-r--r--merge-recursive.c2602
-rw-r--r--merge-recursive.h45
-rw-r--r--merge.c53
-rw-r--r--mergetools/araxis2
-rw-r--r--mergetools/bc2
-rw-r--r--mergetools/codecompare2
-rw-r--r--mergetools/deltawalker6
-rw-r--r--mergetools/diffmerge4
-rw-r--r--mergetools/diffuse2
-rw-r--r--mergetools/ecmerge2
-rw-r--r--mergetools/emerge4
-rw-r--r--mergetools/examdiff2
-rw-r--r--mergetools/guiffy18
-rw-r--r--mergetools/kdiff34
-rw-r--r--mergetools/kompare4
-rw-r--r--mergetools/meld5
-rw-r--r--mergetools/opendiff2
-rw-r--r--mergetools/p4merge2
-rw-r--r--mergetools/tkdiff4
-rw-r--r--mergetools/tortoisemerge2
-rw-r--r--mergetools/vimdiff6
-rw-r--r--mergetools/winmerge2
-rw-r--r--mergetools/xxdiff12
-rw-r--r--midx.c1007
-rw-r--r--midx.h51
-rw-r--r--name-hash.c530
-rw-r--r--negotiator/default.c176
-rw-r--r--negotiator/default.h8
-rw-r--r--negotiator/skipping.c250
-rw-r--r--negotiator/skipping.h8
-rw-r--r--notes-cache.c37
-rw-r--r--notes-cache.h4
-rw-r--r--notes-merge.c336
-rw-r--r--notes-merge.h24
-rw-r--r--notes-utils.c33
-rw-r--r--notes-utils.h8
-rw-r--r--notes.c393
-rw-r--r--notes.h48
-rw-r--r--object-store.h371
-rw-r--r--object.c269
-rw-r--r--object.h91
-rw-r--r--oidmap.c62
-rw-r--r--oidmap.h91
-rw-r--r--oidset.c40
-rw-r--r--oidset.h83
-rw-r--r--pack-bitmap-write.c83
-rw-r--r--pack-bitmap.c403
-rw-r--r--pack-bitmap.h36
-rw-r--r--pack-check.c90
-rw-r--r--pack-objects.c113
-rw-r--r--pack-objects.h402
-rw-r--r--pack-revindex.c14
-rw-r--r--pack-write.c120
-rw-r--r--pack.h18
-rw-r--r--packfile.c2112
-rw-r--r--packfile.h167
-rw-r--r--pager.c111
-rw-r--r--parse-options-cb.c66
-rw-r--r--parse-options.c144
-rw-r--r--parse-options.h40
-rw-r--r--patch-delta.c28
-rw-r--r--patch-ids.c138
-rw-r--r--patch-ids.h17
-rw-r--r--path.c371
-rw-r--r--path.h196
-rw-r--r--pathspec.c655
-rw-r--r--pathspec.h57
-rw-r--r--perl/.gitignore9
-rw-r--r--perl/FromCPAN/.gitattributes1
-rw-r--r--perl/FromCPAN/Error.pm (renamed from perl/private-Error.pm)295
-rw-r--r--perl/FromCPAN/Mail/Address.pm280
-rw-r--r--perl/Git.pm196
-rw-r--r--perl/Git/I18N.pm21
-rw-r--r--perl/Git/LoadCPAN.pm104
-rw-r--r--perl/Git/LoadCPAN/Error.pm10
-rw-r--r--perl/Git/LoadCPAN/Mail/Address.pm10
-rw-r--r--perl/Git/Packet.pm173
-rw-r--r--perl/Git/SVN.pm55
-rw-r--r--perl/Git/SVN/Editor.pm12
-rw-r--r--perl/Git/SVN/Fetcher.pm15
-rw-r--r--perl/Git/SVN/Migration.pm37
-rw-r--r--perl/Git/SVN/Ra.pm2
-rw-r--r--perl/Makefile89
-rw-r--r--perl/Makefile.PL62
-rw-r--r--perl/header_templates/fixed_prefix.template.pl1
-rw-r--r--perl/header_templates/runtime_prefix.template.pl42
-rw-r--r--pkt-line.c340
-rw-r--r--pkt-line.h102
-rw-r--r--po/TEAMS32
-rw-r--r--po/bg.po16061
-rw-r--r--po/ca.po13978
-rw-r--r--po/de.po13768
-rw-r--r--po/es.po20220
-rw-r--r--po/fr.po16248
-rw-r--r--po/git.pot14073
-rw-r--r--po/ko.po13411
-rw-r--r--po/pt_PT.po10340
-rw-r--r--po/ru.po14841
-rw-r--r--po/sv.po16104
-rw-r--r--po/vi.po16098
-rw-r--r--po/zh_CN.po15403
-rw-r--r--preload-index.c14
-rw-r--r--pretty.c175
-rw-r--r--pretty.h135
-rw-r--r--prio-queue.c11
-rw-r--r--progress.c73
-rw-r--r--progress.h9
-rw-r--r--prompt.c1
-rw-r--r--protocol.c81
-rw-r--r--protocol.h34
-rw-r--r--quote.c43
-rw-r--r--quote.h10
-rw-r--r--range-diff.c475
-rw-r--r--range-diff.h12
-rw-r--r--reachable.c45
-rw-r--r--reachable.h6
-rw-r--r--read-cache.c1171
-rw-r--r--ref-filter.c1522
-rw-r--r--ref-filter.h55
-rw-r--r--reflog-walk.c214
-rw-r--r--reflog-walk.h8
-rw-r--r--refs.c1472
-rw-r--r--refs.h582
-rw-r--r--refs/files-backend.c4336
-rw-r--r--refs/iterator.c435
-rw-r--r--refs/packed-backend.c1660
-rw-r--r--refs/packed-backend.h37
-rw-r--r--refs/ref-cache.c551
-rw-r--r--refs/ref-cache.h243
-rw-r--r--refs/refs-internal.h645
-rw-r--r--refspec.c232
-rw-r--r--refspec.h55
-rw-r--r--remote-curl.c456
-rw-r--r--remote-testsvn.c36
-rw-r--r--remote.c616
-rw-r--r--remote.h97
-rw-r--r--replace-object.c74
-rw-r--r--replace-object.h38
-rw-r--r--replace_object.c122
-rw-r--r--repository.c259
-rw-r--r--repository.h134
-rw-r--r--rerere.c306
-rw-r--r--rerere.h14
-rw-r--r--resolve-undo.c19
-rw-r--r--resolve-undo.h4
-rw-r--r--revision.c952
-rw-r--r--revision.h123
-rw-r--r--run-command.c645
-rw-r--r--run-command.h6
-rw-r--r--send-pack.c135
-rw-r--r--send-pack.h9
-rw-r--r--sequencer.c4489
-rw-r--r--sequencer.h89
-rw-r--r--serve.c258
-rw-r--r--serve.h15
-rw-r--r--server-info.c33
-rw-r--r--setup.c518
-rw-r--r--sh-i18n--envsubst.c9
-rw-r--r--sha1-array.c60
-rw-r--r--sha1-array.h25
-rw-r--r--sha1-file.c2282
-rw-r--r--sha1-lookup.c232
-rw-r--r--sha1-lookup.h26
-rw-r--r--sha1-name.c (renamed from sha1_name.c)974
-rw-r--r--sha1_file.c3646
m---------sha1collisiondetection0
-rw-r--r--sha1dc/.gitattributes1
-rw-r--r--sha1dc/LICENSE.txt30
-rw-r--r--sha1dc/sha1.c1910
-rw-r--r--sha1dc/sha1.h110
-rw-r--r--sha1dc/ubc_check.c372
-rw-r--r--sha1dc/ubc_check.h52
-rw-r--r--sha1dc_git.c38
-rw-r--r--sha1dc_git.h23
-rw-r--r--shallow.c345
-rw-r--r--shell.c19
-rw-r--r--shortlog.h3
-rw-r--r--sideband.c138
-rw-r--r--sigchain.c2
-rw-r--r--split-index.c107
-rw-r--r--split-index.h8
-rw-r--r--strbuf.c202
-rw-r--r--strbuf.h123
-rw-r--r--streaming.c41
-rw-r--r--streaming.h4
-rw-r--r--string-list.c60
-rw-r--r--string-list.h191
-rw-r--r--sub-process.c213
-rw-r--r--sub-process.h98
-rw-r--r--submodule-config.c439
-rw-r--r--submodule-config.h57
-rw-r--r--submodule.c1944
-rw-r--r--submodule.h131
-rw-r--r--t/.gitattributes24
-rw-r--r--t/.gitignore1
-rw-r--r--t/Makefile48
-rw-r--r--t/README212
-rw-r--r--t/annotate-tests.sh4
-rw-r--r--t/chainlint.sed369
-rw-r--r--t/chainlint/arithmetic-expansion.expect9
-rw-r--r--t/chainlint/arithmetic-expansion.test11
-rw-r--r--t/chainlint/bash-array.expect10
-rw-r--r--t/chainlint/bash-array.test12
-rw-r--r--t/chainlint/blank-line.expect4
-rw-r--r--t/chainlint/blank-line.test10
-rw-r--r--t/chainlint/block.expect12
-rw-r--r--t/chainlint/block.test15
-rw-r--r--t/chainlint/broken-chain.expect6
-rw-r--r--t/chainlint/broken-chain.test8
-rw-r--r--t/chainlint/case.expect19
-rw-r--r--t/chainlint/case.test23
-rw-r--r--t/chainlint/close-nested-and-parent-together.expect4
-rw-r--r--t/chainlint/close-nested-and-parent-together.test3
-rw-r--r--t/chainlint/close-subshell.expect25
-rw-r--r--t/chainlint/close-subshell.test27
-rw-r--r--t/chainlint/command-substitution.expect9
-rw-r--r--t/chainlint/command-substitution.test11
-rw-r--r--t/chainlint/comment.expect4
-rw-r--r--t/chainlint/comment.test11
-rw-r--r--t/chainlint/complex-if-in-cuddled-loop.expect10
-rw-r--r--t/chainlint/complex-if-in-cuddled-loop.test11
-rw-r--r--t/chainlint/cuddled-if-then-else.expect7
-rw-r--r--t/chainlint/cuddled-if-then-else.test7
-rw-r--r--t/chainlint/cuddled-loop.expect5
-rw-r--r--t/chainlint/cuddled-loop.test7
-rw-r--r--t/chainlint/cuddled.expect21
-rw-r--r--t/chainlint/cuddled.test23
-rw-r--r--t/chainlint/exit-loop.expect24
-rw-r--r--t/chainlint/exit-loop.test27
-rw-r--r--t/chainlint/exit-subshell.expect5
-rw-r--r--t/chainlint/exit-subshell.test6
-rw-r--r--t/chainlint/for-loop.expect11
-rw-r--r--t/chainlint/for-loop.test19
-rw-r--r--t/chainlint/here-doc-close-subshell.expect2
-rw-r--r--t/chainlint/here-doc-close-subshell.test5
-rw-r--r--t/chainlint/here-doc-multi-line-command-subst.expect5
-rw-r--r--t/chainlint/here-doc-multi-line-command-subst.test9
-rw-r--r--t/chainlint/here-doc-multi-line-string.expect4
-rw-r--r--t/chainlint/here-doc-multi-line-string.test8
-rw-r--r--t/chainlint/here-doc.expect9
-rw-r--r--t/chainlint/here-doc.test37
-rw-r--r--t/chainlint/if-in-loop.expect12
-rw-r--r--t/chainlint/if-in-loop.test15
-rw-r--r--t/chainlint/if-then-else.expect19
-rw-r--r--t/chainlint/if-then-else.test28
-rw-r--r--t/chainlint/incomplete-line.expect4
-rw-r--r--t/chainlint/incomplete-line.test12
-rw-r--r--t/chainlint/inline-comment.expect9
-rw-r--r--t/chainlint/inline-comment.test12
-rw-r--r--t/chainlint/loop-in-if.expect12
-rw-r--r--t/chainlint/loop-in-if.test15
-rw-r--r--t/chainlint/multi-line-nested-command-substitution.expect18
-rw-r--r--t/chainlint/multi-line-nested-command-substitution.test18
-rw-r--r--t/chainlint/multi-line-string.expect15
-rw-r--r--t/chainlint/multi-line-string.test27
-rw-r--r--t/chainlint/negated-one-liner.expect5
-rw-r--r--t/chainlint/negated-one-liner.test7
-rw-r--r--t/chainlint/nested-cuddled-subshell.expect19
-rw-r--r--t/chainlint/nested-cuddled-subshell.test31
-rw-r--r--t/chainlint/nested-here-doc.expect7
-rw-r--r--t/chainlint/nested-here-doc.test33
-rw-r--r--t/chainlint/nested-subshell-comment.expect11
-rw-r--r--t/chainlint/nested-subshell-comment.test13
-rw-r--r--t/chainlint/nested-subshell.expect12
-rw-r--r--t/chainlint/nested-subshell.test14
-rw-r--r--t/chainlint/one-liner.expect9
-rw-r--r--t/chainlint/one-liner.test12
-rw-r--r--t/chainlint/p4-filespec.expect4
-rw-r--r--t/chainlint/p4-filespec.test5
-rw-r--r--t/chainlint/pipe.expect8
-rw-r--r--t/chainlint/pipe.test12
-rw-r--r--t/chainlint/semicolon.expect20
-rw-r--r--t/chainlint/semicolon.test25
-rw-r--r--t/chainlint/subshell-here-doc.expect11
-rw-r--r--t/chainlint/subshell-here-doc.test39
-rw-r--r--t/chainlint/subshell-one-liner.expect14
-rw-r--r--t/chainlint/subshell-one-liner.test24
-rw-r--r--t/chainlint/t7900-subtree.expect10
-rw-r--r--t/chainlint/t7900-subtree.test22
-rw-r--r--t/chainlint/while-loop.expect11
-rw-r--r--t/chainlint/while-loop.test19
-rwxr-xr-xt/check-non-portable-shell.pl33
-rw-r--r--t/diff-lib.sh4
-rw-r--r--t/gitweb-lib.sh7
-rw-r--r--t/helper/.gitignore38
-rw-r--r--t/helper/test-chmtime.c59
-rw-r--r--t/helper/test-config.c24
-rw-r--r--t/helper/test-ctype.c3
-rw-r--r--t/helper/test-date.c39
-rw-r--r--t/helper/test-delta.c15
-rw-r--r--t/helper/test-drop-caches.c157
-rw-r--r--t/helper/test-dump-cache-tree.c8
-rw-r--r--t/helper/test-dump-fsmonitor.c22
-rw-r--r--t/helper/test-dump-split-index.c9
-rw-r--r--t/helper/test-dump-untracked-cache.c15
-rw-r--r--t/helper/test-example-decorate.c75
-rw-r--r--t/helper/test-genrandom.c3
-rw-r--r--t/helper/test-hashmap.c90
-rw-r--r--t/helper/test-index-version.c3
-rw-r--r--t/helper/test-json-writer.c565
-rw-r--r--t/helper/test-lazy-init-name-hash.c265
-rw-r--r--t/helper/test-line-buffer.c32
-rw-r--r--t/helper/test-match-trees.c7
-rw-r--r--t/helper/test-mergesort.c3
-rw-r--r--t/helper/test-mktemp.c3
-rw-r--r--t/helper/test-online-cpus.c9
-rw-r--r--t/helper/test-parse-options.c11
-rw-r--r--t/helper/test-path-utils.c41
-rw-r--r--t/helper/test-pkt-line.c98
-rw-r--r--t/helper/test-prio-queue.c3
-rw-r--r--t/helper/test-reach.c142
-rw-r--r--t/helper/test-read-cache.c4
-rw-r--r--t/helper/test-read-midx.c51
-rw-r--r--t/helper/test-ref-store.c299
-rw-r--r--t/helper/test-regex.c7
-rw-r--r--t/helper/test-repository.c88
-rw-r--r--t/helper/test-revision-walking.c3
-rw-r--r--t/helper/test-run-command.c18
-rw-r--r--t/helper/test-scrap-cache-tree.c10
-rw-r--r--t/helper/test-sha1-array.c24
-rw-r--r--t/helper/test-sha1.c3
-rwxr-xr-xt/helper/test-sha1.sh4
-rw-r--r--t/helper/test-sigchain.c3
-rw-r--r--t/helper/test-strcmp-offset.c23
-rw-r--r--t/helper/test-string-list.c28
-rw-r--r--t/helper/test-submodule-config.c27
-rw-r--r--t/helper/test-subprocess.c3
-rw-r--r--t/helper/test-tool.c74
-rw-r--r--t/helper/test-tool.h53
-rw-r--r--t/helper/test-urlmatch-normalization.c5
-rw-r--r--t/helper/test-wildmatch.c11
-rw-r--r--t/helper/test-windows-named-pipe.c72
-rw-r--r--t/helper/test-write-cache.c20
-rw-r--r--t/interop/.gitignore4
-rw-r--r--t/interop/Makefile16
-rw-r--r--t/interop/README85
-rwxr-xr-xt/interop/i0000-basic.sh27
-rwxr-xr-xt/interop/i5500-git-daemon.sh41
-rwxr-xr-xt/interop/i5700-protocol-transition.sh68
-rw-r--r--t/interop/interop-lib.sh92
-rwxr-xr-xt/lib-credential.sh19
-rw-r--r--t/lib-diff-alternative.sh12
-rw-r--r--t/lib-git-daemon.sh44
-rw-r--r--t/lib-git-p4.sh2
-rw-r--r--t/lib-git-svn.sh117
-rwxr-xr-xt/lib-gpg.sh32
-rw-r--r--t/lib-gpg/gpgsm-gen-key.in8
-rw-r--r--t/lib-gpg/gpgsm_cert.p12bin0 -> 2652 bytes
-rw-r--r--t/lib-httpd.sh30
-rw-r--r--t/lib-httpd/apache.conf40
-rw-r--r--t/lib-httpd/apply-one-time-sed.sh22
-rw-r--r--t/lib-pack.sh14
-rw-r--r--t/lib-proto-disable.sh146
-rw-r--r--t/lib-rebase.sh6
-rwxr-xr-xt/lib-submodule-update.sh624
-rw-r--r--t/lib-t6000.sh6
-rw-r--r--t/lib-terminal.sh4
-rw-r--r--t/oid-info/README19
-rw-r--r--t/oid-info/hash-info8
-rw-r--r--t/oid-info/oid29
-rw-r--r--t/perf/README43
-rwxr-xr-xt/perf/aggregate.perl311
-rwxr-xr-xt/perf/bisect_regression73
-rwxr-xr-xt/perf/bisect_run_script53
-rw-r--r--t/perf/lib-pack.sh25
-rwxr-xr-xt/perf/p0000-perf-lib-sanity.sh2
-rwxr-xr-xt/perf/p0001-rev-list.sh3
-rwxr-xr-xt/perf/p0002-read-cache.sh2
-rwxr-xr-xt/perf/p0003-delta-base-cache.sh31
-rwxr-xr-xt/perf/p0004-lazy-init-name-hash.sh56
-rwxr-xr-xt/perf/p0005-status.sh49
-rwxr-xr-xt/perf/p0006-read-tree-checkout.sh67
-rwxr-xr-xt/perf/p0007-write-cache.sh29
-rwxr-xr-xt/perf/p0071-sort.sh26
-rwxr-xr-xt/perf/p0100-globbing.sh43
-rwxr-xr-xt/perf/p1450-fsck.sh13
-rwxr-xr-xt/perf/p1451-fsck-skip-list.sh40
-rwxr-xr-xt/perf/p3400-rebase.sh56
-rwxr-xr-xt/perf/p4205-log-pretty-formats.sh16
-rwxr-xr-xt/perf/p4211-line-log.sh8
-rwxr-xr-xt/perf/p4220-log-grep-engines.sh53
-rwxr-xr-xt/perf/p4221-log-grep-engines-fixed.sh44
-rwxr-xr-xt/perf/p5302-pack-index.sh7
-rwxr-xr-xt/perf/p5303-many-packs.sh87
-rwxr-xr-xt/perf/p5310-pack-bitmaps.sh14
-rwxr-xr-xt/perf/p5311-pack-bitmaps-fetch.sh45
-rwxr-xr-xt/perf/p5550-fetch-tags.sh78
-rwxr-xr-xt/perf/p5551-fetch-rescan.sh55
-rwxr-xr-xt/perf/p7000-filter-branch.sh5
-rwxr-xr-xt/perf/p7519-fsmonitor.sh183
-rwxr-xr-xt/perf/p7820-grep-engines.sh88
-rwxr-xr-xt/perf/p7821-grep-engines-fixed.sh74
-rw-r--r--t/perf/perf-lib.sh108
-rw-r--r--t/perf/repos/.gitignore1
-rwxr-xr-xt/perf/repos/inflate-repo.sh85
-rwxr-xr-xt/perf/repos/many-files.sh110
-rwxr-xr-xt/perf/run176
-rwxr-xr-xt/t0000-basic.sh222
-rwxr-xr-xt/t0001-init.sh91
-rwxr-xr-xt/t0002-gitfile.sh80
-rwxr-xr-xt/t0003-attributes.sh47
-rwxr-xr-xt/t0005-signals.sh6
-rwxr-xr-xt/t0006-date.sh29
-rwxr-xr-xt/t0008-ignores.sh31
-rwxr-xr-xt/t0009-prio-queue.sh6
-rwxr-xr-xt/t0011-hashmap.sh4
-rwxr-xr-xt/t0012-help.sh88
-rwxr-xr-xt/t0013-sha1dc.sh19
-rw-r--r--t/t0013/shattered-1.pdfbin0 -> 422435 bytes
-rwxr-xr-xt/t0014-alias.sh40
-rwxr-xr-xt/t0019-json-writer.sh331
-rw-r--r--t/t0019/parse_json.perl55
-rwxr-xr-xt/t0020-crlf.sh18
-rwxr-xr-xt/t0021-conversion.sh621
-rw-r--r--t/t0021/rot13-filter.pl226
-rwxr-xr-xt/t0025-crlf-auto.sh155
-rwxr-xr-xt/t0025-crlf-renormalize.sh30
-rwxr-xr-xt/t0027-auto-crlf.sh122
-rwxr-xr-xt/t0028-working-tree-encoding.sh249
-rwxr-xr-xt/t0030-stripspace.sh48
-rwxr-xr-xt/t0040-parse-options.sh235
-rwxr-xr-xt/t0041-usage.sh107
-rwxr-xr-xt/t0050-filesystem.sh16
-rwxr-xr-xt/t0051-windows-named-pipe.sh17
-rwxr-xr-xt/t0060-path-utils.sh190
-rwxr-xr-xt/t0061-run-command.sh97
-rwxr-xr-xt/t0062-revision-walking.sh2
-rwxr-xr-xt/t0063-string-list.sh48
-rwxr-xr-xt/t0064-sha1-array.sh65
-rwxr-xr-xt/t0065-strcmp-offset.sh21
-rwxr-xr-xt/t0070-fundamental.sh10
-rwxr-xr-xt/t0090-cache-tree.sh55
-rwxr-xr-xt/t0100-previous.sh8
-rwxr-xr-xt/t0110-urlmatch-normalization.sh266
-rwxr-xr-xt/t0202/test.pl14
-rwxr-xr-xt/t0203-gettext-setlocale-sanity.sh8
-rwxr-xr-xt/t0205-gettext-poison.sh4
-rwxr-xr-xt/t0300-credentials.sh3
-rwxr-xr-xt/t0301-credential-cache.sh93
-rwxr-xr-xt/t0302-credential-store.sh2
-rwxr-xr-xt/t0410-partial-clone.sh426
-rwxr-xr-xt/t1000-read-tree-m-3way.sh648
-rwxr-xr-xt/t1001-read-tree-m-2way.sh651
-rwxr-xr-xt/t1002-read-tree-m-u-2way.sh69
-rwxr-xr-xt/t1004-read-tree-m-u-wf.sh16
-rwxr-xr-xt/t1005-read-tree-reset.sh10
-rwxr-xr-xt/t1006-cat-file.sh43
-rwxr-xr-xt/t1007-hash-object.sh94
-rwxr-xr-xt/t1008-read-tree-overlay.sh2
-rwxr-xr-xt/t1011-read-tree-sparse-checkout.sh18
-rwxr-xr-xt/t1012-read-tree-df.sh2
-rwxr-xr-xt/t1013-read-tree-submodule.sh7
-rwxr-xr-xt/t1015-read-index-unmerged.sh123
-rwxr-xr-xt/t1020-subdirectory.sh2
-rwxr-xr-xt/t1050-large.sh48
-rwxr-xr-xt/t1060-object-corruption.sh24
-rwxr-xr-xt/t1090-sparse-checkout-scope.sh14
-rwxr-xr-xt/t1100-commit-tree-options.sh2
-rwxr-xr-xt/t1200-tutorial.sh268
-rwxr-xr-xt/t1300-config.sh (renamed from t/t1300-repo-config.sh)543
-rwxr-xr-xt/t1301-shared-repo.sh51
-rwxr-xr-xt/t1302-repo-version.sh32
-rwxr-xr-xt/t1303-wacky-config.sh4
-rwxr-xr-xt/t1304-default-acl.sh2
-rwxr-xr-xt/t1305-config-include.sh148
-rwxr-xr-xt/t1306-xdg-files.sh6
-rwxr-xr-xt/t1307-config-blob.sh4
-rwxr-xr-xt/t1308-config-set.sh45
-rwxr-xr-xt/t1309-early-config.sh92
-rwxr-xr-xt/t1310-config-default.sh36
-rwxr-xr-xt/t1350-config-hooks-path.sh6
-rwxr-xr-xt/t1400-update-ref.sh663
-rwxr-xr-xt/t1401-symbolic-ref.sh49
-rwxr-xr-xt/t1402-check-ref-format.sh16
-rwxr-xr-xt/t1403-show-ref.sh78
-rwxr-xr-xt/t1404-update-ref-df-conflicts.sh107
-rwxr-xr-xt/t1404-update-ref-errors.sh621
-rwxr-xr-xt/t1405-main-ref-store.sh129
-rwxr-xr-xt/t1406-submodule-ref-store.sh101
-rwxr-xr-xt/t1407-worktree-ref-store.sh82
-rwxr-xr-xt/t1408-packed-refs.sh42
-rwxr-xr-xt/t1409-avoid-packing-refs.sh118
-rwxr-xr-xt/t1410-reflog.sh8
-rwxr-xr-xt/t1411-reflog-show.sh30
-rwxr-xr-xt/t1414-reflog-walk.sh135
-rwxr-xr-xt/t1430-bad-ref-name.sh47
-rwxr-xr-xt/t1450-fsck.sh266
-rwxr-xr-xt/t1500-rev-parse.sh74
-rwxr-xr-xt/t1501-work-tree.sh38
-rwxr-xr-xt/t1502-rev-parse-parseopt.sh112
-rwxr-xr-xt/t1503-rev-parse-verify.sh5
-rwxr-xr-xt/t1506-rev-parse-diagnosis.sh2
-rwxr-xr-xt/t1507-rev-parse-upstream.sh43
-rwxr-xr-xt/t1510-repo-setup.sh29
-rwxr-xr-xt/t1512-rev-parse-disambiguation.sh105
-rwxr-xr-xt/t1514-rev-parse-push.sh14
-rwxr-xr-xt/t1600-index.sh5
-rwxr-xr-xt/t1601-index-bogus.sh22
-rwxr-xr-xt/t1700-split-index.sh433
-rwxr-xr-xt/t2010-checkout-ambiguous.sh9
-rwxr-xr-xt/t2011-checkout-invalid-head.sh2
-rwxr-xr-xt/t2013-checkout-submodule.sh11
-rwxr-xr-xt/t2016-checkout-patch.sh24
-rwxr-xr-xt/t2020-checkout-detach.sh154
-rwxr-xr-xt/t2022-checkout-paths.sh6
-rwxr-xr-xt/t2024-checkout-dwim.sh75
-rwxr-xr-xt/t2025-worktree-add.sh284
-rwxr-xr-xt/t2026-worktree-prune.sh7
-rwxr-xr-xt/t2027-worktree-list.sh77
-rwxr-xr-xt/t2028-worktree-move.sh188
-rwxr-xr-xt/t2101-update-index-reupdate.sh91
-rwxr-xr-xt/t2103-update-index-ignore-missing.sh2
-rwxr-xr-xt/t2104-update-index-skip-worktree.sh6
-rwxr-xr-xt/t2107-update-index-basic.sh17
-rwxr-xr-xt/t2200-add-update.sh3
-rwxr-xr-xt/t2201-add-update-typechange.sh16
-rwxr-xr-xt/t2202-add-addremove.sh17
-rwxr-xr-xt/t2203-add-intent.sh200
-rwxr-xr-xt/t2204-add-ignored.sh8
-rwxr-xr-xt/t3000-ls-files-others.sh2
-rwxr-xr-xt/t3001-ls-files-others-exclude.sh21
-rwxr-xr-xt/t3004-ls-files-basic.sh6
-rwxr-xr-xt/t3005-ls-files-relative.sh8
-rwxr-xr-xt/t3006-ls-files-long.sh2
-rwxr-xr-xt/t3007-ls-files-recurse-submodules.sh300
-rwxr-xr-xt/t3008-ls-files-lazy-init-name-hash.sh27
-rwxr-xr-xt/t3030-merge-recursive.sh448
-rwxr-xr-xt/t3031-merge-criscross.sh2
-rwxr-xr-xt/t3034-merge-recursive-rename-options.sh18
-rwxr-xr-xt/t3035-merge-sparse.sh58
-rwxr-xr-xt/t3040-subprojects-basic.sh2
-rwxr-xr-xt/t3050-subprojects-fetch.sh8
-rwxr-xr-xt/t3070-wildmatch.sh653
-rwxr-xr-xt/t3100-ls-tree-restrict.sh2
-rwxr-xr-xt/t3101-ls-tree-dirname.sh4
-rwxr-xr-xt/t3102-ls-tree-wildcards.sh10
-rwxr-xr-xt/t3103-ls-tree-misc.sh3
-rwxr-xr-xt/t3200-branch.sh508
-rwxr-xr-xt/t3201-branch-contains.sh64
-rwxr-xr-xt/t3203-branch-output.sh70
-rwxr-xr-xt/t3204-branch-name-interpretation.sh133
-rwxr-xr-xt/t3205-branch-color.sh43
-rwxr-xr-xt/t3206-range-diff.sh206
-rw-r--r--t/t3206/history.export604
-rwxr-xr-xt/t3210-pack-refs.sh54
-rwxr-xr-xt/t3301-notes.sh12
-rwxr-xr-xt/t3306-notes-prune.sh2
-rwxr-xr-xt/t3308-notes-merge.sh4
-rwxr-xr-xt/t3310-notes-merge-manual-resolve.sh24
-rwxr-xr-xt/t3320-notes-merge-worktrees.sh8
-rwxr-xr-xt/t3400-rebase.sh72
-rwxr-xr-xt/t3401-rebase-and-am-rename.sh213
-rwxr-xr-xt/t3402-rebase-merge.sh4
-rwxr-xr-xt/t3404-rebase-interactive.sh251
-rwxr-xr-xt/t3405-rebase-malformed.sh18
-rwxr-xr-xt/t3407-rebase-abort.sh24
-rwxr-xr-xt/t3408-rebase-multi-line.sh26
-rwxr-xr-xt/t3415-rebase-autosquash.sh88
-rwxr-xr-xt/t3417-rebase-whitespace-fix.sh6
-rwxr-xr-xt/t3418-rebase-continue.sh190
-rwxr-xr-xt/t3420-rebase-autostash.sh150
-rwxr-xr-xt/t3421-rebase-topology-linear.sh13
-rwxr-xr-xt/t3422-rebase-incompatible-options.sh88
-rwxr-xr-xt/t3423-rebase-reword.sh48
-rwxr-xr-xt/t3426-rebase-submodule.sh20
-rwxr-xr-xt/t3428-rebase-signoff.sh84
-rwxr-xr-xt/t3429-rebase-edit-todo.sh14
-rwxr-xr-xt/t3430-rebase-merges.sh399
-rwxr-xr-xt/t3501-revert-cherry-pick.sh18
-rwxr-xr-xt/t3502-cherry-pick-merge.sh9
-rwxr-xr-xt/t3504-cherry-pick-rerere.sh92
-rwxr-xr-xt/t3505-cherry-pick-empty.sh18
-rwxr-xr-xt/t3507-cherry-pick-conflict.sh13
-rwxr-xr-xt/t3510-cherry-pick-sequence.sh42
-rwxr-xr-xt/t3511-cherry-pick-x.sh60
-rwxr-xr-xt/t3512-cherry-pick-submodule.sh37
-rwxr-xr-xt/t3513-revert-submodule.sh1
-rwxr-xr-xt/t3600-rm.sh205
-rwxr-xr-xt/t3700-add.sh132
-rwxr-xr-xt/t3701-add-interactive.sh533
-rwxr-xr-xt/t3702-add-edit.sh11
-rwxr-xr-xt/t3900-i18n-commit.sh16
-rwxr-xr-xt/t3901-i18n-patch.sh40
-rwxr-xr-xt/t3901/8859-1.txt (renamed from t/t3901-8859-1.txt)0
-rwxr-xr-xt/t3901/utf8.txt (renamed from t/t3901-utf8.txt)0
-rwxr-xr-xt/t3903-stash.sh385
-rwxr-xr-xt/t3904-stash-patch.sh16
-rwxr-xr-xt/t3905-stash-include-untracked.sh108
-rwxr-xr-xt/t3910-mac-os-precompose.sh3
-rwxr-xr-xt/t4001-diff-rename.sh40
-rwxr-xr-xt/t4002-diff-basic.sh2
-rwxr-xr-xt/t4005-diff-rename-2.sh95
-rwxr-xr-xt/t4006-diff-mode.sh2
-rwxr-xr-xt/t4007-rename-3.sh17
-rwxr-xr-xt/t4008-diff-break-rewrite.sh59
-rwxr-xr-xt/t4010-diff-pathspec.sh9
-rwxr-xr-xt/t4011-diff-symlink.sh14
-rwxr-xr-xt/t4012-diff-binary.sh10
-rwxr-xr-xt/t4013-diff-various.sh77
-rw-r--r--t/t4013/diff.diff-tree_--pretty_--root_--stat_--compact-summary_initial12
-rw-r--r--t/t4013/diff.diff-tree_--pretty_-R_--root_--stat_--compact-summary_initial12
-rw-r--r--t/t4013/diff.diff-tree_--stat_--compact-summary_initial_mode4
-rw-r--r--t/t4013/diff.diff-tree_--stat_initial_mode4
-rw-r--r--t/t4013/diff.diff-tree_--summary_initial_mode3
-rw-r--r--t/t4013/diff.diff-tree_-R_--stat_--compact-summary_initial_mode4
-rw-r--r--t/t4013/diff.diff-tree_initial_mode3
-rw-r--r--t/t4013/diff.diff_--line-prefix=abc_master_master^_side29
-rw-r--r--t/t4013/diff.diff_--line-prefix_--cached_--_file015
-rw-r--r--t/t4013/diff.diff_--no-index_--raw_--abbrev=4_dir2_dir3
-rw-r--r--t/t4013/diff.diff_--no-index_--raw_--no-abbrev_dir2_dir3
-rw-r--r--t/t4013/diff.diff_--no-index_--raw_dir2_dir3
-rw-r--r--t/t4013/diff.diff_--raw_--abbrev=4_initial6
-rw-r--r--t/t4013/diff.diff_--raw_--no-abbrev_initial6
-rw-r--r--t/t4013/diff.diff_--raw_initial6
-rw-r--r--t/t4013/diff.log_--decorate=full_--all6
-rw-r--r--t/t4013/diff.log_--decorate_--all6
-rw-r--r--t/t4013/diff.noellipses-diff-tree_--root_--abbrev_initial6
-rw-r--r--t/t4013/diff.noellipses-diff-tree_--root_-r_--abbrev=4_initial6
-rw-r--r--t/t4013/diff.noellipses-diff-tree_--root_-r_--abbrev_initial6
-rw-r--r--t/t4013/diff.noellipses-diff-tree_-c_--abbrev_master5
-rw-r--r--t/t4013/diff.noellipses-diff_--no-index_--raw_--abbrev=4_dir2_dir3
-rw-r--r--t/t4013/diff.noellipses-diff_--no-index_--raw_dir2_dir3
-rw-r--r--t/t4013/diff.noellipses-diff_--patch-with-raw_-r_initial..side36
-rw-r--r--t/t4013/diff.noellipses-diff_--patch-with-raw_initial..side36
-rw-r--r--t/t4013/diff.noellipses-diff_--raw_--abbrev=4_initial6
-rw-r--r--t/t4013/diff.noellipses-diff_--raw_initial6
-rw-r--r--t/t4013/diff.noellipses-show_--patch-with-raw_side42
-rw-r--r--t/t4013/diff.noellipses-whatchanged_--root_master42
-rw-r--r--t/t4013/diff.noellipses-whatchanged_-SF_master9
-rw-r--r--t/t4013/diff.noellipses-whatchanged_master32
-rwxr-xr-xt/t4014-format-patch.sh179
-rwxr-xr-xt/t4015-diff-whitespace.sh1029
-rwxr-xr-xt/t4018-diff-funcname.sh1
-rw-r--r--t/t4018/golang-complex-function8
-rw-r--r--t/t4018/golang-func4
-rw-r--r--t/t4018/golang-interface4
-rw-r--r--t/t4018/golang-long-func5
-rw-r--r--t/t4018/golang-struct4
-rw-r--r--t/t4018/php-abstract-class4
-rw-r--r--t/t4018/php-class4
-rw-r--r--t/t4018/php-final-class4
-rw-r--r--t/t4018/php-function4
-rw-r--r--t/t4018/php-interface4
-rw-r--r--t/t4018/php-method7
-rw-r--r--t/t4018/php-trait7
-rwxr-xr-xt/t4019-diff-wserror.sh2
-rwxr-xr-xt/t4020-diff-external.sh20
-rwxr-xr-xt/t4021-format-patch-numbered.sh17
-rwxr-xr-xt/t4022-diff-rewrite.sh6
-rwxr-xr-xt/t4024-diff-optimize-common.sh16
-rwxr-xr-xt/t4025-hunk-header.sh10
-rwxr-xr-xt/t4026-color.sh7
-rwxr-xr-xt/t4027-diff-submodule.sh102
-rwxr-xr-xt/t4029-diff-trailing-space.sh40
-rwxr-xr-xt/t4030-diff-textconv.sh5
-rwxr-xr-xt/t4032-diff-inter-hunk-context.sh27
-rwxr-xr-xt/t4033-diff-patience.sh8
-rwxr-xr-xt/t4035-diff-quiet.sh11
-rwxr-xr-xt/t4038-diff-combined.sh2
-rwxr-xr-xt/t4039-diff-assume-unchanged.sh3
-rwxr-xr-xt/t4041-diff-submodule-option.sh30
-rwxr-xr-xt/t4042-diff-textconv-caching.sh16
-rwxr-xr-xt/t4044-diff-index-unique-abbrev.sh6
-rwxr-xr-xt/t4045-diff-relative.sh112
-rwxr-xr-xt/t4046-diff-unmerged.sh14
-rwxr-xr-xt/t4047-diff-dirstat.sh4
-rwxr-xr-xt/t4051-diff-function-context.sh32
-rw-r--r--t/t4051/hello.c3
-rwxr-xr-xt/t4052-stat-output.sh46
-rwxr-xr-xt/t4053-diff-no-index.sh38
-rwxr-xr-xt/t4054-diff-bogus-tree.sh22
-rwxr-xr-xt/t4058-diff-duplicates.sh12
-rwxr-xr-xt/t4059-diff-submodule-not-initialized.sh127
-rwxr-xr-xt/t4060-diff-submodule-option-diff-format.sh819
-rwxr-xr-xt/t4061-diff-indent.sh368
-rwxr-xr-xt/t4062-diff-pickaxe.sh29
-rwxr-xr-xt/t4063-diff-blobs.sh96
-rwxr-xr-xt/t4064-diff-oidfind.sh68
-rwxr-xr-xt/t4065-diff-anchored.sh94
-rwxr-xr-xt/t4107-apply-ignore-whitespace.sh14
-rwxr-xr-xt/t4116-apply-reverse.sh2
-rwxr-xr-xt/t4117-apply-reject.sh6
-rwxr-xr-xt/t4121-apply-diffs.sh2
-rwxr-xr-xt/t4124-apply-ws-rule.sh61
-rwxr-xr-xt/t4129-apply-samemode.sh16
-rwxr-xr-xt/t4130-apply-criss-cross-rename.sh10
-rwxr-xr-xt/t4132-apply-removal.sh5
-rwxr-xr-xt/t4133-apply-filenames.sh24
-rwxr-xr-xt/t4135-apply-weird-filenames.sh27
-rwxr-xr-xt/t4136-apply-check.sh18
-rwxr-xr-xt/t4138-apply-ws-expansion.sh2
-rwxr-xr-xt/t4150-am.sh172
-rwxr-xr-xt/t4151-am-abort.sh9
-rwxr-xr-xt/t4200-rerere.sh174
-rwxr-xr-xt/t4201-shortlog.sh33
-rwxr-xr-xt/t4202-log.sh754
-rwxr-xr-xt/t4203-mailmap.sh4
-rwxr-xr-xt/t4204-patch-id.sh14
-rwxr-xr-xt/t4205-log-pretty-formats.sh492
-rwxr-xr-xt/t4207-log-decoration-colors.sh24
-rwxr-xr-xt/t4208-log-magic-pathspec.sh80
-rwxr-xr-xt/t4210-log-i18n.sh6
-rwxr-xr-xt/t4211-line-log.sh17
-rwxr-xr-xt/t4212-log-corrupt.sh6
-rwxr-xr-xt/t4213-log-tabexpand.sh2
-rwxr-xr-xt/t4254-am-corrupt.sh6
-rwxr-xr-xt/t4256-am-format-flowed.sh19
-rw-r--r--t/t4256/1/mailinfo.c1245
-rw-r--r--t/t4256/1/mailinfo.c.orig1185
-rw-r--r--t/t4256/1/patch129
-rwxr-xr-xt/t4300-merge-tree.sh34
-rwxr-xr-xt/t5000-tar-tree.sh31
-rwxr-xr-xt/t5001-archive-attr.sh47
-rwxr-xr-xt/t5002-archive-attr-pattern.sh2
-rwxr-xr-xt/t5003-archive-zip.sh22
-rwxr-xr-xt/t5004-archive-corner-cases.sh54
-rw-r--r--t/t5004/big-pack.zipbin0 -> 7373 bytes
-rwxr-xr-xt/t5100-mailinfo.sh139
-rw-r--r--t/t5100/comment.expect5
-rw-r--r--t/t5100/comment.in9
-rw-r--r--t/t5100/info00185
-rw-r--r--t/t5100/info0018--no-inbody-headers5
-rw-r--r--t/t5100/msg00152
-rw-r--r--t/t5100/msg00182
-rw-r--r--t/t5100/msg0018--no-inbody-headers8
-rw-r--r--t/t5100/patch00186
-rw-r--r--t/t5100/patch0018--no-inbody-headers6
-rw-r--r--t/t5100/quoted-string.expect5
-rw-r--r--t/t5100/quoted-string.in9
-rw-r--r--t/t5100/sample.mbox19
-rwxr-xr-xt/t5150-request-pull.sh6
-rwxr-xr-xt/t5300-pack-object.sh84
-rwxr-xr-xt/t5301-sliding-window.sh2
-rwxr-xr-xt/t5302-pack-index.sh21
-rwxr-xr-xt/t5303-pack-corruption-resilience.sh99
-rwxr-xr-xt/t5304-prune.sh66
-rwxr-xr-xt/t5305-include-tag.sh94
-rwxr-xr-xt/t5307-pack-missing-commit.sh4
-rwxr-xr-xt/t5308-pack-detect-duplicates.sh17
-rwxr-xr-xt/t5309-pack-delta-cycles.sh6
-rwxr-xr-xt/t5310-pack-bitmaps.sh278
-rwxr-xr-xt/t5313-pack-bounds-checks.sh15
-rwxr-xr-xt/t5314-pack-cycle-detection.sh112
-rwxr-xr-xt/t5315-pack-objects-compression.sh44
-rwxr-xr-xt/t5316-pack-delta-depth.sh97
-rwxr-xr-xt/t5317-pack-objects-filter-objects.sh449
-rwxr-xr-xt/t5318-commit-graph.sh532
-rwxr-xr-xt/t5319-multi-pack-index.sh351
-rwxr-xr-xt/t5320-delta-islands.sh143
-rwxr-xr-xt/t5400-send-pack.sh47
-rwxr-xr-xt/t5401-update-hooks.sh14
-rwxr-xr-xt/t5404-tracking-branches.sh2
-rwxr-xr-xt/t5405-send-pack-rewind.sh3
-rwxr-xr-xt/t5406-remote-rejects.sh5
-rwxr-xr-xt/t5407-post-rewrite-hook.sh2
-rwxr-xr-xt/t5409-colorize-remote-messages.sh101
-rwxr-xr-xt/t5500-fetch-pack.sh299
-rwxr-xr-xt/t5504-fetch-receive-strict.sh200
-rwxr-xr-xt/t5505-remote.sh50
-rwxr-xr-xt/t5509-fetch-push-namespaces.sh3
-rwxr-xr-xt/t5510-fetch.sh382
-rwxr-xr-xt/t5512-ls-remote.sh128
-rwxr-xr-xt/t5514-fetch-multiple.sh3
-rwxr-xr-xt/t5516-fetch-push.sh158
-rwxr-xr-xt/t5517-push-mirror.sh10
-rwxr-xr-xt/t5520-pull.sh91
-rwxr-xr-xt/t5521-pull-options.sh45
-rwxr-xr-xt/t5523-push-upstream.sh2
-rwxr-xr-xt/t5526-fetch-submodules.sh171
-rwxr-xr-xt/t5527-fetch-odd-refs.sh2
-rwxr-xr-xt/t5528-push-default.sh10
-rwxr-xr-xt/t5531-deep-submodule-push.sh157
-rwxr-xr-xt/t5532-fetch-proxy.sh5
-rwxr-xr-xt/t5533-push-cas.sh73
-rwxr-xr-xt/t5534-push-signed.sh121
-rwxr-xr-xt/t5536-fetch-conflicts.sh22
-rwxr-xr-xt/t5537-fetch-shallow.sh45
-rwxr-xr-xt/t5539-fetch-http-shallow.sh73
-rwxr-xr-xt/t5541-http-push-smart.sh55
-rwxr-xr-xt/t5543-atomic-push.sh2
-rwxr-xr-xt/t5545-push-options.sh283
-rwxr-xr-xt/t5546-receive-limits.sh55
-rwxr-xr-xt/t5547-push-quarantine.sh72
-rwxr-xr-xt/t5550-http-fetch-dumb.sh123
-rwxr-xr-xt/t5551-http-fetch-smart.sh207
-rwxr-xr-xt/t5552-skipping-fetch-negotiator.sh215
-rwxr-xr-xt/t5561-http-backend.sh18
-rwxr-xr-xt/t5562-http-backend-content-length.sh167
-rwxr-xr-xt/t5562/invoke-with-content-length.pl37
-rwxr-xr-xt/t5570-git-daemon.sh47
-rwxr-xr-xt/t5571-pre-push-hook.sh8
-rwxr-xr-xt/t5572-pull-submodule.sh111
-rwxr-xr-xt/t5573-pull-verify-signatures.sh81
-rwxr-xr-xt/t5580-clone-push-unc.sh60
-rwxr-xr-xt/t5600-clone-fail-cleanup.sh100
-rwxr-xr-xt/t5601-clone.sh249
-rwxr-xr-xt/t5603-clone-dirname.sh2
-rwxr-xr-xt/t5605-clone-local.sh2
-rwxr-xr-xt/t5608-clone-2gb.sh4
-rwxr-xr-xt/t5611-clone-config.sh8
-rwxr-xr-xt/t5612-clone-refspec.sh104
-rwxr-xr-xt/t5613-info-alternate.sh205
-rwxr-xr-xt/t5614-clone-submodules-shallow.sh (renamed from t/t5614-clone-submodules.sh)4
-rwxr-xr-xt/t5615-alternate-env.sh90
-rwxr-xr-xt/t5616-partial-clone.sh277
-rwxr-xr-xt/t5700-protocol-v1.sh294
-rwxr-xr-xt/t5701-git-serve.sh211
-rwxr-xr-xt/t5702-protocol-v2.sh501
-rwxr-xr-xt/t5703-upload-pack-ref-in-want.sh377
-rwxr-xr-xt/t5801-remote-helpers.sh10
-rwxr-xr-xt/t5802-connect-helper.sh1
-rwxr-xr-xt/t5810-proto-disable-local.sh23
-rwxr-xr-xt/t5812-proto-disable-http.sh13
-rwxr-xr-xt/t5813-proto-disable-ssh.sh23
-rwxr-xr-xt/t6000-rev-list-misc.sh17
-rwxr-xr-xt/t6001-rev-list-graft.sh9
-rwxr-xr-xt/t6002-rev-list-bisect.sh28
-rwxr-xr-xt/t6006-rev-list-format.sh132
-rwxr-xr-xt/t6007-rev-list-cherry-pick-file.sh83
-rwxr-xr-xt/t6009-rev-list-parent.sh6
-rwxr-xr-xt/t6010-merge-base.sh10
-rwxr-xr-xt/t6011-rev-list-with-bad-commit.sh7
-rwxr-xr-xt/t6012-rev-list-simplify.sh2
-rwxr-xr-xt/t6013-rev-list-reverse-parents.sh4
-rwxr-xr-xt/t6015-rev-list-show-all-parents.sh31
-rwxr-xr-xt/t6018-rev-list-glob.sh30
-rwxr-xr-xt/t6019-rev-list-ancestry-path.sh3
-rwxr-xr-xt/t6020-merge-df.sh3
-rwxr-xr-xt/t6022-merge-rename.sh34
-rwxr-xr-xt/t6023-merge-file.sh12
-rwxr-xr-xt/t6024-recursive-merge.sh6
-rwxr-xr-xt/t6026-merge-attr.sh23
-rwxr-xr-xt/t6027-merge-binary.sh4
-rwxr-xr-xt/t6029-merge-subtree.sh44
-rwxr-xr-xt/t6030-bisect-porcelain.sh21
-rwxr-xr-xt/t6031-merge-filemode.sh2
-rwxr-xr-xt/t6036-recursive-corner-cases.sh1606
-rwxr-xr-xt/t6037-merge-ours-theirs.sh32
-rwxr-xr-xt/t6038-merge-text-auto.sh74
-rwxr-xr-xt/t6040-tracking-info.sh68
-rwxr-xr-xt/t6042-merge-rename-corner-cases.sh1212
-rwxr-xr-xt/t6043-merge-rename-directories.sh3998
-rwxr-xr-xt/t6044-merge-unrelated-index-changes.sh91
-rwxr-xr-xt/t6045-merge-rename-delete.sh23
-rwxr-xr-xt/t6046-merge-skip-unneeded-updates.sh763
-rwxr-xr-xt/t6050-replace.sh36
-rwxr-xr-xt/t6060-merge-index.sh3
-rwxr-xr-xt/t6100-rev-list-in-order.sh77
-rwxr-xr-xt/t6101-rev-parse-parents.sh120
-rwxr-xr-xt/t6111-rev-list-treesame.sh2
-rwxr-xr-xt/t6112-rev-list-filters-objects.sh265
-rwxr-xr-xt/t6120-describe.sh185
-rwxr-xr-xt/t6130-pathspec-noglob.sh9
-rwxr-xr-xt/t6132-pathspec-exclude.sh17
-rwxr-xr-xt/t6134-pathspec-in-submodule.sh32
-rwxr-xr-xt/t6135-pathspec-with-attrs.sh200
-rwxr-xr-xt/t6200-fmt-merge-msg.sh6
-rwxr-xr-xt/t6300-for-each-ref.sh335
-rwxr-xr-xt/t6301-for-each-ref-errors.sh2
-rwxr-xr-xt/t6302-for-each-ref-filter.sh114
-rwxr-xr-xt/t6500-gc.sh130
-rwxr-xr-xt/t6501-freshen-objects.sh33
-rwxr-xr-xt/t6600-test-reach.sh268
-rwxr-xr-xt/t7001-mv.sh71
-rwxr-xr-xt/t7003-filter-branch.sh75
-rwxr-xr-xt/t7004-tag.sh538
-rwxr-xr-xt/t7005-editor.sh18
-rwxr-xr-xt/t7006-pager.sh232
-rwxr-xr-xt/t7008-grep-binary.sh141
-rwxr-xr-xt/t7009-filter-branch-null-sha1.sh8
-rwxr-xr-xt/t7011-skip-worktree-reading.sh12
-rwxr-xr-xt/t7012-skip-worktree-writing.sh10
-rwxr-xr-xt/t7030-verify-tag.sh49
-rwxr-xr-xt/t7060-wtstatus.sh25
-rwxr-xr-xt/t7061-wtstatus-ignore.sh12
-rwxr-xr-xt/t7063-status-untracked-cache.sh190
-rwxr-xr-xt/t7064-wtstatus-pv2.sh652
-rwxr-xr-xt/t7102-reset.sh10
-rwxr-xr-xt/t7105-reset-patch.sh12
-rwxr-xr-xt/t7106-reset-unborn-branch.sh9
-rwxr-xr-xt/t7112-reset-submodule.sh8
-rwxr-xr-xt/t7201-co.sh58
-rwxr-xr-xt/t7300-clean.sh16
-rwxr-xr-xt/t7301-clean-interactive.sh52
-rwxr-xr-xt/t7400-submodule-basic.sh248
-rwxr-xr-xt/t7401-submodule-summary.sh13
-rwxr-xr-xt/t7405-submodule-merge.sh175
-rwxr-xr-xt/t7406-submodule-update.sh165
-rwxr-xr-xt/t7407-submodule-foreach.sh38
-rwxr-xr-xt/t7408-submodule-reference.sh268
-rwxr-xr-xt/t7409-submodule-detached-work-tree.sh2
-rwxr-xr-xt/t7410-submodule-checkout-to.sh99
-rwxr-xr-xt/t7411-submodule-config.sh85
-rwxr-xr-xt/t7412-submodule-absorbgitdirs.sh128
-rwxr-xr-xt/t7413-submodule-is-active.sh107
-rwxr-xr-xt/t7414-submodule-mistakes.sh37
-rwxr-xr-xt/t7415-submodule-names.sh194
-rwxr-xr-xt/t7416-submodule-dash-url.sh49
-rwxr-xr-xt/t7417-submodule-path-url.sh28
-rwxr-xr-xt/t7500-commit.sh36
-rwxr-xr-xt/t7501-commit.sh121
-rwxr-xr-xt/t7502-commit.sh7
-rwxr-xr-xt/t7504-commit-msg-hook.sh85
-rwxr-xr-xt/t7505-prepare-commit-msg-hook.sh134
-rw-r--r--t/t7505/expected-rebase-i17
-rw-r--r--t/t7505/expected-rebase-p18
-rwxr-xr-xt/t7506-status-submodule.sh143
-rwxr-xr-xt/t7508-status.sh246
-rwxr-xr-xt/t7509-commit.sh4
-rwxr-xr-xt/t7510-signed-commit.sh27
-rwxr-xr-xt/t7512-status-help.sh20
-rwxr-xr-xt/t7513-interpret-trailers.sh500
-rwxr-xr-xt/t7517-per-repo-email.sh47
-rwxr-xr-xt/t7518-ident-corner-cases.sh36
-rwxr-xr-xt/t7519-status-fsmonitor.sh356
-rwxr-xr-xt/t7519/fsmonitor-all24
-rwxr-xr-xt/t7519/fsmonitor-none22
-rwxr-xr-xt/t7519/fsmonitor-watchman133
-rwxr-xr-xt/t7520-ignored-hook-warning.sh41
-rwxr-xr-xt/t7521-ignored-mode.sh233
-rwxr-xr-xt/t7525-status-rename.sh113
-rwxr-xr-xt/t7600-merge.sh79
-rwxr-xr-xt/t7607-merge-overwrite.sh7
-rwxr-xr-xt/t7609-merge-co-error-msgs.sh2
-rwxr-xr-xt/t7610-mergetool.sh310
-rwxr-xr-xt/t7611-merge-abort.sh118
-rwxr-xr-xt/t7612-merge-verify-signatures.sh47
-rwxr-xr-xt/t7614-merge-signoff.sh69
-rwxr-xr-xt/t7700-repack.sh27
-rwxr-xr-xt/t7701-repack-unpack-unreachable.sh10
-rwxr-xr-xt/t7800-difftool.sh261
-rwxr-xr-xt/t7810-grep.sh378
-rwxr-xr-xt/t7811-grep-open.sh18
-rwxr-xr-xt/t7812-grep-icase-non-ascii.sh31
-rwxr-xr-xt/t7813-grep-icase-iso.sh2
-rwxr-xr-xt/t7814-grep-recurse-submodules.sh383
-rwxr-xr-xt/t8002-blame.sh37
-rwxr-xr-xt/t8003-blame-corner-cases.sh93
-rwxr-xr-xt/t8008-blame-formats.sh30
-rwxr-xr-xt/t8010-cat-file-filters.sh69
-rwxr-xr-xt/t8011-blame-split-file.sh117
-rwxr-xr-xt/t8012-blame-colors.sh48
-rwxr-xr-xt/t9000-addresses.sh27
-rwxr-xr-xt/t9000/test.pl67
-rwxr-xr-xt/t9001-send-email.sh192
-rwxr-xr-xt/t9004-example.sh10
-rwxr-xr-xt/t9010-svn-fe.sh69
-rwxr-xr-xt/t9011-svn-da.sh14
-rwxr-xr-xt/t9020-remote-svn.sh4
-rwxr-xr-xt/t9100-git-svn-basic.sh18
-rwxr-xr-xt/t9101-git-svn-props.sh36
-rwxr-xr-xt/t9104-git-svn-follow-parent.sh21
-rwxr-xr-xt/t9107-git-svn-migrate.sh2
-rwxr-xr-xt/t9108-git-svn-glob.sh14
-rwxr-xr-xt/t9109-git-svn-multi-glob.sh24
-rwxr-xr-xt/t9110-git-svn-use-svm-props.sh40
-rwxr-xr-xt/t9111-git-svn-use-svnsync-props.sh36
-rwxr-xr-xt/t9114-git-svn-dcommit-merge.sh14
-rwxr-xr-xt/t9115-git-svn-dcommit-funky-renames.sh7
-rwxr-xr-xt/t9117-git-svn-init-clone.sh12
-rwxr-xr-xt/t9118-git-svn-funky-branch-names.sh2
-rwxr-xr-xt/t9119-git-svn-info.sh120
-rwxr-xr-xt/t9120-git-svn-clone-with-percent-escapes.sh2
-rwxr-xr-xt/t9122-git-svn-author.sh6
-rwxr-xr-xt/t9129-git-svn-i18n-commitencoding.sh2
-rwxr-xr-xt/t9130-git-svn-authors-file.sh46
-rwxr-xr-xt/t9131-git-svn-empty-symlink.sh6
-rwxr-xr-xt/t9133-git-svn-nested-git-repo.sh6
-rwxr-xr-xt/t9134-git-svn-ignore-paths.sh6
-rwxr-xr-xt/t9135-git-svn-moved-branch-empty-file.sh3
-rwxr-xr-xt/t9137-git-svn-dcommit-clobber-series.sh2
-rwxr-xr-xt/t9138-git-svn-authors-prog.sh63
-rwxr-xr-xt/t9142-git-svn-shallow-clone.sh2
-rwxr-xr-xt/t9146-git-svn-empty-dirs.sh20
-rwxr-xr-xt/t9147-git-svn-include-paths.sh6
-rwxr-xr-xt/t9152-svn-empty-dirs-after-gc.sh2
-rwxr-xr-xt/t9153-git-svn-rewrite-uuid.sh8
-rwxr-xr-xt/t9158-git-svn-mergeinfo.sh2
-rwxr-xr-xt/t9160-git-svn-preserve-empty-dirs.sh1
-rwxr-xr-xt/t9164-git-svn-dcommit-concurrent.sh2
-rwxr-xr-xt/t9165-git-svn-fetch-merge-branch-of-branch.sh2
-rwxr-xr-xt/t9168-git-svn-partially-globbed-names.sh34
-rwxr-xr-xt/t9169-git-svn-dcommit-crlf.sh27
-rwxr-xr-xt/t9200-git-cvsexportcommit.sh15
-rwxr-xr-xt/t9300-fast-import.sh164
-rwxr-xr-xt/t9301-fast-import-notes.sh42
-rwxr-xr-xt/t9302-fast-import-unpack-limit.sh2
-rwxr-xr-xt/t9303-fast-import-compression.sh67
-rwxr-xr-xt/t9350-fast-export.sh88
-rwxr-xr-xt/t9400-git-cvsserver-server.sh64
-rwxr-xr-xt/t9401-git-cvsserver-crlf.sh2
-rwxr-xr-xt/t9402-git-cvsserver-refs.sh8
-rwxr-xr-xt/t9500-gitweb-standalone-no-errors.sh12
-rwxr-xr-xt/t9600-cvsimport.sh9
-rwxr-xr-xt/t9603-cvsimport-patchsets.sh4
-rwxr-xr-xt/t9604-cvsimport-timestamps.sh4
-rwxr-xr-xt/t9700/test.pl7
-rwxr-xr-xt/t9800-git-p4-basic.sh71
-rwxr-xr-xt/t9802-git-p4-filetype.sh4
-rwxr-xr-xt/t9803-git-p4-shell-metachars.sh4
-rwxr-xr-xt/t9806-git-p4-options.sh34
-rwxr-xr-xt/t9807-git-p4-submit.sh129
-rwxr-xr-xt/t9810-git-p4-rcs.sh2
-rwxr-xr-xt/t9811-git-p4-label-import.sh2
-rwxr-xr-xt/t9813-git-p4-preserve-users.sh22
-rwxr-xr-xt/t9814-git-p4-rename.sh24
-rwxr-xr-xt/t9815-git-p4-submit-fail.sh2
-rwxr-xr-xt/t9818-git-p4-block.sh8
-rwxr-xr-xt/t9820-git-p4-editor-handling.sh2
-rwxr-xr-xt/t9822-git-p4-path-encoding.sh16
-rwxr-xr-xt/t9824-git-p4-git-lfs.sh26
-rwxr-xr-xt/t9830-git-p4-symlink-dir.sh43
-rwxr-xr-xt/t9831-git-p4-triggers.sh103
-rwxr-xr-xt/t9832-unshelve.sh138
-rwxr-xr-xt/t9833-errors.sh80
-rwxr-xr-xt/t9902-completion.sh1246
-rwxr-xr-xt/t9903-bash-prompt.sh39
-rw-r--r--t/test-lib-functions.sh302
-rw-r--r--t/test-lib.sh307
-rwxr-xr-xt/test-terminal.perl1
-rwxr-xr-xt/valgrind/valgrind.sh12
-rw-r--r--tag.c80
-rw-r--r--tag.h12
-rw-r--r--tempfile.c260
-rw-r--r--tempfile.h130
-rwxr-xr-xtemplates/hooks--fsmonitor-watchman.sample114
-rwxr-xr-xtemplates/hooks--pre-commit.sample2
-rwxr-xr-xtemplates/hooks--pre-rebase.sample8
-rwxr-xr-xtemplates/hooks--pre-receive.sample24
-rwxr-xr-xtemplates/hooks--prepare-commit-msg.sample32
-rw-r--r--tmp-objdir.c292
-rw-r--r--tmp-objdir.h54
-rw-r--r--trace.c143
-rw-r--r--trace.h77
-rw-r--r--trailer.c1065
-rw-r--r--trailer.h99
-rw-r--r--transport-helper.c385
-rw-r--r--transport-internal.h70
-rw-r--r--transport.c669
-rw-r--r--transport.h190
-rw-r--r--tree-diff.c119
-rw-r--r--tree-walk.c178
-rw-r--r--tree-walk.h16
-rw-r--r--tree.c76
-rw-r--r--tree.h9
-rw-r--r--unicode-width.h (renamed from unicode_width.h)172
-rw-r--r--unpack-trees.c661
-rw-r--r--unpack-trees.h19
-rwxr-xr-xupdate_unicode.sh40
-rw-r--r--upload-pack.c1121
-rw-r--r--upload-pack.h23
-rw-r--r--url.c21
-rw-r--r--url.h2
-rw-r--r--urlmatch.c147
-rw-r--r--urlmatch.h14
-rw-r--r--usage.c110
-rw-r--r--userdiff.c37
-rw-r--r--utf8.c176
-rw-r--r--utf8.h45
-rw-r--r--vcs-svn/fast_export.c51
-rw-r--r--vcs-svn/fast_export.h7
-rw-r--r--vcs-svn/repo_tree.c48
-rw-r--r--vcs-svn/repo_tree.h23
-rw-r--r--vcs-svn/svndump.c36
-rw-r--r--version.c1
-rw-r--r--version.h1
-rw-r--r--versioncmp.c100
-rw-r--r--walker.c60
-rw-r--r--walker.h3
-rw-r--r--wildmatch.c3
-rw-r--r--wildmatch.h6
-rw-r--r--worktree.c395
-rw-r--r--worktree.h61
-rw-r--r--wrap-for-bin.sh21
-rw-r--r--wrapper.c127
-rw-r--r--write-or-die.c (renamed from write_or_die.c)25
-rw-r--r--ws.c57
-rw-r--r--wt-status.c1021
-rw-r--r--wt-status.h50
-rw-r--r--xdiff-interface.c39
-rw-r--r--xdiff-interface.h19
-rw-r--r--xdiff/xdiff.h42
-rw-r--r--xdiff/xdiffi.c639
-rw-r--r--xdiff/xdiffi.h4
-rw-r--r--xdiff/xemit.c38
-rw-r--r--xdiff/xemit.h4
-rw-r--r--xdiff/xhistogram.c133
-rw-r--r--xdiff/xinclude.h4
-rw-r--r--xdiff/xmacros.h4
-rw-r--r--xdiff/xmerge.c4
-rw-r--r--xdiff/xpatience.c50
-rw-r--r--xdiff/xprepare.c4
-rw-r--r--xdiff/xprepare.h4
-rw-r--r--xdiff/xtypes.h4
-rw-r--r--xdiff/xutils.c154
-rw-r--r--xdiff/xutils.h4
-rw-r--r--zlib.c4
1887 files changed, 319170 insertions, 115825 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..12a89f9
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,169 @@
+# This file is an example configuration for clang-format 5.0.
+#
+# Note that this style definition should only be understood as a hint
+# for writing new code. The rules are still work-in-progress and does
+# not yet exactly match the style we have in the existing code.
+
+# Use tabs whenever we need to fill whitespace that spans at least from one tab
+# stop to the next one.
+UseTab: Always
+TabWidth: 8
+IndentWidth: 8
+ContinuationIndentWidth: 8
+ColumnLimit: 80
+
+# C Language specifics
+Language: Cpp
+
+# Align parameters on the open bracket
+# someLongFunction(argument1,
+# argument2);
+AlignAfterOpenBracket: Align
+
+# Don't align consecutive assignments
+# int aaaa = 12;
+# int b = 14;
+AlignConsecutiveAssignments: false
+
+# Don't align consecutive declarations
+# int aaaa = 12;
+# double b = 3.14;
+AlignConsecutiveDeclarations: false
+
+# Align escaped newlines as far left as possible
+# #define A \
+# int aaaa; \
+# int b; \
+# int cccccccc;
+AlignEscapedNewlines: Left
+
+# Align operands of binary and ternary expressions
+# int aaa = bbbbbbbbbbb +
+# cccccc;
+AlignOperands: true
+
+# Don't align trailing comments
+# int a; // Comment a
+# int b = 2; // Comment b
+AlignTrailingComments: false
+
+# By default don't allow putting parameters onto the next line
+# myFunction(foo, bar, baz);
+AllowAllParametersOfDeclarationOnNextLine: false
+
+# Don't allow short braced statements to be on a single line
+# if (a) not if (a) return;
+# return;
+AllowShortBlocksOnASingleLine: false
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: false
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+
+# By default don't add a line break after the return type of top-level functions
+# int foo();
+AlwaysBreakAfterReturnType: None
+
+# Pack as many parameters or arguments onto the same line as possible
+# int myFunction(int aaaaaaaaaaaa, int bbbbbbbb,
+# int cccc);
+BinPackArguments: true
+BinPackParameters: true
+
+# Attach braces to surrounding context except break before braces on function
+# definitions.
+# void foo()
+# {
+# if (true) {
+# } else {
+# }
+# };
+BreakBeforeBraces: Linux
+
+# Break after operators
+# int valuve = aaaaaaaaaaaaa +
+# bbbbbb -
+# ccccccccccc;
+BreakBeforeBinaryOperators: None
+BreakBeforeTernaryOperators: false
+
+# Don't break string literals
+BreakStringLiterals: false
+
+# Use the same indentation level as for the switch statement.
+# Switch statement body is always indented one level more than case labels.
+IndentCaseLabels: false
+
+# Don't indent a function definition or declaration if it is wrapped after the
+# type
+IndentWrappedFunctionNames: false
+
+# Align pointer to the right
+# int *a;
+PointerAlignment: Right
+
+# Don't insert a space after a cast
+# x = (int32)y; not x = (int32) y;
+SpaceAfterCStyleCast: false
+
+# Insert spaces before and after assignment operators
+# int a = 5; not int a=5;
+# a += 42; a+=42;
+SpaceBeforeAssignmentOperators: true
+
+# Put a space before opening parentheses only after control statement keywords.
+# void f() {
+# if (true) {
+# f();
+# }
+# }
+SpaceBeforeParens: ControlStatements
+
+# Don't insert spaces inside empty '()'
+SpaceInEmptyParentheses: false
+
+# The number of spaces before trailing line comments (// - comments).
+# This does not affect trailing block comments (/* - comments).
+SpacesBeforeTrailingComments: 1
+
+# Don't insert spaces in casts
+# x = (int32) y; not x = ( int32 ) y;
+SpacesInCStyleCastParentheses: false
+
+# Don't insert spaces inside container literals
+# var arr = [1, 2, 3]; not var arr = [ 1, 2, 3 ];
+SpacesInContainerLiterals: false
+
+# Don't insert spaces after '(' or before ')'
+# f(arg); not f( arg );
+SpacesInParentheses: false
+
+# Don't insert spaces after '[' or before ']'
+# int a[5]; not int a[ 5 ];
+SpacesInSquareBrackets: false
+
+# Insert a space after '{' and before '}' in struct initializers
+Cpp11BracedListStyle: false
+
+# A list of macros that should be interpreted as foreach loops instead of as
+# function calls.
+ForEachMacros: ['for_each_string_list_item']
+
+# The maximum number of consecutive empty lines to keep.
+MaxEmptyLinesToKeep: 1
+
+# No empty line at the start of a block.
+KeepEmptyLinesAtTheStartOfBlocks: false
+
+# Penalties
+# This decides what order things should be done if a line is too long
+PenaltyBreakAssignment: 10
+PenaltyBreakBeforeFirstCallParameter: 30
+PenaltyBreakComment: 10
+PenaltyBreakFirstLessLess: 0
+PenaltyBreakString: 10
+PenaltyExcessCharacter: 100
+PenaltyReturnTypeOnItsOwnLine: 60
+
+# Don't sort #include's
+SortIncludes: false
diff --git a/.gitattributes b/.gitattributes
index 320e33c..49b3051 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,3 +1,15 @@
* whitespace=!indent,trail,space
*.[ch] whitespace=indent,trail,space diff=cpp
-*.sh whitespace=indent,trail,space
+*.sh whitespace=indent,trail,space eol=lf
+*.perl eol=lf diff=perl
+*.pl eof=lf diff=perl
+*.pm eol=lf diff=perl
+*.py eol=lf diff=python
+/Documentation/git-*.txt eol=lf
+/command-list.txt eol=lf
+/GIT-VERSION-GEN eol=lf
+/mergetools/* eol=lf
+/Documentation/git-merge.txt conflict-marker-size=32
+/Documentation/gitk.txt conflict-marker-size=32
+/Documentation/user-manual.txt conflict-marker-size=32
+/t/t????-*.sh conflict-marker-size=32
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..64e605a
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,19 @@
+## Contributing to Git
+
+Thanks for taking the time to contribute to Git! Please be advised that the
+Git community does not use github.com for their contributions. Instead, we use
+a mailing list (git@vger.kernel.org) for code submissions, code
+reviews, and bug reports.
+
+Nevertheless, you can use [submitGit](http://submitgit.herokuapp.com/) to
+conveniently send your Pull Requests commits to our mailing list.
+
+Please read ["A note from the maintainer"](https://git.kernel.org/pub/scm/git/git.git/plain/MaintNotes?h=todo)
+to learn how the Git project is managed, and how you can work with it.
+In addition, we highly recommend you to read [our submission guidelines](../Documentation/SubmittingPatches).
+
+If you prefer video, then [this talk](https://www.youtube.com/watch?v=Q7i_qQW__q4&feature=youtu.be&t=6m4s)
+might be useful to you as the presenter walks you through the contribution
+process by example.
+
+Your friendly Git community!
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..adba13e
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,7 @@
+Thanks for taking the time to contribute to Git! Please be advised that the
+Git community does not use github.com for their contributions. Instead, we use
+a mailing list (git@vger.kernel.org) for code submissions, code reviews, and
+bug reports. Nevertheless, you can use submitGit to conveniently send your Pull
+Requests commits to our mailing list.
+
+Please read the "guidelines for contributing" linked above!
diff --git a/.gitignore b/.gitignore
index 05cb58a..9d1363a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
/GIT-LDFLAGS
/GIT-PREFIX
/GIT-PERL-DEFINES
+/GIT-PERL-HEADER
/GIT-PYTHON-VARS
/GIT-SCRIPT-DEFINES
/GIT-USER-AGENT
@@ -34,6 +35,7 @@
/git-clone
/git-column
/git-commit
+/git-commit-graph
/git-commit-tree
/git-config
/git-count-objects
@@ -97,8 +99,9 @@
/git-mergetool--lib
/git-mktag
/git-mktree
-/git-name-rev
+/git-multi-pack-index
/git-mv
+/git-name-rev
/git-notes
/git-p4
/git-pack-redundant
@@ -111,14 +114,16 @@
/git-pull
/git-push
/git-quiltimport
+/git-range-diff
/git-read-tree
/git-rebase
/git-rebase--am
+/git-rebase--helper
/git-rebase--interactive
/git-rebase--merge
+/git-rebase--preserve-merges
/git-receive-pack
/git-reflog
-/git-relink
/git-remote
/git-remote-http
/git-remote-https
@@ -140,6 +145,7 @@
/git-rm
/git-send-email
/git-send-pack
+/git-serve
/git-sh-i18n
/git-sh-i18n--envsubst
/git-sh-setup
@@ -179,7 +185,7 @@
/gitweb/gitweb.cgi
/gitweb/static/gitweb.js
/gitweb/static/gitweb.min.*
-/common-cmds.h
+/command-list.h
*.tar.gz
*.dsc
*.deb
@@ -203,7 +209,7 @@
/config.mak.autogen
/config.mak.append
/configure
-/unicode
+/.vscode/
/tags
/TAGS
/cscope*
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..cbeebda
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "sha1collisiondetection"]
+ path = sha1collisiondetection
+ url = https://github.com/cr-marcstevens/sha1collisiondetection.git
+ branch = master
diff --git a/.mailmap b/.mailmap
index a714e69..bef3352 100644
--- a/.mailmap
+++ b/.mailmap
@@ -25,20 +25,23 @@ Ben Walton <bdwalton@gmail.com> <bwalton@artsci.utoronto.ca>
Benoit Sigoure <tsunanet@gmail.com> <tsuna@lrde.epita.fr>
Bernt Hansen <bernt@norang.ca> <bernt@alumni.uwaterloo.ca>
Brandon Casey <drafnel@gmail.com> <casey@nrlssc.navy.mil>
-brian m. carlson <sandals@crustytoothpaste.ath.cx> Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
-brian m. carlson <sandals@crustytoothpaste.ath.cx> <sandals@crustytoothpaste.net>
+brian m. carlson <sandals@crustytoothpaste.net>
+brian m. carlson <sandals@crustytoothpaste.net> <sandals@crustytoothpaste.ath.cx>
Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
Bryan Larsen <bryan@larsen.st> <bryanlarsen@yahoo.com>
Cheng Renquan <crquan@gmail.com>
Chris Shoemaker <c.shoemaker@cox.net>
Chris Wright <chrisw@sous-sol.org> <chrisw@osdl.org>
Cord Seele <cowose@gmail.com> <cowose@googlemail.com>
+Christian Couder <chriscool@tuxfamily.org> <christian.couder@gmail.com>
Christian Stimming <stimming@tuhh.de> <chs@ckiste.goetheallee>
+Christopher Díaz Riveros <chrisadr@gentoo.org> Christopher Diaz Riveros
Csaba Henk <csaba@gluster.com> <csaba@lowlife.hu>
Dan Johnson <computerdruid@gmail.com>
Dana L. How <danahow@gmail.com> <how@deathvalley.cswitch.com>
Dana L. How <danahow@gmail.com> Dana How
Daniel Barkalow <barkalow@iabervon.org>
+Daniel Knittl-Frank <knittl89@googlemail.com> knittl
Daniel Trstenjak <daniel.trstenjak@gmail.com> <daniel.trstenjak@online.de>
Daniel Trstenjak <daniel.trstenjak@gmail.com> <trsten@science-computing.de>
David Brown <git@davidb.org> <davidb@quicinc.com>
@@ -47,6 +50,7 @@ David Kågedal <davidk@lysator.liu.se>
David Reiss <dreiss@facebook.com> <dreiss@dreiss-vmware.(none)>
David S. Miller <davem@davemloft.net>
David Turner <novalis@novalis.org> <dturner@twopensource.com>
+David Turner <novalis@novalis.org> <dturner@twosigma.com>
Deskin Miller <deskinm@umich.edu>
Dirk Süsserott <newsletter@dirk.my1.cc>
Eric Blake <eblake@redhat.com> <ebb9@byu.net>
@@ -55,6 +59,7 @@ Eric S. Raymond <esr@thyrsus.com>
Eric Wong <e@80x24.org> <normalperson@yhbt.net>
Erik Faye-Lund <kusmabite@gmail.com> <kusmabite@googlemail.com>
Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com> <eyvind-git@orakel.ntnu.no>
+Fangyi Zhou <fangyi.zhou@yuriko.moe> Zhou Fangyi
Florian Achleitner <florian.achleitner.2.6.31@gmail.com> <florian.achleitner2.6.31@gmail.com>
Franck Bui-Huu <vagabon.xyz@gmail.com> <fbuihuu@gmail.com>
Frank Lichtenheld <frank@lichtenheld.de> <djpig@debian.org>
@@ -84,6 +89,8 @@ Jason McMullan <mcmullan@netapp.com>
Jason Riedy <ejr@eecs.berkeley.edu> <ejr@EECS.Berkeley.EDU>
Jason Riedy <ejr@eecs.berkeley.edu> <ejr@cs.berkeley.edu>
Jay Soffian <jaysoffian@gmail.com> <jaysoffian+git@gmail.com>
+Jean-Noël Avila <jn.avila@free.fr> Jean-Noel Avila
+Jean-Noël Avila <jn.avila@free.fr> Jean-Noël AVILA
Jeff King <peff@peff.net> <peff@github.com>
Jeff Muizelaar <jmuizelaar@mozilla.com> <jeff@infidigm.net>
Jens Axboe <axboe@kernel.dk> <axboe@suse.de>
@@ -111,6 +118,7 @@ Junio C Hamano <gitster@pobox.com> <junio@pobox.com>
Junio C Hamano <gitster@pobox.com> <junio@twinsun.com>
Junio C Hamano <gitster@pobox.com> <junkio@cox.net>
Junio C Hamano <gitster@pobox.com> <junkio@twinsun.com>
+Kaartic Sivaraam <kaartic.sivaraam@gmail.com> <kaarticsivaraam91196@gmail.com>
Karl Wiberg <kha@treskal.com> Karl Hasselström
Karl Wiberg <kha@treskal.com> <kha@yoghurt.hemma.treskal.com>
Karsten Blees <blees@dcon.de> <karsten.blees@dcon.de>
@@ -146,10 +154,12 @@ Matt Draisey <matt@draisey.ca> <mattdraisey@sympatico.ca>
Matt Kraai <kraai@ftbfs.org> <matt.kraai@amo.abbott.com>
Matt McCutchen <matt@mattmccutchen.net> <hashproduct@gmail.com>
Matthias Kestenholz <matthias@spinlock.ch> <mk@spinlock.ch>
+Matthias Rüster <matthias.ruester@gmail.com> Matthias Ruester
Matthias Urlichs <matthias@urlichs.de> <smurf@kiste.(none)>
Matthias Urlichs <matthias@urlichs.de> <smurf@smurf.noris.de>
Michael Coleman <tutufan@gmail.com>
-Michael J Gruber <git@drmicha.warpmail.net> <michaeljgruber+gmane@fastmail.fm>
+Michael J Gruber <git@grubix.eu> <michaeljgruber+gmane@fastmail.fm>
+Michael J Gruber <git@grubix.eu> <git@drmicha.warpmail.net>
Michael S. Tsirkin <mst@kernel.org> <mst@redhat.com>
Michael S. Tsirkin <mst@kernel.org> <mst@mellanox.co.il>
Michael S. Tsirkin <mst@kernel.org> <mst@dev.mellanox.co.il>
@@ -175,6 +185,7 @@ Paolo Bonzini <bonzini@gnu.org> <paolo.bonzini@lu.unisi.ch>
Pascal Obry <pascal@obry.net> <pascal.obry@gmail.com>
Pascal Obry <pascal@obry.net> <pascal.obry@wanadoo.fr>
Pat Notz <patnotz@gmail.com> <pknotz@sandia.gov>
+Patrick Steinhardt <ps@pks.im> <patrick.steinhardt@elego.de>
Paul Mackerras <paulus@samba.org> <paulus@dorrigo.(none)>
Paul Mackerras <paulus@samba.org> <paulus@pogo.(none)>
Peter Baumann <waste.manager@gmx.de> <Peter.B.Baumann@stud.informatik.uni-erlangen.de>
@@ -190,6 +201,9 @@ Philippe Bruhat <book@cpan.org>
Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
Ramsay Jones <ramsay@ramsayjones.plus.com> <ramsay@ramsay1.demon.co.uk>
René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
+René Scharfe <l.s.r@web.de> Rene Scharfe
+Richard Hansen <rhansen@rhansen.org> <hansenr@google.com>
+Richard Hansen <rhansen@rhansen.org> <rhansen@bbn.com>
Robert Fitzsimons <robfitz@273k.net>
Robert Shearman <robertshearman@gmail.com> <rob@codeweavers.com>
Robert Zeh <robert.a.zeh@gmail.com>
@@ -205,6 +219,8 @@ Sean Estabrooks <seanlkml@sympatico.ca>
Sebastian Schuberth <sschuberth@gmail.com> <sschuberth@visageimaging.com>
Seth Falcon <seth@userprimary.net> <sfalcon@fhcrc.org>
Shawn O. Pearce <spearce@spearce.org>
+Wei Shuyu <wsy@dogben.com> Shuyu Wei
+Sidhant Sharma <tigerkid001@gmail.com> Sidhant Sharma [:tk]
Simon Hausmann <hausmann@kde.org> <simon@lst.de>
Simon Hausmann <hausmann@kde.org> <shausman@trolltech.com>
Stefan Beller <stefanbeller@gmail.com> <stefanbeller@googlemail.com>
@@ -221,6 +237,7 @@ Steven Walter <stevenrwalter@gmail.com> <swalter@lexmark.com>
Steven Walter <stevenrwalter@gmail.com> <swalter@lpdev.prtdev.lexmark.com>
Sven Verdoolaege <skimo@kotnet.org> <Sven.Verdoolaege@cs.kuleuven.ac.be>
Sven Verdoolaege <skimo@kotnet.org> <skimo@liacs.nl>
+SZEDER Gábor <szeder.dev@gmail.com> <szeder@ira.uka.de>
Tay Ray Chuan <rctay89@gmail.com>
Ted Percival <ted@midg3t.net> <ted.percival@quest.com>
Theodore Ts'o <tytso@mit.edu>
@@ -244,7 +261,8 @@ Uwe Kleine-König <u.kleine-koenig@pengutronix.de> <ukleinek@informatik.uni-frei
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> <uzeisberger@io.fsforth.de>
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> <zeisberg@informatik.uni-freiburg.de>
Ville Skyttä <ville.skytta@iki.fi> <scop@xemacs.org>
-Vitaly "_Vi" Shukela <public_vi@tut.by>
+Vitaly "_Vi" Shukela <vi0oss@gmail.com> <public_vi@tut.by>
+Vitaly "_Vi" Shukela <vi0oss@gmail.com> Vitaly _Vi Shukela
W. Trevor King <wking@tremily.us> <wking@drexel.edu>
William Pursell <bill.pursell@gmail.com>
YONETANI Tomokazu <y0n3t4n1@gmail.com> <qhwt+git@les.ath.cx>
diff --git a/.travis.yml b/.travis.yml
index c2b76f9..4d4e26c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,105 +16,64 @@ compiler:
addons:
apt:
+ sources:
+ - ubuntu-toolchain-r-test
packages:
- language-pack-is
- git-svn
-
-env:
- global:
- - DEVELOPER=1
- # The Linux build installs the defined dependency versions below.
- # The OS X build installs the latest available versions. Keep that
- # in mind when you encounter a broken OS X build!
- - LINUX_P4_VERSION="16.1"
- - LINUX_GIT_LFS_VERSION="1.2.0"
- - DEFAULT_TEST_TARGET=prove
- - GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
- - GIT_TEST_OPTS="--verbose --tee"
- - GIT_TEST_CLONE_2GB=YesPlease
- # t9810 occasionally fails on Travis CI OS X
- # t9816 occasionally fails with "TAP out of sequence errors" on Travis CI OS X
- - GIT_SKIP_TESTS="t9810 t9816"
+ - apache2
+ - gcc-8
matrix:
include:
- - env: Documentation
+ - env: jobname=GETTEXT_POISON
+ os: linux
+ compiler:
+ addons:
+ before_install:
+ - env: jobname=Windows
+ os: linux
+ compiler:
+ addons:
+ before_install:
+ script:
+ - >
+ test "$TRAVIS_REPO_SLUG" != "git/git" ||
+ ci/run-windows-build.sh $TRAVIS_BRANCH $(git rev-parse HEAD)
+ after_failure:
+ - env: jobname=Linux32
+ os: linux
+ compiler:
+ addons:
+ services:
+ - docker
+ before_install:
+ script: ci/run-linux32-docker.sh
+ - env: jobname=StaticAnalysis
+ os: linux
+ compiler:
+ addons:
+ apt:
+ packages:
+ - coccinelle
+ before_install:
+ script: ci/run-static-analysis.sh
+ after_failure:
+ - env: jobname=Documentation
os: linux
- compiler: clang
+ compiler:
addons:
apt:
packages:
- asciidoc
- xmlto
before_install:
- before_script:
script: ci/test-documentation.sh
after_failure:
-before_install:
- - >
- case "${TRAVIS_OS_NAME:-linux}" in
- linux)
- mkdir --parents custom/p4
- pushd custom/p4
- wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4d
- wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4
- chmod u+x p4d
- chmod u+x p4
- export PATH="$(pwd):$PATH"
- popd
- mkdir --parents custom/git-lfs
- pushd custom/git-lfs
- wget --quiet https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz
- tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
- cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
- export PATH="$(pwd):$PATH"
- popd
- ;;
- osx)
- brew_force_set_latest_binary_hash () {
- FORMULA=$1
- SHA=$(brew fetch --force $FORMULA 2>&1 | grep ^SHA256: | cut -d ' ' -f 2)
- sed -E -i.bak "s/sha256 \"[0-9a-f]{64}\"/sha256 \"$SHA\"/g" \
- /usr/local/Library/Taps/homebrew/homebrew-binary/$FORMULA.rb
- }
- brew update --quiet
- brew tap homebrew/binary --quiet
- brew_force_set_latest_binary_hash perforce
- brew_force_set_latest_binary_hash perforce-server
- # Uncomment this if you want to run perf tests:
- # brew install gnu-time
- brew install git-lfs perforce-server perforce gettext
- brew link --force gettext
- ;;
- esac;
- echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)";
- p4d -V | grep Rev.;
- echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)";
- p4 -V | grep Rev.;
- echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)";
- git-lfs version;
- mkdir -p $HOME/travis-cache;
- ln -s $HOME/travis-cache/.prove t/.prove;
-
-before_script: make --jobs=2
-
-script: make --quiet test
-
-after_failure:
- - >
- : '<-- Click here to see detailed test output! ';
- for TEST_EXIT in t/test-results/*.exit;
- do
- if [ "$(cat "$TEST_EXIT")" != "0" ];
- then
- TEST_OUT="${TEST_EXIT%exit}out";
- echo "------------------------------------------------------------------------";
- echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)";
- echo "------------------------------------------------------------------------";
- cat "${TEST_OUT}";
- fi;
- done;
+before_install: ci/install-dependencies.sh
+script: ci/run-build-and-tests.sh
+after_failure: ci/print-test-failures.sh
notifications:
email: false
diff --git a/.tsan-suppressions b/.tsan-suppressions
new file mode 100644
index 0000000..8c85014
--- /dev/null
+++ b/.tsan-suppressions
@@ -0,0 +1,10 @@
+# Suppressions for ThreadSanitizer (tsan).
+#
+# This file is used by setting the environment variable TSAN_OPTIONS to, e.g.,
+# "suppressions=$(pwd)/.tsan-suppressions". Observe that relative paths such as
+# ".tsan-suppressions" might not work.
+
+# A static variable is written to racily, but we always write the same value, so
+# in practice it (hopefully!) doesn't matter.
+race:^want_color$
+race:^transfer_debug$
diff --git a/Documentation/.gitignore b/Documentation/.gitignore
index 2c8b2d6..3ef54e0 100644
--- a/Documentation/.gitignore
+++ b/Documentation/.gitignore
@@ -11,3 +11,5 @@ doc.dep
cmds-*.txt
mergetools-*.txt
manpage-base-url.xsl
+SubmittingPatches.txt
+tmp-doc-diff/
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 4cd95da..72967de 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -24,7 +24,7 @@ code. For Git in general, a few rough rules are:
"Once it _is_ in the tree, it's not really worth the patch noise to
go and fix it up."
- Cf. http://article.gmane.org/gmane.linux.kernel/943020
+ Cf. http://lkml.iu.edu/hypermail/linux/kernel/1001.3/01069.html
Make your code readable and sensible, and don't try to be clever.
@@ -118,6 +118,24 @@ For shell scripts specifically (not exhaustive):
do this
fi
+ - If a command sequence joined with && or || or | spans multiple
+ lines, put each command on a separate line and put && and || and |
+ operators at the end of each line, rather than the start. This
+ means you don't need to use \ to join lines, since the above
+ operators imply the sequence isn't finished.
+
+ (incorrect)
+ grep blob verify_pack_result \
+ | awk -f print_1.awk \
+ | sort >actual &&
+ ...
+
+ (correct)
+ grep blob verify_pack_result |
+ awk -f print_1.awk |
+ sort >actual &&
+ ...
+
- We prefer "test" over "[ ... ]".
- We do not write the noiseword "function" in front of shell
@@ -206,11 +224,38 @@ For C programs:
x = 1;
}
- is frowned upon. A gray area is when the statement extends
- over a few lines, and/or you have a lengthy comment atop of
- it. Also, like in the Linux kernel, if there is a long list
- of "else if" statements, it can make sense to add braces to
- single line blocks.
+ is frowned upon. But there are a few exceptions:
+
+ - When the statement extends over a few lines (e.g., a while loop
+ with an embedded conditional, or a comment). E.g.:
+
+ while (foo) {
+ if (x)
+ one();
+ else
+ two();
+ }
+
+ if (foo) {
+ /*
+ * This one requires some explanation,
+ * so we're better off with braces to make
+ * it obvious that the indentation is correct.
+ */
+ doit();
+ }
+
+ - When there are multiple arms to a conditional and some of them
+ require braces, enclose even a single line block in braces for
+ consistency. E.g.:
+
+ if (foo) {
+ doit();
+ } else {
+ one();
+ two();
+ three();
+ }
- We try to avoid assignments in the condition of an "if" statement.
@@ -229,12 +274,12 @@ For C programs:
Note however that a comment that explains a translatable string to
translators uses a convention of starting with a magic token
- "TRANSLATORS: " immediately after the opening delimiter, even when
- it spans multiple lines. We do not add an asterisk at the beginning
- of each line, either. E.g.
+ "TRANSLATORS: ", e.g.
- /* TRANSLATORS: here is a comment that explains the string
- to be translated, that follows immediately after it */
+ /*
+ * TRANSLATORS: here is a comment that explains the string to
+ * be translated, that follows immediately after it.
+ */
_("Here is a translatable string explained by the above.");
- Double negation is often harder to understand than no negation
@@ -359,6 +404,11 @@ For C programs:
- Use Git's gettext wrappers to make the user interface
translatable. See "Marking strings for translation" in po/README.
+ - Variables and functions local to a given source file should be marked
+ with "static". Variables that are visible to other source files
+ must be declared with "extern" in header files. However, function
+ declarations should not use "extern", as that is already the default.
+
For Perl programs:
- Most of the C guidelines above apply.
diff --git a/Documentation/Makefile b/Documentation/Makefile
index b43d66e..95f6a32 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -31,6 +31,7 @@ MAN7_TXT += giteveryday.txt
MAN7_TXT += gitglossary.txt
MAN7_TXT += gitnamespaces.txt
MAN7_TXT += gitrevisions.txt
+MAN7_TXT += gitsubmodules.txt
MAN7_TXT += gittutorial-2.txt
MAN7_TXT += gittutorial.txt
MAN7_TXT += gitworkflows.txt
@@ -38,6 +39,7 @@ MAN7_TXT += gitworkflows.txt
MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
MAN_XML = $(patsubst %.txt,%.xml,$(MAN_TXT))
MAN_HTML = $(patsubst %.txt,%.html,$(MAN_TXT))
+GIT_MAN_REF = master
OBSOLETE_HTML += everyday.html
OBSOLETE_HTML += git-remote-helpers.html
@@ -66,13 +68,18 @@ SP_ARTICLES += howto/maintain-git
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
SP_ARTICLES += $(API_DOCS)
+TECH_DOCS += SubmittingPatches
+TECH_DOCS += technical/hash-function-transition
TECH_DOCS += technical/http-protocol
TECH_DOCS += technical/index-format
+TECH_DOCS += technical/long-running-process-protocol
TECH_DOCS += technical/pack-format
TECH_DOCS += technical/pack-heuristics
TECH_DOCS += technical/pack-protocol
+TECH_DOCS += technical/partial-clone
TECH_DOCS += technical/protocol-capabilities
TECH_DOCS += technical/protocol-common
+TECH_DOCS += technical/protocol-v2
TECH_DOCS += technical/racy-git
TECH_DOCS += technical/send-pack-pipeline
TECH_DOCS += technical/shallow
@@ -120,6 +127,7 @@ INSTALL_INFO = install-info
DOCBOOK2X_TEXI = docbook2x-texi
DBLATEX = dblatex
ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex
+DBLATEX_COMMON = -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty
ifndef PERL_PATH
PERL_PATH = /usr/bin/perl
endif
@@ -173,6 +181,17 @@ ifdef GNU_ROFF
XMLTO_EXTRA += -m manpage-quote-apos.xsl
endif
+ifdef USE_ASCIIDOCTOR
+ASCIIDOC = asciidoctor
+ASCIIDOC_CONF =
+ASCIIDOC_HTML = xhtml5
+ASCIIDOC_DOCBOOK = docbook45
+ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
+ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
+ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
+DBLATEX_COMMON =
+endif
+
SHELL_PATH ?= $(SHELL)
# Shell quote;
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
@@ -310,6 +329,7 @@ clean:
$(RM) *.pdf
$(RM) howto-index.txt howto/*.html doc.dep
$(RM) technical/*.html technical/api-index.txt
+ $(RM) SubmittingPatches.txt
$(RM) $(cmds_txt) $(mergetools_txt) *.made
$(RM) manpage-base-url.xsl
@@ -324,7 +344,7 @@ $(OBSOLETE_HTML): %.html : %.txto asciidoc.conf
mv $@+ $@
manpage-base-url.xsl: manpage-base-url.xsl.in
- sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
+ $(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
%.1 %.5 %.7 : %.xml manpage-base-url.xsl
$(QUIET_XMLTO)$(RM) $@ && \
@@ -337,7 +357,7 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
user-manual.xml: user-manual.txt user-manual.conf
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
- $(TXT_TO_XML) -d article -o $@+ $< && \
+ $(TXT_TO_XML) -d book -o $@+ $< && \
mv $@+ $@
technical/api-index.txt: technical/api-index-skel.txt \
@@ -348,6 +368,9 @@ technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt asciidoc.conf
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
+SubmittingPatches.txt: SubmittingPatches
+ $(QUIET_GEN) cp $< $@
+
XSLT = docbook.xsl
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
@@ -368,13 +391,14 @@ user-manual.texi: user-manual.xml
user-manual.pdf: user-manual.xml
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
- $(DBLATEX) -o $@+ -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty $< && \
+ $(DBLATEX) -o $@+ $(DBLATEX_COMMON) $< && \
mv $@+ $@
-gitman.texi: $(MAN_XML) cat-texi.perl
+gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
- ($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \
- --to-stdout $(xml) &&) true) > $@++ && \
+ ($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \
+ $(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
+ rm $(xml)+ &&) true) > $@++ && \
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
rm $@++ && \
mv $@+ $@
@@ -417,14 +441,14 @@ require-manrepo::
then echo "git-manpages repository must exist at $(MAN_REPO)"; exit 1; fi
quick-install-man: require-manrepo
- '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir)
+ '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir) $(GIT_MAN_REF)
require-htmlrepo::
@if test ! -d $(HTML_REPO); \
then echo "git-htmldocs repository must exist at $(HTML_REPO)"; exit 1; fi
quick-install-html: require-htmlrepo
- '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir)
+ '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir) $(GIT_MAN_REF)
print-man1:
@for i in $(MAN1_TXT); do echo $$i; done
diff --git a/Documentation/RelNotes/1.7.10.1.txt b/Documentation/RelNotes/1.7.10.1.txt
index be68524..71a86cb 100644
--- a/Documentation/RelNotes/1.7.10.1.txt
+++ b/Documentation/RelNotes/1.7.10.1.txt
@@ -69,7 +69,7 @@ Fixes since v1.7.10
* The 'push to upstream' implementation was broken in some corner
cases. "git push $there" without refspec, when the current branch
is set to push to a remote different from $there, used to push to
- $there using the upstream information to a remote unreleated to
+ $there using the upstream information to a remote unrelated to
$there.
* Giving "--continue" to a conflicted "rebase -i" session skipped a
diff --git a/Documentation/RelNotes/1.7.11.7.txt b/Documentation/RelNotes/1.7.11.7.txt
index e7e79d9..e743a2a 100644
--- a/Documentation/RelNotes/1.7.11.7.txt
+++ b/Documentation/RelNotes/1.7.11.7.txt
@@ -25,7 +25,7 @@ Fixes since v1.7.11.6
references" nor "Reload" did not update what is shown as the
contents of it, when the user overwrote the tag with "git tag -f".
- * "git for-each-ref" did not currectly support more than one --sort
+ * "git for-each-ref" did not correctly support more than one --sort
option.
* "git log .." errored out saying it is both rev range and a path
diff --git a/Documentation/RelNotes/2.10.0.txt b/Documentation/RelNotes/2.10.0.txt
index fe921dd..f4da28a 100644
--- a/Documentation/RelNotes/2.10.0.txt
+++ b/Documentation/RelNotes/2.10.0.txt
@@ -34,7 +34,7 @@ UI, Workflows & Features
* "upload-pack" allows a custom "git pack-objects" replacement when
responding to "fetch/clone" via the uploadpack.packObjectsHook.
- (merge 20b20a2 jk/upload-pack-hook later to maint).
+ (merge b738396 jk/upload-pack-hook later to maint).
* Teach format-patch and mailsplit (hence "am") how a line that
happens to begin with "From " in the e-mail message is quoted with
@@ -71,19 +71,63 @@ UI, Workflows & Features
command line option "--no-show-signature" to countermand it.
(merge fce04c3 mj/log-show-signature-conf later to maint).
- * A couple of "git svn" updates.
-
* More markings of messages for i18n, with updates to various tests
to pass GETTEXT_POISON tests.
* "git archive" learned to handle files that are larger than 8GB and
commits far in the future than expressible by the traditional US-TAR
format.
- (merge 5caeeb8 jk/big-and-future-archive-tar later to maint).
+ (merge 560b0e8 jk/big-and-future-archive-tar later to maint).
+
* A new configuration variable core.sshCommand has been added to
specify what value for GIT_SSH_COMMAND to use per repository.
+ * "git worktree prune" protected worktrees that are marked as
+ "locked" by creating a file in a known location. "git worktree"
+ command learned a dedicated command pair to create and remove such
+ a file, so that the users do not have to do this with editor.
+
+ * A handful of "git svn" updates.
+
+ * "git push" learned to accept and pass extra options to the
+ receiving end so that hooks can read and react to them.
+
+ * "git status" learned to suggest "merge --abort" during a conflicted
+ merge, just like it already suggests "rebase --abort" during a
+ conflicted rebase.
+
+ * "git jump" script (in contrib/) has been updated a bit.
+ (merge a91e692 jk/git-jump later to maint).
+
+ * "git push" and "git clone" learned to give better progress meters
+ to the end user who is waiting on the terminal.
+
+ * An entry "git log --decorate" for the tip of the current branch is
+ shown as "HEAD -> name" (where "name" is the name of the branch);
+ the arrow is now painted in the same color as "HEAD", not in the
+ color for commits.
+
+ * "git format-patch" learned format.from configuration variable to
+ specify the default settings for its "--from" option.
+
+ * "git am -3" calls "git merge-recursive" when it needs to fall back
+ to a three-way merge; this call has been turned into an internal
+ subroutine call instead of spawning a separate subprocess.
+
+ * The command line completion scripts (in contrib/) now knows about
+ "git branch --delete/--move [--remote]".
+ (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
+
+ * "git rev-parse --git-path hooks/<hook>" learned to take
+ core.hooksPath configuration variable (introduced during 2.9 cycle)
+ into account.
+ (merge 9445b49 ab/hooks later to maint).
+
+ * "git log --show-signature" and other commands that display the
+ verification status of PGP signature now shows the longer key-id,
+ as 32-bit key-id is so last century.
+
Performance, Internal Implementation, Development Support etc.
@@ -99,19 +143,19 @@ Performance, Internal Implementation, Development Support etc.
* "git upload-pack" command has been updated to use the parse-options
API.
- * The "git apply" standalone program is being libified; this is the
- first step to move many state variables into a structure that can
- be explicitly (re)initialized to make the machinery callable more
- than once.
+ * The "git apply" standalone program is being libified; the first
+ step to move many state variables into a structure that can be
+ explicitly (re)initialized to make the machinery callable more
+ than once has been merged.
* HTTP transport gained an option to produce more detailed debugging
trace.
(merge 73e57aa ep/http-curl-trace later to maint).
- * Instead of taking advantage of a struct string_list that is
- allocated with all NULs happens to be STRING_LIST_INIT_NODUP kind,
- initialize them explicitly as such, to document their behaviour
- better.
+ * Instead of taking advantage of the fact that a struct string_list
+ that is allocated with all NULs happens to be the INIT_NODUP kind,
+ the users of string_list structures are taught to initialize them
+ explicitly as such, to document their behaviour better.
(merge 2721ce2 jk/string-list-static-init later to maint).
* HTTPd tests learned to show the server error log to help diagnosing
@@ -136,7 +180,7 @@ Performance, Internal Implementation, Development Support etc.
the standard output and the standard error of an external process,
which is cumbersome to hand-roll correctly without deadlocking.
- The codepath to sign data in a prepared buffer with GPG has been
+ * The codepath to sign data in a prepared buffer with GPG has been
updated to use this API to read from the status-fd to check for
errors (instead of relying on GPG's exit status).
(merge efee955 jk/gpg-interface-cleanup later to maint).
@@ -156,11 +200,9 @@ Performance, Internal Implementation, Development Support etc.
* Improve the look of the way "git fetch" reports what happened to
each ref that was fetched.
- (merge bc437d1 nd/fetch-ref-summary later to maint).
* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.
- (merge e82675a rs/help-c-source-with-gitattributes later to maint).
* Code clean-up to avoid using a variable string that compilers may
feel untrustable as printf-style format given to write_file()
@@ -169,6 +211,111 @@ Performance, Internal Implementation, Development Support etc.
* "git p4" used a location outside $GIT_DIR/refs/ to place its
temporary branches, which has been moved to refs/git-p4-tmp/.
+ * Existing autoconf generated test for the need to link with pthread
+ library did not check all the functions from pthread libraries;
+ recent FreeBSD has some functions in libc but not others, and we
+ mistakenly thought linking with libc is enough when it is not.
+
+ * When "git fsck" reports a broken link (e.g. a tree object contains
+ a blob that does not exist), both containing object and the object
+ that is referred to were reported with their 40-hex object names.
+ The command learned the "--name-objects" option to show the path to
+ the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
+
+ * Allow http daemon tests in Travis CI tests.
+
+ * Makefile assumed that -lrt is always available on platforms that
+ want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
+ case for recent Mac OS X. The necessary symbols are often found in
+ libc on many modern systems and having -lrt on the command line, as
+ long as the library exists, had no effect, but when the platform
+ removes librt.a that is a different matter--having -lrt will break
+ the linkage.
+
+ This change could be seen as a regression for those who do need to
+ specify -lrt, as they now specifically ask for NEEDS_LIBRT when
+ building. Hopefully they are in the minority these days.
+
+ * Further preparatory work on the refs API before the pluggable
+ backend series can land.
+
+ * Error handling in the codepaths that updates refs has been
+ improved.
+
+ * The API to iterate over all the refs (i.e. for_each_ref(), etc.)
+ has been revamped.
+
+ * The handling of the "text=auto" attribute has been corrected.
+ $ echo "* text=auto eol=crlf" >.gitattributes
+ used to have the same effect as
+ $ echo "* text eol=crlf" >.gitattributes
+ i.e. declaring all files are text (ignoring "auto"). The
+ combination has been fixed to be equivalent to doing
+ $ git config core.autocrlf true
+
+ * Documentation has been updated to show better example usage
+ of the updated "text=auto" attribute.
+
+ * A few tests that specifically target "git rebase -i" have been
+ added.
+
+ * Dumb http transport on the client side has been optimized.
+ (merge ecba195 ew/http-walker later to maint).
+
+ * Users of the parse_options_concat() API function need to allocate
+ extra slots in advance and fill them with OPT_END() when they want
+ to decide the set of supported options dynamically, which makes the
+ code error-prone and hard to read. This has been corrected by tweaking
+ the API to allocate and return a new copy of "struct option" array.
+
+ * "git fetch" exchanges batched have/ack messages between the sender
+ and the receiver, initially doubling every time and then falling
+ back to enlarge the window size linearly. The "smart http"
+ transport, being an half-duplex protocol, outgrows the preset limit
+ too quickly and becomes inefficient when interacting with a large
+ repository. The internal mechanism learned to grow the window size
+ more aggressively when working with the "smart http" transport.
+
+ * Tests for "git svn" have been taught to reuse the lib-httpd test
+ infrastructure when testing the subversion integration that
+ interacts with subversion repositories served over the http://
+ protocol.
+ (merge a8a5d25 ew/git-svn-http-tests later to maint).
+
+ * "git pack-objects" has a few options that tell it not to pack
+ objects found in certain packfiles, which require it to scan .idx
+ files of all available packs. The codepaths involved in these
+ operations have been optimized for a common case of not having any
+ non-local pack and/or any .kept pack.
+
+ * The t3700 test about "add --chmod=-x" have been made a bit more
+ robust and generally cleaned up.
+ (merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint).
+
+ * The build procedure learned PAGER_ENV knob that lists what default
+ environment variable settings to export for popular pagers. This
+ mechanism is used to tweak the default settings to MORE on FreeBSD.
+ (merge 995bc22 ew/build-time-pager-tweaks later to maint).
+
+ * The http-backend (the server-side component of smart-http
+ transport) used to trickle the HTTP header one at a time. Now
+ these write(2)s are batched.
+ (merge b36045c ew/http-backend-batch-headers later to maint).
+
+ * When "git rebase" tries to compare set of changes on the updated
+ upstream and our own branch, it computes patch-id for all of these
+ changes and attempts to find matches. This has been optimized by
+ lazily computing the full patch-id (which is expensive) to be
+ compared only for changes that touch the same set of paths.
+ (merge ba67504 kw/patch-ids-optim later to maint).
+
+ * A handful of tests that were broken under gettext-poison build have
+ been fixed.
+
+ * The recent i18n patch we added during this cycle did a bit too much
+ refactoring of the messages to avoid word-legos; the repetition has
+ been reduced to help translators.
+
Also contains various documentation updates and code clean-ups.
@@ -249,7 +396,6 @@ notes for details).
bogus offset value to the caller. Use a more benign looking
+0000 instead and let "git log" going in such a case, instead
of aborting.
- (merge bab7483 jk/tzoffset-fix later to maint).
* One among four invocations of readlink(1) in our test suite has
been rewritten so that the test can run on systems without the
@@ -272,58 +418,46 @@ notes for details).
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.
- (merge 054a5ae js/find-commit-subject-ignore-leading-blanks later to maint).
* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.
- (merge 3d0a833 js/color-on-windows-comment later to maint).
* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.
- (merge 5f4e3bf ew/gc-auto-pack-limit-fix later to maint).
* Add a test to specify the desired behaviour that currently is not
available in "git rebase -Xsubtree=...".
- (merge 5f35900 dg/subtree-rebase-test later to maint).
* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.
- (merge 661c3e9 mm/doc-tt later to maint).
* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.
- (merge 3324dd8 js/sign-empty-commit-fix later to maint).
* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.
- (merge 33ba9c6 ps/rebase-i-auto-unstash-upon-abort later to maint).
* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.
- (merge b8e47d1 nd/ita-cleanup later to maint).
* "git blame -M" missed a single line that was moved within the file.
- (merge 17a07e2 dk/blame-move-no-reason-for-1-line-context later to maint).
* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.
- (merge d751dd1 sb/submodule-parallel-fetch later to maint).
* "git grep -i" has been taught to fold case in non-ascii locales
correctly.
- (merge 695f95b nd/icase later to maint).
* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.
- (merge c578a09 ak/lazy-prereq-mktemp later to maint).
* There are certain house-keeping tasks that need to be performed at
the very beginning of any Git program, and programs that are not
@@ -336,7 +470,6 @@ notes for details).
* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.
- (merge 03c39b3 jk/test-match-signal later to maint).
* General code clean-up around a helper function to write a
single-liner to a file.
@@ -347,13 +480,196 @@ notes for details).
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".
- (merge 715a51b js/am-call-theirs-theirs-in-fallback-3way later to maint).
+
+ * "git blame file" allowed the lineage of lines in the uncommitted,
+ unadded contents of "file" to be inspected, but it refused when
+ "file" did not appear in the current commit. When "file" was
+ created by renaming an existing file (but the change has not been
+ committed), this restriction was unnecessarily tight.
+
+ * "git add -N dir/file && git write-tree" produced an incorrect tree
+ when there are other paths in the same directory that sorts after
+ "file".
+
+ * "git fetch http://user:pass@host/repo..." scrubbed the userinfo
+ part, but "git push" didn't.
+
+ * "git merge" with renormalization did not work well with
+ merge-recursive, due to "safer crlf" conversion kicking in when it
+ shouldn't.
+ (merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint).
+
+ * The use of strbuf in "git rm" to build filename to remove was a bit
+ suboptimal, which has been fixed.
+
+ * An age old bug that caused "git diff --ignore-space-at-eol"
+ misbehave has been fixed.
+
+ * "git notes merge" had a code to see if a path exists (and fails if
+ it does) and then open the path for writing (when it doesn't).
+ Replace it with open with O_EXCL.
+
+ * "git pack-objects" and "git index-pack" mostly operate with off_t
+ when talking about the offset of objects in a packfile, but there
+ were a handful of places that used "unsigned long" to hold that
+ value, leading to an unintended truncation.
+
+ * Recent update to "git daemon" tries to enable the socket-level
+ KEEPALIVE, but when it is spawned via inetd, the standard input
+ file descriptor may not necessarily be connected to a socket.
+ Suppress an ENOTSOCK error from setsockopt().
+
+ * Recent FreeBSD stopped making perl available at /usr/bin/perl;
+ switch the default the built-in path to /usr/local/bin/perl on not
+ too ancient FreeBSD releases.
+
+ * "git commit --help" said "--no-verify" is only about skipping the
+ pre-commit hook, and failed to say that it also skipped the
+ commit-msg hook.
+
+ * "git merge" in Git v2.9 was taught to forbid merging an unrelated
+ lines of history by default, but that is exactly the kind of thing
+ the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
+ "git subtree" has been taught to use the "--allow-unrelated-histories"
+ option to override the default.
+
+ * The build procedure for "git persistent-https" helper (in contrib/)
+ has been updated so that it can be built with more recent versions
+ of Go.
+
+ * There is an optimization used in "git diff $treeA $treeB" to borrow
+ an already checked-out copy in the working tree when it is known to
+ be the same as the blob being compared, expecting that open/mmap of
+ such a file is faster than reading it from the object store, which
+ involves inflating and applying delta. This however kicked in even
+ when the checked-out copy needs to go through the convert-to-git
+ conversion (including the clean filter), which defeats the whole
+ point of the optimization. The optimization has been disabled when
+ the conversion is necessary.
+
+ * "git -c grep.patternType=extended log --basic-regexp" misbehaved
+ because the internal API to access the grep machinery was not
+ designed well.
+
+ * Windows port was failing some tests in t4130, due to the lack of
+ inum in the returned values by its lstat(2) emulation.
+
+ * The reflog output format is documented better, and a new format
+ --date=unix to report the seconds-since-epoch (without timezone)
+ has been added.
+ (merge 442f6fd jk/reflog-date later to maint).
+
+ * "git difftool <paths>..." started in a subdirectory failed to
+ interpret the paths relative to that directory, which has been
+ fixed.
+
+ * The characters in the label shown for tags/refs for commits in
+ "gitweb" output are now properly escaped for proper HTML output.
+
+ * FreeBSD can lie when asked mtime of a directory, which made the
+ untracked cache code to fall back to a slow-path, which in turn
+ caused tests in t7063 to fail because it wanted to verify the
+ behaviour of the fast-path.
+
+ * Squelch compiler warnings for nedmalloc (in compat/) library.
+
+ * A small memory leak in the command line parsing of "git blame"
+ has been plugged.
+
+ * The API documentation for hashmap was unclear if hashmap_entry
+ can be safely discarded without any other consideration. State
+ that it is safe to do so.
+
+ * Not-so-recent rewrite of "git am" that started making internal
+ calls into the commit machinery had an unintended regression, in
+ that no matter how many seconds it took to apply many patches, the
+ resulting committer timestamp for the resulting commits were all
+ the same.
+
+ * "git push --force-with-lease" already had enough logic to allow
+ ensuring that such a push results in creation of a ref (i.e. the
+ receiving end did not have another push from sideways that would be
+ discarded by our force-pushing), but didn't expose this possibility
+ to the users. It does so now.
+ (merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
+
+ * The mechanism to limit the pack window memory size, when packing is
+ done using multiple threads (which is the default), is per-thread,
+ but this was not documented clearly.
+ (merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
+
+ * "import-tars" fast-import script (in contrib/) used to ignore a
+ hardlink target and replaced it with an empty file, which has been
+ corrected to record the same blob as the other file the hardlink is
+ shared with.
+ (merge 04e0869 js/import-tars-hardlinks later to maint).
+
+ * "git mv dir non-existing-dir/" did not work in some environments
+ the same way as existing mainstream platforms. The code now moves
+ "dir" to "non-existing-dir", without relying on rename("A", "B/")
+ that strips the trailing slash of '/'.
+ (merge 189d035 js/mv-dir-to-new-directory later to maint).
+
+ * The "t/" hierarchy is prone to get an unusual pathname; "make test"
+ has been taught to make sure they do not contain paths that cannot
+ be checked out on Windows (and the mechanism can be reusable to
+ catch pathnames that are not portable to other platforms as need
+ arises).
+ (merge c2cafd3 js/test-lint-pathname later to maint).
+
+ * When "git merge-recursive" works on history with many criss-cross
+ merges in "verbose" mode, the names the command assigns to the
+ virtual merge bases could have overwritten each other by unintended
+ reuse of the same piece of memory.
+ (merge 5447a76 rs/pull-signed-tag later to maint).
+
+ * "git checkout --detach <branch>" used to give the same advice
+ message as that is issued when "git checkout <tag>" (or anything
+ that is not a branch name) is given, but asking with "--detach" is
+ an explicit enough sign that the user knows what is going on. The
+ advice message has been squelched in this case.
+ (merge 779b88a sb/checkout-explit-detach-no-advice later to maint).
+
+ * "git difftool" by default ignores the error exit from the backend
+ commands it spawns, because often they signal that they found
+ differences by exiting with a non-zero status code just like "diff"
+ does; the exit status codes 126 and above however are special in
+ that they are used to signal that the command is not executable,
+ does not exist, or killed by a signal. "git difftool" has been
+ taught to notice these exit status codes.
+ (merge 45a4f5d jk/difftool-command-not-found later to maint).
+
+ * On Windows, help.browser configuration variable used to be ignored,
+ which has been corrected.
+ (merge 6db5967 js/no-html-bypass-on-windows later to maint).
+
+ * The "git -c var[=val] cmd" facility to append a configuration
+ variable definition at the end of the search order was described in
+ git(1) manual page, but not in git-config(1), which was more likely
+ place for people to look for when they ask "can I make a one-shot
+ override, and if so how?"
+ (merge ae1f709 dg/document-git-c-in-git-config-doc later to maint).
+
+ * The tempfile (hence its user lockfile) API lets the caller to open
+ a file descriptor to a temporary file, write into it and then
+ finalize it by first closing the filehandle and then either
+ removing or renaming the temporary file. When the process spawns a
+ subprocess after obtaining the file descriptor, and if the
+ subprocess has not exited when the attempt to remove or rename is
+ made, the last step fails on Windows, because the subprocess has
+ the file descriptor still open. Open tempfile with O_CLOEXEC flag
+ to avoid this (on Windows, this is mapped to O_NOINHERIT).
+ (merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint).
+
+ * Correct an age-old calco (is that a typo-like word for calc)
+ in the documentation.
+ (merge 7841c48 ls/packet-line-protocol-doc-fix later to maint).
* Other minor clean-ups and documentation updates
- (merge e51b0df pb/commit-editmsg-path later to maint).
- (merge b333d0d jk/send-pack-stdio later to maint).
- (merge fcf0fe9 lf/sideband-returns-void later to maint).
- (merge c2691e2 ah/unpack-trees-advice-messages later to maint).
- (merge 82f6178 nd/doc-new-command later to maint).
- (merge fa90ab4 js/t3404-grammo-fix later to maint).
- (merge c61b2af lf/recv-sideband-cleanup later to maint).
+ (merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
+ (merge af4941d rs/merge-recursive-string-list-init later to maint).
+ (merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
+ (merge ddd0bfa jk/tighten-alloc later to maint).
+ (merge ecf30b2 rs/mailinfo-lib later to maint).
+ (merge 0eb75ce sg/reflog-past-root later to maint).
+ (merge 4369523 hv/doc-commit-reference-style later to maint).
diff --git a/Documentation/RelNotes/2.10.1.txt b/Documentation/RelNotes/2.10.1.txt
new file mode 100644
index 0000000..70462f7
--- /dev/null
+++ b/Documentation/RelNotes/2.10.1.txt
@@ -0,0 +1,131 @@
+Git v2.10.1 Release Notes
+=========================
+
+Fixes since v2.10
+-----------------
+
+ * Clarify various ways to specify the "revision ranges" in the
+ documentation.
+
+ * "diff-highlight" script (in contrib/) learned to work better with
+ "git log -p --graph" output.
+
+ * The test framework left the number of tests and success/failure
+ count in the t/test-results directory, keyed by the name of the
+ test script plus the process ID. The latter however turned out not
+ to serve any useful purpose. The process ID part of the filename
+ has been removed.
+
+ * Having a submodule whose ".git" repository is somehow corrupt
+ caused a few commands that recurse into submodules loop forever.
+
+ * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
+ the resulting repository becomes an invalid one. Teach the command
+ to forbid removal of HEAD.
+
+ * A test spawned a short-lived background process, which sometimes
+ prevented the test directory from getting removed at the end of the
+ script on some platforms.
+
+ * Update a few tests that used to use GIT_CURL_VERBOSE to use the
+ newer GIT_TRACE_CURL.
+
+ * Update Japanese translation for "git-gui".
+
+ * "git fetch http::/site/path" did not die correctly and segfaulted
+ instead.
+
+ * "git commit-tree" stopped reading commit.gpgsign configuration
+ variable that was meant for Porcelain "git commit" in Git 2.9; we
+ forgot to update "git gui" to look at the configuration to match
+ this change.
+
+ * "git log --cherry-pick" used to include merge commits as candidates
+ to be matched up with other commits, resulting a lot of wasted time.
+ The patch-id generation logic has been updated to ignore merges to
+ avoid the wastage.
+
+ * The http transport (with curl-multi option, which is the default
+ these days) failed to remove curl-easy handle from a curlm session,
+ which led to unnecessary API failures.
+
+ * "git diff -W" output needs to extend the context backward to
+ include the header line of the current function and also forward to
+ include the body of the entire current function up to the header
+ line of the next one. This process may have to merge to adjacent
+ hunks, but the code forgot to do so in some cases.
+
+ * Performance tests done via "t/perf" did not use the same set of
+ build configuration if the user relied on autoconf generated
+ configuration.
+
+ * "git format-patch --base=..." feature that was recently added
+ showed the base commit information after "-- " e-mail signature
+ line, which turned out to be inconvenient. The base information
+ has been moved above the signature line.
+
+ * Even when "git pull --rebase=preserve" (and the underlying "git
+ rebase --preserve") can complete without creating any new commit
+ (i.e. fast-forwards), it still insisted on having a usable ident
+ information (read: user.email is set correctly), which was less
+ than nice. As the underlying commands used inside "git rebase"
+ would fail with a more meaningful error message and advice text
+ when the bogus ident matters, this extra check was removed.
+
+ * "git gc --aggressive" used to limit the delta-chain length to 250,
+ which is way too deep for gaining additional space savings and is
+ detrimental for runtime performance. The limit has been reduced to
+ 50.
+
+ * Documentation for individual configuration variables to control use
+ of color (like `color.grep`) said that their default value is
+ 'false', instead of saying their default is taken from `color.ui`.
+ When we updated the default value for color.ui from 'false' to
+ 'auto' quite a while ago, all of them broke. This has been
+ corrected.
+
+ * A shell script example in check-ref-format documentation has been
+ fixed.
+
+ * "git checkout <word>" does not follow the usual disambiguation
+ rules when the <word> can be both a rev and a path, to allow
+ checking out a branch 'foo' in a project that happens to have a
+ file 'foo' in the working tree without having to disambiguate.
+ This was poorly documented and the check was incorrect when the
+ command was run from a subdirectory.
+
+ * Some codepaths in "git diff" used regexec(3) on a buffer that was
+ mmap(2)ed, which may not have a terminating NUL, leading to a read
+ beyond the end of the mapped region. This was fixed by introducing
+ a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
+ extension.
+
+ * The procedure to build Git on Mac OS X for Travis CI hardcoded the
+ internal directory structure we assumed HomeBrew uses, which was a
+ no-no. The procedure has been updated to ask HomeBrew things we
+ need to know to fix this.
+
+ * When "git rebase -i" is given a broken instruction, it told the
+ user to fix it with "--edit-todo", but didn't say what the step
+ after that was (i.e. "--continue").
+
+ * "git add --chmod=+x" added recently lacked documentation, which has
+ been corrected.
+
+ * "git add --chmod=+x <pathspec>" added recently only toggled the
+ executable bit for paths that are either new or modified. This has
+ been corrected to flip the executable bit for all paths that match
+ the given pathspec.
+
+ * "git pack-objects --include-tag" was taught that when we know that
+ we are sending an object C, we want a tag B that directly points at
+ C but also a tag A that points at the tag B. We used to miss the
+ intermediate tag B in some cases.
+
+ * Documentation around tools to import from CVS was fairly outdated.
+
+ * In the codepath that comes up with the hostname to be used in an
+ e-mail when the user didn't tell us, we looked at ai_canonname
+ field in struct addrinfo without making sure it is not NULL first.
+
+Also contains minor documentation updates and code clean-ups.
diff --git a/Documentation/RelNotes/2.10.2.txt b/Documentation/RelNotes/2.10.2.txt
new file mode 100644
index 0000000..c4d4397
--- /dev/null
+++ b/Documentation/RelNotes/2.10.2.txt
@@ -0,0 +1,111 @@
+Git v2.10.2 Release Notes
+=========================
+
+Fixes since v2.10.1
+-------------------
+
+ * The code that parses the format parameter of for-each-ref command
+ has seen a micro-optimization.
+
+ * The "graph" API used in "git log --graph" miscounted the number of
+ output columns consumed so far when drawing a padding line, which
+ has been fixed; this did not affect any existing code as nobody
+ tried to write anything after the padding on such a line, though.
+
+ * Almost everybody uses DEFAULT_ABBREV to refer to the default
+ setting for the abbreviation, but "git blame" peeked into
+ underlying variable bypassing the macro for no good reason.
+
+ * Doc update to clarify what "log -3 --reverse" does.
+
+ * An author name, that spelled a backslash-quoted double quote in the
+ human readable part "My \"double quoted\" name", was not unquoted
+ correctly while applying a patch from a piece of e-mail.
+
+ * The original command line syntax for "git merge", which was "git
+ merge <msg> HEAD <parent>...", has been deprecated for quite some
+ time, and "git gui" was the last in-tree user of the syntax. This
+ is finally fixed, so that we can move forward with the deprecation.
+
+ * Codepaths that read from an on-disk loose object were too loose in
+ validating what they are reading is a proper object file and
+ sometimes read past the data they read from the disk, which has
+ been corrected. H/t to Gustavo Grieco for reporting.
+
+ * "git worktree", even though it used the default_abbrev setting that
+ ought to be affected by core.abbrev configuration variable, ignored
+ the variable setting. The command has been taught to read the
+ default set of configuration variables to correct this.
+
+ * A low-level function verify_packfile() was meant to show errors
+ that were detected without dying itself, but under some conditions
+ it didn't and died instead, which has been fixed.
+
+ * When "git fetch" tries to find where the history of the repository
+ it runs in has diverged from what the other side has, it has a
+ mechanism to avoid digging too deep into irrelevant side branches.
+ This however did not work well over the "smart-http" transport due
+ to a design bug, which has been fixed.
+
+ * When we started cURL to talk to imap server when a new enough
+ version of cURL library is available, we forgot to explicitly add
+ imap(s):// before the destination. To some folks, that didn't work
+ and the library tried to make HTTP(s) requests instead.
+
+ * The ./configure script generated from configure.ac was taught how
+ to detect support of SSL by libcurl better.
+
+ * http.emptyauth configuration is a way to allow an empty username to
+ pass when attempting to authenticate using mechanisms like
+ Kerberos. We took an unspecified (NULL) username and sent ":"
+ (i.e. no username, no password) to CURLOPT_USERPWD, but did not do
+ the same when the username is explicitly set to an empty string.
+
+ * "git clone" of a local repository can be done at the filesystem
+ level, but the codepath did not check errors while copying and
+ adjusting the file that lists alternate object stores.
+
+ * Documentation for "git commit" was updated to clarify that "commit
+ -p <paths>" adds to the current contents of the index to come up
+ with what to commit.
+
+ * A stray symbolic link in $GIT_DIR/refs/ directory could make name
+ resolution loop forever, which has been corrected.
+
+ * The "submodule.<name>.path" stored in .gitmodules is never copied
+ to .git/config and such a key in .git/config has no meaning, but
+ the documentation described it and submodule.<name>.url next to
+ each other as if both belong to .git/config. This has been fixed.
+
+ * Recent git allows submodule.<name>.branch to use a special token
+ "." instead of the branch name; the documentation has been updated
+ to describe it.
+
+ * In a worktree connected to a repository elsewhere, created via "git
+ worktree", "git checkout" attempts to protect users from confusion
+ 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. The check has been corrected to allow it.
+
+ * "git rebase" immediately after "git clone" failed to find the fork
+ point from the upstream.
+
+ * When fetching from a remote that has many tags that are irrelevant
+ to branches we are following, we used to waste way too many cycles
+ when checking if the object pointed at by a tag (that we are not
+ going to fetch!) exists in our repository too carefully.
+
+ * The Travis CI configuration we ship ran the tests with --verbose
+ option but this risks non-TAP output that happens to be "ok" to be
+ misinterpreted as TAP signalling a test that passed. This resulted
+ in unnecessary failure. This has been corrected by introducing a
+ new mode to run our tests in the test harness to send the verbose
+ output separately to the log file.
+
+ * Some AsciiDoc formatter mishandles a displayed illustration with
+ tabs in it. Adjust a few of them in merge-base documentation to
+ work around them.
+
+Also contains minor documentation updates and code clean-ups.
diff --git a/Documentation/RelNotes/2.10.3.txt b/Documentation/RelNotes/2.10.3.txt
new file mode 100644
index 0000000..ad6a01b
--- /dev/null
+++ b/Documentation/RelNotes/2.10.3.txt
@@ -0,0 +1,55 @@
+Git v2.10.3 Release Notes
+=========================
+
+Fixes since v2.10.2
+-------------------
+
+ * Extract a small helper out of the function that reads the authors
+ script file "git am" internally uses.
+ This by itself is not useful until a second caller appears in the
+ future for "rebase -i" helper.
+
+ * The command-line completion script (in contrib/) learned to
+ complete "git cmd ^mas<HT>" to complete the negative end of
+ reference to "git cmd ^master".
+
+ * "git send-email" attempts to pick up valid e-mails from the
+ trailers, but people in real world write non-addresses there, like
+ "Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
+ on the availability and vintage of Mail::Address perl module.
+
+ * The code that we have used for the past 10+ years to cycle
+ 4-element ring buffers turns out to be not quite portable in
+ theoretical world.
+
+ * "git daemon" used fixed-length buffers to turn URL to the
+ repository the client asked for into the server side directory
+ path, using snprintf() to avoid overflowing these buffers, but
+ allowed possibly truncated paths to the directory. This has been
+ tightened to reject such a request that causes overlong path to be
+ required to serve.
+
+ * Recent update to git-sh-setup (a library of shell functions that
+ are used by our in-tree scripted Porcelain commands) included
+ another shell library git-sh-i18n without specifying where it is,
+ relying on the $PATH. This has been fixed to be more explicit by
+ prefixing $(git --exec-path) output in front.
+
+ * Fix for a racy false-positive test failure.
+
+ * Portability update and workaround for builds on recent Mac OS X.
+
+ * Update to the test framework made in 2.9 timeframe broke running
+ the tests under valgrind, which has been fixed.
+
+ * Improve the rule to convert "unsigned char [20]" into "struct
+ object_id *" in contrib/coccinelle/
+
+ * "git-shell" rejects a request to serve a repository whose name
+ begins with a dash, which makes it no longer possible to get it
+ confused into spawning service programs like "git-upload-pack" with
+ an option like "--help", which in turn would spawn an interactive
+ pager, instead of working with the repository user asked to access
+ (i.e. the one whose name is "--help").
+
+Also contains minor documentation updates and code clean-ups.
diff --git a/Documentation/RelNotes/2.10.4.txt b/Documentation/RelNotes/2.10.4.txt
new file mode 100644
index 0000000..ee8142a
--- /dev/null
+++ b/Documentation/RelNotes/2.10.4.txt
@@ -0,0 +1,4 @@
+Git v2.10.4 Release Notes
+=========================
+
+This release forward-ports the fix for "ssh://..." URL from Git v2.7.6
diff --git a/Documentation/RelNotes/2.10.5.txt b/Documentation/RelNotes/2.10.5.txt
new file mode 100644
index 0000000..a498fd6
--- /dev/null
+++ b/Documentation/RelNotes/2.10.5.txt
@@ -0,0 +1,17 @@
+Git v2.10.5 Release Notes
+=========================
+
+Fixes since v2.10.4
+-------------------
+
+ * "git cvsserver" no longer is invoked by "git daemon" by default,
+ as it is old and largely unmaintained.
+
+ * Various Perl scripts did not use safe_pipe_capture() instead of
+ backticks, leaving them susceptible to end-user input. They have
+ been corrected.
+
+Credits go to joernchen <joernchen@phenoelit.de> for finding the
+unsafe constructs in "git cvsserver", and to Jeff King at GitHub for
+finding and fixing instances of the same issue in other scripts.
+
diff --git a/Documentation/RelNotes/2.11.0.txt b/Documentation/RelNotes/2.11.0.txt
new file mode 100644
index 0000000..b7b7dd3
--- /dev/null
+++ b/Documentation/RelNotes/2.11.0.txt
@@ -0,0 +1,593 @@
+Git 2.11 Release Notes
+======================
+
+Backward compatibility notes.
+
+ * An empty string used as a pathspec element has always meant
+ 'everything matches', but it is too easy to write a script that
+ finds a path to remove in $path and run 'git rm "$paht"' by
+ mistake (when the user meant to give "$path"), which ends up
+ removing everything. This release starts warning about the
+ use of an empty string that is used for 'everything matches' and
+ asks users to use a more explicit '.' for that instead.
+
+ The hope is that existing users will not mind this change, and
+ eventually the warning can be turned into a hard error, upgrading
+ the deprecation into removal of this (mis)feature.
+
+ * The historical argument order "git merge <msg> HEAD <commit>..."
+ has been deprecated for quite some time, and will be removed in the
+ next release (not this one).
+
+ * The default abbreviation length, which has historically been 7, now
+ scales as the repository grows, using the approximate number of
+ objects in the repository and a bit of math around the birthday
+ paradox. The logic suggests to use 12 hexdigits for the Linux
+ kernel, and 9 to 10 for Git itself.
+
+
+Updates since v2.10
+-------------------
+
+UI, Workflows & Features
+
+ * Comes with new version of git-gui, now at its 0.21.0 tag.
+
+ * "git format-patch --cover-letter HEAD^" to format a single patch
+ with a separate cover letter now numbers the output as [PATCH 0/1]
+ and [PATCH 1/1] by default.
+
+ * An incoming "git push" that attempts to push too many bytes can now
+ be rejected by setting a new configuration variable at the receiving
+ end.
+
+ * "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
+ which was not intuitive, given that "git nosuchcommand" said "git:
+ 'nosuchcommand' is not a git command".
+
+ * "git clone --recurse-submodules --reference $path $URL" is a way to
+ reduce network transfer cost by borrowing objects in an existing
+ $path repository when cloning the superproject from $URL; it
+ learned to also peek into $path for presence of corresponding
+ repositories of submodules and borrow objects from there when able.
+
+ * The "git diff --submodule={short,log}" mechanism has been enhanced
+ to allow "--submodule=diff" to show the patch between the submodule
+ commits bound to the superproject.
+
+ * Even though "git hash-objects", which is a tool to take an
+ on-filesystem data stream and put it into the Git object store,
+ can perform "outside-world-to-Git" conversions (e.g.
+ end-of-line conversions and application of the clean-filter), and
+ it has had this feature on by default from very early days, its reverse
+ operation "git cat-file", which takes an object from the Git object
+ store and externalizes it for consumption by the outside world,
+ lacked an equivalent mechanism to run the "Git-to-outside-world"
+ conversion. The command learned the "--filters" option to do so.
+
+ * Output from "git diff" can be made easier to read by intelligently selecting
+ which lines are common and which lines are added/deleted
+ when the lines before and after the changed section
+ are the same. A command line option (--indent-heuristic) and a
+ configuration variable (diff.indentHeuristic) are added to help with the
+ experiment to find good heuristics.
+
+ * In some projects, it is common to use "[RFC PATCH]" as the subject
+ prefix for a patch meant for discussion rather than application. A
+ new format-patch option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH"
+ to help the participants of such projects.
+
+ * "git add --chmod={+,-}x <pathspec>" only changed the
+ executable bit for paths that are either new or modified. This has
+ been corrected to change the executable bit for all paths that match
+ the given pathspec.
+
+ * When "git format-patch --stdout" output is placed as an in-body
+ header and it uses RFC2822 header folding, "git am" fails to
+ put the header line back into a single logical line. The
+ underlying "git mailinfo" was taught to handle this properly.
+
+ * "gitweb" can spawn "highlight" to show blob contents with
+ (programming) language-specific syntax highlighting, but only
+ when the language is known. "highlight" can however be told
+ to guess the language itself by giving it "--force" option, which
+ has been enabled.
+
+ * "git gui" l10n to Portuguese.
+
+ * When given an abbreviated object name that is not (or more
+ realistically, "no longer") unique, we gave a fatal error
+ "ambiguous argument". This error is now accompanied by a hint that
+ lists the objects beginning with the given prefix. During the
+ course of development of this new feature, numerous minor bugs were
+ uncovered and corrected, the most notable one of which is that we
+ gave "short SHA1 xxxx is ambiguous." twice without good reason.
+
+ * "git log rev^..rev" is an often-used revision range specification
+ to show what was done on a side branch merged at rev. This has
+ gained a short-hand "rev^-1". In general "rev^-$n" is the same as
+ "^rev^$n rev", i.e. what has happened on other branches while the
+ history leading to nth parent was looking the other way.
+
+ * In recent versions of cURL, GSSAPI credential delegation is
+ disabled by default due to CVE-2011-2192; introduce a http.delegation
+ configuration variable to selectively allow enabling this.
+ (merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).
+
+ * "git mergetool" learned to honor "-O<orderfile>" to control the
+ order of paths to present to the end user.
+
+ * "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
+ configuration variable (diff.wsErrorHighlight) to set it by default.
+
+ * "git ls-files" learned the "--recurse-submodules" option
+ to get a listing of tracked files across submodules (i.e. this
+ only works with the "--cached" option, not for listing untracked or
+ ignored files). This would be a useful tool to sit on the upstream
+ side of a pipe that is read with xargs to work on all working tree
+ files from the top-level superproject.
+
+ * A new credential helper that talks via "libsecret" with
+ implementations of XDG Secret Service API has been added to
+ contrib/credential/.
+
+ * The GPG verification status shown by the "%G?" pretty format specifier
+ was not rich enough to differentiate a signature made by an expired
+ key, a signature made by a revoked key, etc. New output letters
+ have been assigned to express them.
+
+ * In addition to purely abbreviated commit object names, "gitweb"
+ learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
+ into clickable links in its output.
+
+ * "git commit" created an empty commit when invoked with an index
+ consisting solely of intend-to-add paths (added with "git add -N").
+ It now requires the "--allow-empty" option to create such a commit.
+ The same logic prevented "git status" from showing such paths as "new files" in the
+ "Changes not staged for commit" section.
+
+ * The smudge/clean filter API spawns an external process
+ to filter the contents of each path that has a filter defined. A
+ new type of "process" filter API has been added to allow the first
+ request to run the filter for a path to spawn a single process, and
+ all filtering is served by this single process for multiple
+ paths, reducing the process creation overhead.
+
+ * The user always has to say "stash@{$N}" when naming a single
+ element in the default location of the stash, i.e. reflogs in
+ refs/stash. The "git stash" command learned to accept "git stash
+ apply 4" as a short-hand for "git stash apply stash@{4}".
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * The delta-base-cache mechanism has been a key to the performance in
+ a repository with a tightly packed packfile, but it did not scale
+ well even with a larger value of core.deltaBaseCacheLimit.
+
+ * Enhance "git status --porcelain" output by collecting more data on
+ the state of the index and the working tree files, which may
+ further be used to teach git-prompt (in contrib/) to make fewer
+ calls to git.
+
+ * Extract a small helper out of the function that reads the authors
+ script file "git am" internally uses.
+ (merge a77598e jc/am-read-author-file later to maint).
+
+ * Lift calls to exit(2) and die() higher in the callchain in
+ sequencer.c files so that more helper functions in it can be used
+ by callers that want to handle error conditions themselves.
+
+ * "git am" has been taught to make an internal call to "git apply"'s
+ innards without spawning the latter as a separate process.
+
+ * The ref-store abstraction was introduced to the refs API so that we
+ can plug in different backends to store references.
+
+ * The "unsigned char sha1[20]" to "struct object_id" conversion
+ continues. Notable changes in this round includes that ce->sha1,
+ i.e. the object name recorded in the cache_entry, turns into an
+ object_id.
+
+ * JGit can show a fake ref "capabilities^{}" to "git fetch" when it
+ does not advertise any refs, but "git fetch" was not prepared to
+ see such an advertisement. When the other side disconnects without
+ giving any ref advertisement, we used to say "there may not be a
+ repository at that URL", but we may have seen other advertisements
+ like "shallow" and ".have" in which case we definitely know that a
+ repository is there. The code to detect this case has also been
+ updated.
+
+ * Some codepaths in "git pack-objects" were not ready to use an
+ existing pack bitmap; now they are and as a result they have
+ become faster.
+
+ * The codepath in "git fsck" to detect malformed tree objects has
+ been updated not to die but keep going after detecting them.
+
+ * We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
+ the time third parameter is redundant. A new QSORT() macro lets us
+ omit it.
+
+ * "git pack-objects" in a repository with many packfiles used to
+ spend a lot of time looking for/at objects in them; the accesses to
+ the packfiles are now optimized by checking the most-recently-used
+ packfile first.
+ (merge c9af708b1a jk/pack-objects-optim-mru later to maint).
+
+ * Codepaths involved in interacting alternate object stores have
+ been cleaned up.
+
+ * In order for the receiving end of "git push" to inspect the
+ received history and decide to reject the push, the objects sent
+ from the sending end need to be made available to the hook and
+ the mechanism for the connectivity check, and this was done
+ traditionally by storing the objects in the receiving repository
+ and letting "git gc" expire them. Instead, store the newly
+ received objects in a temporary area, and make them available by
+ reusing the alternate object store mechanism to them only while we
+ decide if we accept the check, and once we decide, either migrate
+ them to the repository or purge them immediately.
+
+ * The require_clean_work_tree() helper was recreated in C when "git
+ pull" was rewritten from shell; the helper is now made available to
+ other callers in preparation for upcoming "rebase -i" work.
+
+ * "git upload-pack" had its code cleaned-up and performance improved
+ by reducing use of timestamp-ordered commit-list, which was
+ replaced with a priority queue.
+
+ * "git diff --no-index" codepath has been updated not to try to peek
+ into a .git/ directory that happens to be under the current
+ directory, when we know we are operating outside any repository.
+
+ * Update of the sequencer codebase to make it reusable to reimplement
+ "rebase -i" continues.
+
+ * Git generally does not explicitly close file descriptors that were
+ open in the parent process when spawning a child process, but most
+ of the time the child does not want to access them. As Windows does
+ not allow removing or renaming a file that has a file descriptor
+ open, a slow-to-exit child can even break the parent process by
+ holding onto them. Use O_CLOEXEC flag to open files in various
+ codepaths.
+
+ * Update "interpret-trailers" machinery and teach it that people in
+ the real world write all sorts of cruft in the "trailer" that was
+ originally designed to have the neat-o "Mail-Header: like thing"
+ and nothing else.
+
+
+Also contains various documentation updates and code clean-ups.
+
+
+Fixes since v2.10
+-----------------
+
+Unless otherwise noted, all the fixes since v2.9 in the maintenance
+track are contained in this release (see the maintenance releases'
+notes for details).
+
+ * Clarify various ways to specify the "revision ranges" in the
+ documentation.
+
+ * "diff-highlight" script (in contrib/) learned to work better with
+ "git log -p --graph" output.
+
+ * The test framework left the number of tests and success/failure
+ count in the t/test-results directory, keyed by the name of the
+ test script plus the process ID. The latter however turned out not
+ to serve any useful purpose. The process ID part of the filename
+ has been removed.
+
+ * Having a submodule whose ".git" repository is somehow corrupt
+ caused a few commands that recurse into submodules to loop forever.
+
+ * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
+ the resulting repository becomes an invalid one. Teach the command
+ to forbid removal of HEAD.
+
+ * A test spawned a short-lived background process, which sometimes
+ prevented the test directory from getting removed at the end of the
+ script on some platforms.
+
+ * Update a few tests that used to use GIT_CURL_VERBOSE to use the
+ newer GIT_TRACE_CURL.
+
+ * "git pack-objects --include-tag" was taught that when we know that
+ we are sending an object C, we want a tag B that directly points at
+ C but also a tag A that points at the tag B. We used to miss the
+ intermediate tag B in some cases.
+
+ * Update Japanese translation for "git-gui".
+
+ * "git fetch http::/site/path" did not die correctly and segfaulted
+ instead.
+
+ * "git commit-tree" stopped reading commit.gpgsign configuration
+ variable that was meant for Porcelain "git commit" in Git 2.9; we
+ forgot to update "git gui" to look at the configuration to match
+ this change.
+
+ * "git add --chmod={+,-}x" added recently lacked documentation, which has
+ been corrected.
+
+ * "git log --cherry-pick" used to include merge commits as candidates
+ to be matched up with other commits, resulting a lot of wasted time.
+ The patch-id generation logic has been updated to ignore merges and
+ avoid the wastage.
+
+ * The http transport (with curl-multi option, which is the default
+ these days) failed to remove curl-easy handle from a curlm session,
+ which led to unnecessary API failures.
+
+ * There were numerous corner cases in which the configuration files
+ are read and used or not read at all depending on the directory a
+ Git command was run, leading to inconsistent behaviour. The code
+ to set-up repository access at the beginning of a Git process has
+ been updated to fix them.
+ (merge 4d0efa1 jk/setup-sequence-update later to maint).
+
+ * "git diff -W" output needs to extend the context backward to
+ include the header line of the current function and also forward to
+ include the body of the entire current function up to the header
+ line of the next one. This process may have to merge two adjacent
+ hunks, but the code forgot to do so in some cases.
+
+ * Performance tests done via "t/perf" did not use the right
+ build configuration if the user relied on autoconf generated
+ configuration.
+
+ * "git format-patch --base=..." feature that was recently added
+ showed the base commit information after the "-- " e-mail signature
+ line, which turned out to be inconvenient. The base information
+ has been moved above the signature line.
+
+ * More i18n.
+
+ * Even when "git pull --rebase=preserve" (and the underlying "git
+ rebase --preserve") can complete without creating any new commits
+ (i.e. fast-forwards), it still insisted on having usable ident
+ information (read: user.email is set correctly), which was less
+ than nice. As the underlying commands used inside "git rebase"
+ would fail with a more meaningful error message and advice text
+ when the bogus ident matters, this extra check was removed.
+
+ * "git gc --aggressive" used to limit the delta-chain length to 250,
+ which is way too deep for gaining additional space savings and is
+ detrimental for runtime performance. The limit has been reduced to
+ 50.
+
+ * Documentation for individual configuration variables to control use
+ of color (like `color.grep`) said that their default value is
+ 'false', instead of saying their default is taken from `color.ui`.
+ When we updated the default value for color.ui from 'false' to
+ 'auto' quite a while ago, all of them broke. This has been
+ corrected.
+
+ * The pretty-format specifier "%C(auto)" used by the "log" family of
+ commands to enable coloring of the output is taught to also issue a
+ color-reset sequence to the output.
+
+ * A shell script example in check-ref-format documentation has been
+ fixed.
+
+ * "git checkout <word>" does not follow the usual disambiguation
+ rules when the <word> can be both a rev and a path, to allow
+ checking out a branch 'foo' in a project that happens to have a
+ file 'foo' in the working tree without having to disambiguate.
+ This was poorly documented and the check was incorrect when the
+ command was run from a subdirectory.
+
+ * Some codepaths in "git diff" used regexec(3) on a buffer that was
+ mmap(2)ed, which may not have a terminating NUL, leading to a read
+ beyond the end of the mapped region. This was fixed by introducing
+ a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
+ extension.
+
+ * The procedure to build Git on Mac OS X for Travis CI hardcoded the
+ internal directory structure we assumed HomeBrew uses, which was a
+ no-no. The procedure has been updated to ask HomeBrew things we
+ need to know to fix this.
+
+ * When "git rebase -i" is given a broken instruction, it told the
+ user to fix it with "--edit-todo", but didn't say what the step
+ after that was (i.e. "--continue").
+
+ * Documentation around tools to import from CVS was fairly outdated.
+
+ * "git clone --recurse-submodules" lost the progress eye-candy in
+ a recent update, which has been corrected.
+
+ * A low-level function verify_packfile() was meant to show errors
+ that were detected without dying itself, but under some conditions
+ it didn't and died instead, which has been fixed.
+
+ * When "git fetch" tries to find where the history of the repository
+ it runs in has diverged from what the other side has, it has a
+ mechanism to avoid digging too deep into irrelevant side branches.
+ This however did not work well over the "smart-http" transport due
+ to a design bug, which has been fixed.
+
+ * In the codepath that comes up with the hostname to be used in an
+ e-mail when the user didn't tell us, we looked at the ai_canonname
+ field in struct addrinfo without making sure it is not NULL first.
+
+ * "git worktree", even though it used the default_abbrev setting that
+ ought to be affected by the core.abbrev configuration variable, ignored
+ the variable setting. The command has been taught to read the
+ default set of configuration variables to correct this.
+
+ * "git init" tried to record core.worktree in the repository's
+ 'config' file when the GIT_WORK_TREE environment variable was set and
+ it was different from where GIT_DIR appears as ".git" at its top,
+ but the logic was faulty when .git is a "gitdir:" file that points
+ at the real place, causing trouble in working trees that are
+ managed by "git worktree". This has been corrected.
+
+ * Codepaths that read from an on-disk loose object were too loose in
+ validating that they are reading a proper object file and
+ sometimes read past the data they read from the disk, which has
+ been corrected. H/t to Gustavo Grieco for reporting.
+
+ * The original command line syntax for "git merge", which was "git
+ merge <msg> HEAD <parent>...", has been deprecated for quite some
+ time, and "git gui" was the last in-tree user of the syntax. This
+ is finally fixed, so that we can move forward with the deprecation.
+
+ * An author name that has a backslash-quoted double quote in the
+ human readable part ("My \"double quoted\" name"), was not unquoted
+ correctly while applying a patch from a piece of e-mail.
+
+ * Doc update to clarify what "log -3 --reverse" does.
+
+ * Almost everybody uses DEFAULT_ABBREV to refer to the default
+ setting for the abbreviation, but "git blame" peeked into
+ underlying variable bypassing the macro for no good reason.
+
+ * The "graph" API used in "git log --graph" miscounted the number of
+ output columns consumed so far when drawing a padding line, which
+ has been fixed; this did not affect any existing code as nobody
+ tried to write anything after the padding on such a line, though.
+
+ * The code that parses the format parameter of the for-each-ref command
+ has seen a micro-optimization.
+
+ * When we started to use cURL to talk to an imap server, we forgot to explicitly add
+ imap(s):// before the destination. To some folks, that didn't work
+ and the library tried to make HTTP(s) requests instead.
+
+ * The ./configure script generated from configure.ac was taught how
+ to detect support of SSL by libcurl better.
+
+ * The command-line completion script (in contrib/) learned to
+ complete "git cmd ^mas<HT>" to complete the negative end of
+ reference to "git cmd ^master".
+ (merge 49416ad22a cp/completion-negative-refs later to maint).
+
+ * The existing "git fetch --depth=<n>" option was hard to use
+ correctly when making the history of an existing shallow clone
+ deeper. A new option, "--deepen=<n>", has been added to make this
+ easier to use. "git clone" also learned "--shallow-since=<date>"
+ and "--shallow-exclude=<tag>" options to make it easier to specify
+ "I am interested only in the recent N months worth of history" and
+ "Give me only the history since that version".
+ (merge cccf74e2da nd/shallow-deepen later to maint).
+
+ * "git blame --reverse OLD path" is now DWIMmed to show how lines
+ in path in an old revision OLD have survived up to the current
+ commit.
+ (merge e1d09701a4 jc/blame-reverse later to maint).
+
+ * The http.emptyauth configuration variable is a way to allow an empty username to
+ pass when attempting to authenticate using mechanisms like
+ Kerberos. We took an unspecified (NULL) username and sent ":"
+ (i.e. no username, no password) to CURLOPT_USERPWD, but did not do
+ the same when the username is explicitly set to an empty string.
+
+ * "git clone" of a local repository can be done at the filesystem
+ level, but the codepath did not check errors while copying and
+ adjusting the file that lists alternate object stores.
+
+ * Documentation for "git commit" was updated to clarify that "commit
+ -p <paths>" adds to the current contents of the index to come up
+ with what to commit.
+
+ * A stray symbolic link in the $GIT_DIR/refs/ directory could make name
+ resolution loop forever, which has been corrected.
+
+ * The "submodule.<name>.path" stored in .gitmodules is never copied
+ to .git/config and such a key in .git/config has no meaning, but
+ the documentation described it next to submodule.<name>.url
+ as if both belong to .git/config. This has been fixed.
+
+ * In a worktree created via "git
+ worktree", "git checkout" attempts to protect users from confusion
+ 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
+ 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
+ point from the upstream.
+
+ * When fetching from a remote that has many tags that are irrelevant
+ to branches we are following, we used to waste way too many cycles
+ checking if the object pointed at by a tag (that we are not
+ going to fetch!) exists in our repository too carefully.
+
+ * Protect our code from over-eager compilers.
+
+ * Recent git allows submodule.<name>.branch to use a special token
+ "." instead of the branch name; the documentation has been updated
+ to describe it.
+
+ * "git send-email" attempts to pick up valid e-mails from the
+ trailers, but people in the real world write non-addresses there, like
+ "Cc: Stable <add@re.ss> # 4.8+", which broke the output depending
+ on the availability and vintage of the Mail::Address perl module.
+ (merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint).
+
+ * The Travis CI configuration we ship ran the tests with the --verbose
+ option but this risks non-TAP output that happens to be "ok" to be
+ misinterpreted as TAP signalling a test that passed. This resulted
+ in unnecessary failures. This has been corrected by introducing a
+ new mode to run our tests in the test harness to send the verbose
+ output separately to the log file.
+
+ * Some AsciiDoc formatters mishandle a displayed illustration with
+ tabs in it. Adjust a few of them in merge-base documentation to
+ work around them.
+
+ * Fixed a minor regression in "git submodule" that was introduced
+ when more helper functions were reimplemented in C.
+ (merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint).
+
+ * The code that we have used for the past 10+ years to cycle
+ 4-element ring buffers turns out to be not quite portable in
+ theoretical world.
+ (merge bb84735c80 rs/ring-buffer-wraparound later to maint).
+
+ * "git daemon" used fixed-length buffers to turn URLs to the
+ repository the client asked for into the server side directory
+ paths, using snprintf() to avoid overflowing these buffers, but
+ allowed possibly truncated paths to the directory. This has been
+ tightened to reject such a request that causes an overlong path to be
+ served.
+ (merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint).
+
+ * Recent update to git-sh-setup (a library of shell functions that
+ are used by our in-tree scripted Porcelain commands) included
+ another shell library git-sh-i18n without specifying where it is,
+ relying on the $PATH. This has been fixed to be more explicit by
+ prefixing with $(git --exec-path) output.
+ (merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint).
+
+ * Fix for a racy false-positive test failure.
+ (merge fdf4f6c79b as/merge-attr-sleep later to maint).
+
+ * Portability update and workaround for builds on recent Mac OS X.
+ (merge a296bc0132 ls/macos-update later to maint).
+
+ * Using a %(HEAD) placeholder in "for-each-ref --format=" option
+ caused the command to segfault when on an unborn branch.
+ (merge 84679d470d jc/for-each-ref-head-segfault-fix later to maint).
+
+ * "git rebase -i" did not work well with the core.commentchar
+ configuration variable for two reasons, both of which have been
+ fixed.
+ (merge 882cd23777 js/rebase-i-commentchar-fix later to maint).
+
+ * Other minor doc, test and build updates and code cleanups.
+ (merge 5c238e29a8 jk/common-main later to maint).
+ (merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint).
+ (merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint).
+ (merge de9f7fa3b0 rs/commit-pptr-simplify later to maint).
+ (merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint).
+ (merge 28fab7b23d nd/test-helpers later to maint).
+ (merge c2bb0c1d1e rs/cocci later to maint).
+ (merge 3285b7badb ps/common-info-doc later to maint).
+ (merge 2b090822e8 nd/worktree-lock later to maint).
+ (merge 4bd488ea7c jk/create-branch-remove-unused-param later to maint).
+ (merge 974e0044d6 tk/diffcore-delta-remove-unused later to maint).
diff --git a/Documentation/RelNotes/2.11.1.txt b/Documentation/RelNotes/2.11.1.txt
new file mode 100644
index 0000000..9cd14c8
--- /dev/null
+++ b/Documentation/RelNotes/2.11.1.txt
@@ -0,0 +1,168 @@
+Git v2.11.1 Release Notes
+=========================
+
+Fixes since v2.11
+-----------------
+
+ * The default Travis-CI configuration specifies newer P4 and GitLFS.
+
+ * The character width table has been updated to match Unicode 9.0
+
+ * Update the isatty() emulation for Windows by updating the previous
+ hack that depended on internals of (older) MSVC runtime.
+
+ * "git rev-parse --symbolic" failed with a more recent notation like
+ "HEAD^-1" and "HEAD^!".
+
+ * An empty directory in a working tree that can simply be nuked used
+ to interfere while merging or cherry-picking a change to create a
+ submodule directory there, which has been fixed..
+
+ * The code in "git push" to compute if any commit being pushed in the
+ superproject binds a commit in a submodule that hasn't been pushed
+ out was overly inefficient, making it unusable even for a small
+ project that does not have any submodule but have a reasonable
+ number of refs.
+
+ * "git push --dry-run --recurse-submodule=on-demand" wasn't
+ "--dry-run" in the submodules.
+
+ * The output from "git worktree list" was made in readdir() order,
+ and was unstable.
+
+ * mergetool.<tool>.trustExitCode configuration variable did not apply
+ to built-in tools, but now it does.
+
+ * "git p4" LFS support was broken when LFS stores an empty blob.
+
+ * Fix a corner case in merge-recursive regression that crept in
+ during 2.10 development cycle.
+
+ * Update the error messages from the dumb-http client when it fails
+ to obtain loose objects; we used to give sensible error message
+ only upon 404 but we now forbid unexpected redirects that needs to
+ be reported with something sensible.
+
+ * When diff.renames configuration is on (and with Git 2.9 and later,
+ it is enabled by default, which made it worse), "git stash"
+ misbehaved if a file is removed and another file with a very
+ similar content is added.
+
+ * "git diff --no-index" did not take "--no-abbrev" option.
+
+ * "git difftool --dir-diff" had a minor regression when started from
+ a subdirectory, which has been fixed.
+
+ * "git commit --allow-empty --only" (no pathspec) with dirty index
+ ought to be an acceptable way to create a new commit that does not
+ change any paths, but it was forbidden, perhaps because nobody
+ needed it so far.
+
+ * A pathname that begins with "//" or "\\" on Windows is special but
+ path normalization logic was unaware of it.
+
+ * "git pull --rebase", when there is no new commits on our side since
+ we forked from the upstream, should be able to fast-forward without
+ invoking "git rebase", but it didn't.
+
+ * The way to specify hotkeys to "xxdiff" that is used by "git
+ mergetool" has been modernized to match recent versions of xxdiff.
+
+ * Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back
+ to where cherry-pick started while picking multiple changes, when
+ the cherry-pick stopped to ask for help from the user, and the user
+ did "git reset --hard" to a different commit in order to re-attempt
+ the operation.
+
+ * Code cleanup in shallow boundary computation.
+
+ * A recent update to receive-pack to make it easier to drop garbage
+ objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot
+ have a pathname with a colon in it (no surprise!), and this in turn
+ made it impossible to push into a repository at such a path. This
+ has been fixed by introducing a quoting mechanism used when
+ appending such a path to the colon-separated list.
+
+ * The function usage_msg_opt() has been updated to say "fatal:"
+ before the custom message programs give, when they want to die
+ with a message about wrong command line options followed by the
+ standard usage string.
+
+ * "git index-pack --stdin" needs an access to an existing repository,
+ but "git index-pack file.pack" to generate an .idx file that
+ corresponds to a packfile does not.
+
+ * Fix for NDEBUG builds.
+
+ * A lazy "git push" without refspec did not internally use a fully
+ specified refspec to perform 'current', 'simple', or 'upstream'
+ push, causing unnecessary "ambiguous ref" errors.
+
+ * "git p4" misbehaved when swapping a directory and a symbolic link.
+
+ * Even though an fix was attempted in Git 2.9.3 days, but running
+ "git difftool --dir-diff" from a subdirectory never worked. This
+ has been fixed.