summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore40
-rw-r--r--.mailmap241
-rw-r--r--Documentation/.gitignore1
-rw-r--r--Documentation/CodingGuidelines364
-rw-r--r--Documentation/Makefile227
-rw-r--r--Documentation/RelNotes/1.5.2.1.txt6
-rw-r--r--Documentation/RelNotes/1.6.0.2.txt6
-rw-r--r--Documentation/RelNotes/1.6.1.3.txt4
-rw-r--r--Documentation/RelNotes/1.6.1.4.txt3
-rw-r--r--Documentation/RelNotes/1.6.1.txt6
-rw-r--r--Documentation/RelNotes/1.7.10.1.txt78
-rw-r--r--Documentation/RelNotes/1.7.10.2.txt85
-rw-r--r--Documentation/RelNotes/1.7.10.3.txt43
-rw-r--r--Documentation/RelNotes/1.7.10.4.txt29
-rw-r--r--Documentation/RelNotes/1.7.10.5.txt12
-rw-r--r--Documentation/RelNotes/1.7.10.txt219
-rw-r--r--Documentation/RelNotes/1.7.11.1.txt9
-rw-r--r--Documentation/RelNotes/1.7.11.2.txt53
-rw-r--r--Documentation/RelNotes/1.7.11.3.txt53
-rw-r--r--Documentation/RelNotes/1.7.11.4.txt31
-rw-r--r--Documentation/RelNotes/1.7.11.5.txt36
-rw-r--r--Documentation/RelNotes/1.7.11.6.txt84
-rw-r--r--Documentation/RelNotes/1.7.11.7.txt46
-rw-r--r--Documentation/RelNotes/1.7.11.txt139
-rw-r--r--Documentation/RelNotes/1.7.12.1.txt134
-rw-r--r--Documentation/RelNotes/1.7.12.2.txt40
-rw-r--r--Documentation/RelNotes/1.7.12.3.txt34
-rw-r--r--Documentation/RelNotes/1.7.12.4.txt23
-rw-r--r--Documentation/RelNotes/1.7.12.txt136
-rw-r--r--Documentation/RelNotes/1.7.5.4.txt2
-rw-r--r--Documentation/RelNotes/1.7.7.7.txt13
-rw-r--r--Documentation/RelNotes/1.7.8.2.txt4
-rw-r--r--Documentation/RelNotes/1.7.8.6.txt22
-rw-r--r--Documentation/RelNotes/1.7.8.txt4
-rw-r--r--Documentation/RelNotes/1.7.9.4.txt24
-rw-r--r--Documentation/RelNotes/1.7.9.5.txt23
-rw-r--r--Documentation/RelNotes/1.7.9.6.txt12
-rw-r--r--Documentation/RelNotes/1.7.9.7.txt13
-rw-r--r--Documentation/RelNotes/1.8.0.1.txt64
-rw-r--r--Documentation/RelNotes/1.8.0.2.txt34
-rw-r--r--Documentation/RelNotes/1.8.0.3.txt14
-rw-r--r--Documentation/RelNotes/1.8.0.txt267
-rw-r--r--Documentation/RelNotes/1.8.1.1.txt87
-rw-r--r--Documentation/RelNotes/1.8.1.2.txt25
-rw-r--r--Documentation/RelNotes/1.8.1.3.txt47
-rw-r--r--Documentation/RelNotes/1.8.1.4.txt11
-rw-r--r--Documentation/RelNotes/1.8.1.5.txt47
-rw-r--r--Documentation/RelNotes/1.8.1.6.txt39
-rw-r--r--Documentation/RelNotes/1.8.1.txt241
-rw-r--r--Documentation/RelNotes/1.8.2.1.txt115
-rw-r--r--Documentation/RelNotes/1.8.2.2.txt61
-rw-r--r--Documentation/RelNotes/1.8.2.3.txt19
-rw-r--r--Documentation/RelNotes/1.8.2.txt495
-rw-r--r--Documentation/RelNotes/1.8.3.1.txt14
-rw-r--r--Documentation/RelNotes/1.8.3.2.txt59
-rw-r--r--Documentation/RelNotes/1.8.3.3.txt47
-rw-r--r--Documentation/RelNotes/1.8.3.4.txt20
-rw-r--r--Documentation/RelNotes/1.8.3.txt436
-rw-r--r--Documentation/RelNotes/1.8.4.1.txt71
-rw-r--r--Documentation/RelNotes/1.8.4.2.txt77
-rw-r--r--Documentation/RelNotes/1.8.4.3.txt54
-rw-r--r--Documentation/RelNotes/1.8.4.4.txt10
-rw-r--r--Documentation/RelNotes/1.8.4.5.txt13
-rw-r--r--Documentation/RelNotes/1.8.4.txt486
-rw-r--r--Documentation/RelNotes/1.8.5.1.txt9
-rw-r--r--Documentation/RelNotes/1.8.5.2.txt20
-rw-r--r--Documentation/RelNotes/1.8.5.3.txt27
-rw-r--r--Documentation/RelNotes/1.8.5.4.txt48
-rw-r--r--Documentation/RelNotes/1.8.5.5.txt37
-rw-r--r--Documentation/RelNotes/1.8.5.6.txt34
-rw-r--r--Documentation/RelNotes/1.8.5.txt456
-rw-r--r--Documentation/RelNotes/1.9.0.txt345
-rw-r--r--Documentation/RelNotes/1.9.1.txt59
-rw-r--r--Documentation/RelNotes/1.9.2.txt67
-rw-r--r--Documentation/RelNotes/1.9.3.txt21
-rw-r--r--Documentation/RelNotes/1.9.4.txt16
-rw-r--r--Documentation/RelNotes/1.9.5.txt34
-rw-r--r--Documentation/RelNotes/2.0.0.txt364
-rw-r--r--Documentation/RelNotes/2.0.1.txt115
-rw-r--r--Documentation/RelNotes/2.0.2.txt32
-rw-r--r--Documentation/RelNotes/2.0.3.txt17
-rw-r--r--Documentation/RelNotes/2.0.4.txt5
-rw-r--r--Documentation/RelNotes/2.0.5.txt34
-rw-r--r--Documentation/RelNotes/2.1.0.txt391
-rw-r--r--Documentation/RelNotes/2.1.1.txt44
-rw-r--r--Documentation/RelNotes/2.1.2.txt20
-rw-r--r--Documentation/RelNotes/2.1.3.txt26
-rw-r--r--Documentation/RelNotes/2.1.4.txt34
-rw-r--r--Documentation/RelNotes/2.2.0.txt313
-rw-r--r--Documentation/RelNotes/2.2.1.txt34
-rw-r--r--Documentation/RelNotes/2.2.2.txt63
-rw-r--r--Documentation/RelNotes/2.3.0.txt300
-rw-r--r--Documentation/RelNotes/2.3.1.txt52
-rw-r--r--Documentation/RelNotes/2.3.2.txt79
-rw-r--r--Documentation/RelNotes/2.3.3.txt39
-rw-r--r--Documentation/RelNotes/2.3.4.txt32
-rw-r--r--Documentation/RelNotes/2.3.5.txt44
-rw-r--r--Documentation/RelNotes/2.3.6.txt13
-rw-r--r--Documentation/RelNotes/2.3.7.txt21
-rw-r--r--Documentation/RelNotes/2.3.8.txt22
-rw-r--r--Documentation/RelNotes/2.4.0.txt514
-rw-r--r--Documentation/RelNotes/2.4.1.txt40
-rw-r--r--Documentation/RelNotes/2.4.2.txt45
-rw-r--r--Documentation/RelNotes/2.4.3.txt76
-rw-r--r--Documentation/RelNotes/2.4.4.txt35
-rw-r--r--Documentation/RelNotes/2.4.5.txt28
-rw-r--r--Documentation/RelNotes/2.4.6.txt23
-rw-r--r--Documentation/RelNotes/2.4.7.txt53
-rw-r--r--Documentation/RelNotes/2.4.8.txt21
-rw-r--r--Documentation/RelNotes/2.5.0.txt563
-rw-r--r--Documentation/RelNotes/2.5.1.txt65
-rw-r--r--Documentation/SubmittingPatches230
-rw-r--r--Documentation/asciidoc.conf10
-rw-r--r--Documentation/blame-options.txt31
-rwxr-xr-xDocumentation/cat-texi.perl1
-rwxr-xr-xDocumentation/cmd-list.perl4
-rw-r--r--Documentation/config.txt1348
-rw-r--r--Documentation/date-formats.txt4
-rw-r--r--Documentation/diff-config.txt70
-rw-r--r--Documentation/diff-format.txt3
-rw-r--r--Documentation/diff-generate-patch.txt6
-rw-r--r--Documentation/diff-options.txt148
-rw-r--r--Documentation/everyday.txto9
-rw-r--r--Documentation/fetch-options.txt58
-rw-r--r--Documentation/fmt-merge-msg-config.txt10
-rw-r--r--Documentation/git-add.txt74
-rw-r--r--Documentation/git-am.txt47
-rw-r--r--Documentation/git-apply.txt29
-rw-r--r--Documentation/git-archimport.txt16
-rw-r--r--Documentation/git-archive.txt15
-rw-r--r--Documentation/git-bisect-lk2009.txt32
-rw-r--r--Documentation/git-bisect.txt13
-rw-r--r--Documentation/git-blame.txt31
-rw-r--r--Documentation/git-branch.txt89
-rw-r--r--Documentation/git-bundle.txt19
-rw-r--r--Documentation/git-cat-file.txt193
-rw-r--r--Documentation/git-check-attr.txt14
-rw-r--r--Documentation/git-check-ignore.txt119
-rw-r--r--Documentation/git-check-mailmap.txt47
-rw-r--r--Documentation/git-check-ref-format.txt21
-rw-r--r--Documentation/git-checkout.txt132
-rw-r--r--Documentation/git-cherry-pick.txt49
-rw-r--r--Documentation/git-cherry.txt144
-rw-r--r--Documentation/git-clean.txt87
-rw-r--r--Documentation/git-clone.txt92
-rw-r--r--Documentation/git-column.txt48
-rw-r--r--Documentation/git-commit-tree.txt29
-rw-r--r--Documentation/git-commit.txt138
-rw-r--r--Documentation/git-config.txt124
-rw-r--r--Documentation/git-count-objects.txt30
-rw-r--r--Documentation/git-credential-cache--daemon.txt8
-rw-r--r--Documentation/git-credential-cache.txt6
-rw-r--r--Documentation/git-credential-store.txt45
-rw-r--r--Documentation/git-credential.txt154
-rw-r--r--Documentation/git-cvsexportcommit.txt6
-rw-r--r--Documentation/git-cvsimport.txt30
-rw-r--r--Documentation/git-cvsserver.txt91
-rw-r--r--Documentation/git-daemon.txt48
-rw-r--r--Documentation/git-describe.txt34
-rw-r--r--Documentation/git-diff-index.txt12
-rw-r--r--Documentation/git-diff.txt34
-rw-r--r--Documentation/git-difftool.txt41
-rw-r--r--Documentation/git-fast-export.txt99
-rw-r--r--Documentation/git-fast-import.txt242
-rw-r--r--Documentation/git-fetch-pack.txt36
-rw-r--r--Documentation/git-fetch.txt101
-rw-r--r--Documentation/git-filter-branch.txt120
-rw-r--r--Documentation/git-fmt-merge-msg.txt15
-rw-r--r--Documentation/git-for-each-ref.txt39
-rw-r--r--Documentation/git-format-patch.txt78
-rw-r--r--Documentation/git-fsck.txt21
-rw-r--r--Documentation/git-gc.txt28
-rw-r--r--Documentation/git-grep.txt36
-rw-r--r--Documentation/git-gui.txt2
-rw-r--r--Documentation/git-hash-object.txt12
-rw-r--r--Documentation/git-help.txt44
-rw-r--r--Documentation/git-http-backend.txt105
-rw-r--r--Documentation/git-http-fetch.txt4
-rw-r--r--Documentation/git-imap-send.txt40
-rw-r--r--Documentation/git-index-pack.txt19
-rw-r--r--Documentation/git-init-db.txt2
-rw-r--r--Documentation/git-init.txt95
-rw-r--r--Documentation/git-instaweb.txt2
-rw-r--r--Documentation/git-interpret-trailers.txt314
-rw-r--r--Documentation/git-log.txt107
-rw-r--r--Documentation/git-lost-found.txt73
-rw-r--r--Documentation/git-ls-files.txt10
-rw-r--r--Documentation/git-ls-remote.txt16
-rw-r--r--Documentation/git-mailinfo.txt7
-rw-r--r--Documentation/git-merge-base.txt66
-rw-r--r--Documentation/git-merge-file.txt5
-rw-r--r--Documentation/git-merge-index.txt6
-rw-r--r--Documentation/git-merge-tree.txt2
-rw-r--r--Documentation/git-merge.txt56
-rw-r--r--Documentation/git-mergetool--lib.txt4
-rw-r--r--Documentation/git-mergetool.txt19
-rw-r--r--Documentation/git-mktag.txt4
-rw-r--r--Documentation/git-mv.txt24
-rw-r--r--Documentation/git-name-rev.txt11
-rw-r--r--Documentation/git-notes.txt30
-rw-r--r--Documentation/git-p4.txt228
-rw-r--r--Documentation/git-pack-objects.txt26
-rw-r--r--Documentation/git-pack-refs.txt23
-rw-r--r--Documentation/git-patch-id.txt37
-rw-r--r--Documentation/git-peek-remote.txt43
-rw-r--r--Documentation/git-prune-packed.txt4
-rw-r--r--Documentation/git-prune.txt6
-rw-r--r--Documentation/git-pull.txt45
-rw-r--r--Documentation/git-push.txt225
-rw-r--r--Documentation/git-quiltimport.txt6
-rw-r--r--Documentation/git-read-tree.txt4
-rw-r--r--Documentation/git-rebase.txt152
-rw-r--r--Documentation/git-receive-pack.txt65
-rw-r--r--Documentation/git-reflog.txt141
-rw-r--r--Documentation/git-remote-ext.txt21
-rw-r--r--Documentation/git-remote-fd.txt12
-rw-r--r--Documentation/git-remote-helpers.txto9
-rw-r--r--Documentation/git-remote-testgit.txt4
-rw-r--r--Documentation/git-remote.txt71
-rw-r--r--Documentation/git-repack.txt21
-rw-r--r--Documentation/git-replace.txt91
-rw-r--r--Documentation/git-repo-config.txt23
-rw-r--r--Documentation/git-request-pull.txt55
-rw-r--r--Documentation/git-rerere.txt27
-rw-r--r--Documentation/git-reset.txt35
-rw-r--r--Documentation/git-rev-list.txt97
-rw-r--r--Documentation/git-rev-parse.txt226
-rw-r--r--Documentation/git-revert.txt12
-rw-r--r--Documentation/git-rm.txt41
-rw-r--r--Documentation/git-send-email.txt126
-rw-r--r--Documentation/git-send-pack.txt24
-rw-r--r--Documentation/git-sh-i18n--envsubst.txt2
-rw-r--r--Documentation/git-sh-setup.txt18
-rw-r--r--Documentation/git-shell.txt82
-rw-r--r--Documentation/git-shortlog.txt33
-rw-r--r--Documentation/git-show-branch.txt6
-rw-r--r--Documentation/git-show-index.txt4
-rw-r--r--Documentation/git-show-ref.txt19
-rw-r--r--Documentation/git-show.txt15
-rw-r--r--Documentation/git-stage.txt2
-rw-r--r--Documentation/git-stash.txt35
-rw-r--r--Documentation/git-status.txt67
-rw-r--r--Documentation/git-stripspace.txt17
-rw-r--r--Documentation/git-submodule.txt203
-rw-r--r--Documentation/git-svn.txt393
-rw-r--r--Documentation/git-symbolic-ref.txt17
-rw-r--r--Documentation/git-tag.txt61
-rw-r--r--Documentation/git-tar-tree.txt82
-rw-r--r--Documentation/git-tools.txt124
-rw-r--r--Documentation/git-unpack-objects.txt6
-rw-r--r--Documentation/git-update-index.txt91
-rw-r--r--Documentation/git-update-ref.txt62
-rw-r--r--Documentation/git-upload-archive.txt34
-rw-r--r--Documentation/git-upload-pack.txt2
-rw-r--r--Documentation/git-var.txt33
-rw-r--r--Documentation/git-verify-commit.txt28
-rw-r--r--Documentation/git-verify-pack.txt8
-rw-r--r--Documentation/git-verify-tag.txt2
-rw-r--r--Documentation/git-web--browse.txt10
-rw-r--r--Documentation/git-whatchanged.txt42
-rw-r--r--Documentation/git-worktree.txt176
-rw-r--r--Documentation/git.txt558
-rw-r--r--Documentation/gitattributes.txt145
-rw-r--r--Documentation/gitcli.txt88
-rw-r--r--Documentation/gitcore-tutorial.txt236
-rw-r--r--Documentation/gitcredentials.txt30
-rw-r--r--Documentation/gitcvs-migration.txt28
-rw-r--r--Documentation/gitdiffcore.txt59
-rw-r--r--Documentation/giteveryday.txt (renamed from Documentation/everyday.txt)290
-rw-r--r--Documentation/gitglossary.txt4
-rw-r--r--Documentation/githooks.txt89
-rw-r--r--Documentation/gitignore.txt109
-rw-r--r--Documentation/gitk.txt139
-rw-r--r--Documentation/gitmodules.txt44
-rw-r--r--Documentation/gitnamespaces.txt2
-rw-r--r--Documentation/gitremote-helpers.txt (renamed from Documentation/git-remote-helpers.txt)314
-rw-r--r--Documentation/gitrepository-layout.txt125
-rw-r--r--Documentation/gitrevisions.txt2
-rw-r--r--Documentation/gittutorial-2.txt75
-rw-r--r--Documentation/gittutorial.txt69
-rw-r--r--Documentation/gitweb.conf.txt145
-rw-r--r--Documentation/gitweb.txt26
-rw-r--r--Documentation/gitworkflows.txt10
-rw-r--r--Documentation/glossary-content.txt275
-rwxr-xr-xDocumentation/howto-index.sh16
-rw-r--r--Documentation/howto/keep-canonical-history-correct.txt216
-rw-r--r--Documentation/howto/maintain-git.txt375
-rw-r--r--Documentation/howto/new-command.txt106
-rw-r--r--Documentation/howto/rebase-from-internal-branch.txt19
-rw-r--r--Documentation/howto/rebuild-from-update-hook.txt12
-rw-r--r--Documentation/howto/recover-corrupted-blob-object.txt20
-rw-r--r--Documentation/howto/recover-corrupted-object-harder.txt479
-rw-r--r--Documentation/howto/revert-a-faulty-merge.txt18
-rw-r--r--Documentation/howto/revert-branch-rebase.txt12
-rw-r--r--Documentation/howto/separating-topic-branches.txt4
-rw-r--r--Documentation/howto/setup-git-server-over-http.txt30
-rw-r--r--Documentation/howto/update-hook-example.txt50
-rw-r--r--Documentation/howto/use-git-daemon.txt5
-rw-r--r--Documentation/howto/using-merge-subtree.txt2
-rw-r--r--Documentation/howto/using-signed-tag-in-pull-request.txt8
-rw-r--r--Documentation/i18n.txt8
-rwxr-xr-xDocumentation/install-webdoc.sh6
-rw-r--r--Documentation/line-range-format.txt30
-rw-r--r--Documentation/mailmap.txt5
-rw-r--r--Documentation/merge-config.txt32
-rw-r--r--Documentation/merge-options.txt42
-rw-r--r--Documentation/merge-strategies.txt23
-rw-r--r--Documentation/pretty-formats.txt77
-rw-r--r--Documentation/pretty-options.txt25
-rw-r--r--Documentation/pt_BR/gittutorial.txt675
-rw-r--r--Documentation/pull-fetch-param.txt78
-rw-r--r--Documentation/rev-list-options.txt445
-rw-r--r--Documentation/revisions.txt120
-rw-r--r--Documentation/technical/api-allocation-growing.txt17
-rw-r--r--Documentation/technical/api-argv-array.txt9
-rw-r--r--Documentation/technical/api-builtin.txt19
-rw-r--r--Documentation/technical/api-config.txt324
-rw-r--r--Documentation/technical/api-credentials.txt118
-rw-r--r--Documentation/technical/api-diff.txt10
-rw-r--r--Documentation/technical/api-directory-listing.txt60
-rw-r--r--Documentation/technical/api-error-handling.txt75
-rw-r--r--Documentation/technical/api-gitattributes.txt2
-rw-r--r--Documentation/technical/api-hash.txt52
-rw-r--r--Documentation/technical/api-hashmap.txt280
-rw-r--r--Documentation/technical/api-history-graph.txt10
-rw-r--r--Documentation/technical/api-index-skel.txt6
-rw-r--r--Documentation/technical/api-lockfile.txt254
-rw-r--r--Documentation/technical/api-parse-options.txt65
-rw-r--r--Documentation/technical/api-ref-iteration.txt8
-rw-r--r--Documentation/technical/api-remote.txt26
-rw-r--r--Documentation/technical/api-revision-walking.txt5
-rw-r--r--Documentation/technical/api-run-command.txt26
-rw-r--r--Documentation/technical/api-setup.txt38
-rw-r--r--Documentation/technical/api-sha1-array.txt7
-rw-r--r--Documentation/technical/api-strbuf.txt288
-rw-r--r--Documentation/technical/api-string-list.txt89
-rw-r--r--Documentation/technical/api-trace.txt97
-rw-r--r--Documentation/technical/bitmap-format.txt164
-rw-r--r--Documentation/technical/http-protocol.txt507
-rw-r--r--Documentation/technical/index-format.txt131
-rw-r--r--Documentation/technical/pack-format.txt30
-rw-r--r--Documentation/technical/pack-heuristics.txt32
-rw-r--r--Documentation/technical/pack-protocol.txt99
-rw-r--r--Documentation/technical/protocol-capabilities.txt114
-rw-r--r--Documentation/technical/protocol-common.txt4
-rw-r--r--Documentation/technical/racy-git.txt44
-rw-r--r--Documentation/technical/send-pack-pipeline.txt4
-rw-r--r--Documentation/technical/shallow.txt15
-rw-r--r--Documentation/technical/trivial-merge.txt36
-rw-r--r--Documentation/urls-remotes.txt2
-rw-r--r--Documentation/urls.txt25
-rw-r--r--Documentation/user-manual.conf2
-rw-r--r--Documentation/user-manual.txt984
-rwxr-xr-xGIT-VERSION-GEN8
-rw-r--r--INSTALL41
-rw-r--r--Makefile1585
-rw-r--r--README26
l---------RelNotes2
-rw-r--r--abspath.c186
-rw-r--r--advice.c67
-rw-r--r--advice.h13
-rw-r--r--alias.c36
-rw-r--r--alloc.c106
-rw-r--r--archive-tar.c228
-rw-r--r--archive-zip.c387
-rw-r--r--archive.c236
-rw-r--r--archive.h14
-rw-r--r--argv-array.c25
-rw-r--r--argv-array.h5
-rw-r--r--attr.c219
-rw-r--r--attr.h2
-rw-r--r--base85.c2
-rw-r--r--bisect.c115
-rw-r--r--bisect.h4
-rw-r--r--blob.c11
-rw-r--r--block-sha1/sha1.c44
-rw-r--r--branch.c176
-rw-r--r--branch.h2
-rw-r--r--builtin.h41
-rw-r--r--builtin/add.c313
-rw-r--r--builtin/annotate.c12
-rw-r--r--builtin/apply.c1597
-rw-r--r--builtin/archive.c29
-rw-r--r--builtin/bisect--helper.c10
-rw-r--r--builtin/blame.c1721
-rw-r--r--builtin/branch.c573
-rw-r--r--builtin/bundle.c8
-rw-r--r--builtin/cat-file.c481
-rw-r--r--builtin/check-attr.c33
-rw-r--r--builtin/check-ignore.c187
-rw-r--r--builtin/check-mailmap.c66
-rw-r--r--builtin/check-ref-format.c2
-rw-r--r--builtin/checkout-index.c66
-rw-r--r--builtin/checkout.c801
-rw-r--r--builtin/clean.c988
-rw-r--r--builtin/clone.c723
-rw-r--r--builtin/column.c59
-rw-r--r--builtin/commit-tree.c27
-rw-r--r--builtin/commit.c1069
-rw-r--r--builtin/config.c481
-rw-r--r--builtin/count-objects.c157
-rw-r--r--builtin/credential.c31
-rw-r--r--builtin/describe.c187
-rw-r--r--builtin/diff-files.c4
-rw-r--r--builtin/diff-index.c10
-rw-r--r--builtin/diff-tree.c14
-rw-r--r--builtin/diff.c182
-rw-r--r--builtin/fast-export.c561
-rw-r--r--builtin/fetch-pack.c1144
-rw-r--r--builtin/fetch.c820
-rw-r--r--builtin/fmt-merge-msg.c326
-rw-r--r--builtin/for-each-ref.c253
-rw-r--r--builtin/fsck.c142
-rw-r--r--builtin/gc.c294
-rw-r--r--builtin/get-tar-commit-id.c41
-rw-r--r--builtin/grep.c342
-rw-r--r--builtin/hash-object.c101
-rw-r--r--builtin/help.c186
-rw-r--r--builtin/index-pack.c1237
-rw-r--r--builtin/init-db.c113
-rw-r--r--builtin/interpret-trailers.c44
-rw-r--r--builtin/log.c572
-rw-r--r--builtin/ls-files.c252
-rw-r--r--builtin/ls-remote.c10
-rw-r--r--builtin/ls-tree.c57
-rw-r--r--builtin/mailinfo.c122
-rw-r--r--builtin/mailsplit.c39
-rw-r--r--builtin/merge-base.c195
-rw-r--r--builtin/merge-file.c27
-rw-r--r--builtin/merge-index.c10
-rw-r--r--builtin/merge-recursive.c4
-rw-r--r--builtin/merge-tree.c104
-rw-r--r--builtin/merge.c757
-rw-r--r--builtin/mktree.c13
-rw-r--r--builtin/mv.c203
-rw-r--r--builtin/name-rev.c189
-rw-r--r--builtin/notes.c554
-rw-r--r--builtin/pack-objects.c1348
-rw-r--r--builtin/pack-redundant.c8
-rw-r--r--builtin/pack-refs.c8
-rw-r--r--builtin/patch-id.c86
-rw-r--r--builtin/prune-packed.c83
-rw-r--r--builtin/prune.c119
-rw-r--r--builtin/push.c405
-rw-r--r--builtin/read-tree.c64
-rw-r--r--builtin/receive-pack.c1094
-rw-r--r--builtin/reflog.c309
-rw-r--r--builtin/remote-ext.c13
-rw-r--r--builtin/remote.c657
-rw-r--r--builtin/repack.c409
-rw-r--r--builtin/replace.c451
-rw-r--r--builtin/rerere.c14
-rw-r--r--builtin/reset.c349
-rw-r--r--builtin/rev-list.c103
-rw-r--r--builtin/rev-parse.c275
-rw-r--r--builtin/revert.c1044
-rw-r--r--builtin/rm.c274
-rw-r--r--builtin/send-pack.c441
-rw-r--r--builtin/shortlog.c92
-rw-r--r--builtin/show-branch.c207
-rw-r--r--builtin/show-ref.c92
-rw-r--r--builtin/stripspace.c49
-rw-r--r--builtin/symbolic-ref.c44
-rw-r--r--builtin/tag.c411
-rw-r--r--builtin/tar-tree.c103
-rw-r--r--builtin/unpack-objects.c24
-rw-r--r--builtin/update-index.c415
-rw-r--r--builtin/update-ref.c382
-rw-r--r--builtin/update-server-info.c5
-rw-r--r--builtin/upload-archive.c45
-rw-r--r--builtin/var.c4
-rw-r--r--builtin/verify-commit.c93
-rw-r--r--builtin/verify-pack.c16
-rw-r--r--builtin/verify-tag.c16
-rw-r--r--builtin/worktree.c332
-rw-r--r--builtin/write-tree.c10
-rw-r--r--bulk-checkin.c24
-rw-r--r--bulk-checkin.h2
-rw-r--r--bundle.c275
-rw-r--r--cache-tree.c179
-rw-r--r--cache-tree.h10
-rw-r--r--cache.h1030
-rwxr-xr-xcheck-builtins.sh6
-rwxr-xr-xcheck_bindir2
-rw-r--r--color.c188
-rw-r--r--color.h12
-rw-r--r--column.c416
-rw-r--r--column.h45
-rw-r--r--combine-diff.c659
-rw-r--r--command-list.txt79
-rw-r--r--commit-slab.h131
-rw-r--r--commit.c1113
-rw-r--r--commit.h220
-rw-r--r--compat/apple-common-crypto.h86
-rw-r--r--compat/bswap.h131
-rw-r--r--compat/cygwin.c142
-rw-r--r--compat/cygwin.h9
-rw-r--r--compat/fnmatch/fnmatch.c492
-rw-r--r--compat/fnmatch/fnmatch.h84
-rw-r--r--compat/gmtime.c29
-rw-r--r--compat/mingw.c846
-rw-r--r--compat/mingw.h245
-rw-r--r--compat/mkdir.c24
-rw-r--r--compat/mmap.c4
-rw-r--r--compat/msvc.h17
-rw-r--r--compat/nedmalloc/Readme.txt4
-rw-r--r--compat/nedmalloc/malloc.c.h18
-rw-r--r--compat/nedmalloc/nedmalloc.c9
-rw-r--r--compat/obstack.h2
-rw-r--r--compat/poll/poll.c (renamed from compat/win32/poll.c)20
-rw-r--r--compat/poll/poll.h (renamed from compat/win32/poll.h)0
-rw-r--r--compat/precompose_utf8.c181
-rw-r--r--compat/precompose_utf8.h45
-rw-r--r--compat/regex/regcomp.c22
-rw-r--r--compat/regex/regex.c2
-rw-r--r--compat/regex/regex_internal.c6
-rw-r--r--compat/regex/regexec.c12
-rw-r--r--compat/stat.c48
-rw-r--r--compat/strtok_r.c61
-rw-r--r--compat/terminal.c128
-rw-r--r--compat/unsetenv.c2
-rw-r--r--compat/vcbuild/include/sys/poll.h1
-rw-r--r--compat/vcbuild/include/unistd.h3
-rwxr-xr-x[-rw-r--r--]compat/vcbuild/scripts/clink.pl2
-rwxr-xr-x[-rw-r--r--]compat/vcbuild/scripts/lib.pl0
-rw-r--r--compat/win32.h2
-rw-r--r--compat/win32/alloca.h (renamed from compat/vcbuild/include/alloca.h)0
-rw-r--r--compat/win32/dirent.c116
-rw-r--r--compat/win32/dirent.h8
-rw-r--r--compat/win32/pthread.c2
-rw-r--r--compat/win32/pthread.h5
-rw-r--r--compat/win32mmap.c6
-rw-r--r--compat/winansi.c450
-rw-r--r--config.c1243
-rw-r--r--config.mak.in61
-rw-r--r--config.mak.uname566
-rw-r--r--configure.ac571
-rw-r--r--connect.c526
-rw-r--r--connect.h14
-rw-r--r--connected.c77
-rw-r--r--connected.h7
-rw-r--r--contrib/blameview/README9
-rwxr-xr-xcontrib/blameview/blameview.perl155
-rwxr-xr-x[-rw-r--r--]contrib/buildsystems/engine.pl0
-rwxr-xr-x[-rw-r--r--]contrib/buildsystems/generate0
-rwxr-xr-x[-rw-r--r--]contrib/buildsystems/parse.pl0
-rw-r--r--contrib/ciabot/README12
-rwxr-xr-xcontrib/ciabot/ciabot.py222
-rwxr-xr-xcontrib/ciabot/ciabot.sh192
-rw-r--r--[-rwxr-xr-x]contrib/completion/git-completion.bash1020
-rw-r--r--contrib/completion/git-completion.tcsh126
-rw-r--r--contrib/completion/git-completion.zsh225
-rw-r--r--contrib/completion/git-prompt.sh532
-rw-r--r--contrib/contacts/.gitignore3
-rw-r--r--contrib/contacts/Makefile71
-rwxr-xr-xcontrib/contacts/git-contacts203
-rw-r--r--contrib/contacts/git-contacts.txt94
-rw-r--r--contrib/continuous/cidaemon503
-rw-r--r--contrib/continuous/post-receive-cinotify104
-rwxr-xr-xcontrib/convert-grafts-to-replace-refs.sh28
-rw-r--r--contrib/convert-objects/git-convert-objects.txt2
-rw-r--r--contrib/credential/gnome-keyring/.gitignore1
-rw-r--r--contrib/credential/gnome-keyring/Makefile24
-rw-r--r--contrib/credential/gnome-keyring/git-credential-gnome-keyring.c471
-rw-r--r--contrib/credential/netrc/Makefile5
-rwxr-xr-xcontrib/credential/netrc/git-credential-netrc423
-rw-r--r--contrib/credential/netrc/test.netrc13
-rwxr-xr-xcontrib/credential/netrc/test.pl106
-rw-r--r--contrib/credential/osxkeychain/Makefile7
-rw-r--r--contrib/credential/osxkeychain/git-credential-osxkeychain.c14
-rw-r--r--contrib/credential/wincred/Makefile22
-rw-r--r--contrib/credential/wincred/git-credential-wincred.c320
-rw-r--r--contrib/diff-highlight/README150
-rwxr-xr-xcontrib/diff-highlight/diff-highlight176
-rw-r--r--contrib/emacs/git-blame.el75
-rw-r--r--contrib/emacs/git.el2
-rw-r--r--contrib/examples/builtin-fetch--tool.c9
-rwxr-xr-xcontrib/examples/git-checkout.sh10
-rwxr-xr-xcontrib/examples/git-clone.sh22
-rwxr-xr-xcontrib/examples/git-commit.sh16
-rwxr-xr-xcontrib/examples/git-fetch.sh6
-rwxr-xr-xcontrib/examples/git-log.sh15
-rwxr-xr-xcontrib/examples/git-ls-remote.sh4
-rwxr-xr-xcontrib/examples/git-merge.sh10
-rwxr-xr-xcontrib/examples/git-remote.perl10
-rwxr-xr-xcontrib/examples/git-repack.sh (renamed from git-repack.sh)16
-rwxr-xr-xcontrib/examples/git-reset.sh4
-rwxr-xr-xcontrib/examples/git-resolve.sh4
-rwxr-xr-xcontrib/examples/git-revert.sh2
-rwxr-xr-xcontrib/examples/git-svnimport.perl2
-rw-r--r--contrib/examples/git-svnimport.txt2
-rwxr-xr-xcontrib/examples/git-tag.sh2
-rwxr-xr-xcontrib/examples/git-whatchanged.sh28
-rwxr-xr-xcontrib/fast-import/git-import.perl2
-rwxr-xr-xcontrib/fast-import/git-import.sh2
-rw-r--r--contrib/fast-import/git-p4.README12
-rw-r--r--contrib/fast-import/git-p4.bat1
-rwxr-xr-xcontrib/fast-import/import-directories.perl4
-rwxr-xr-xcontrib/fast-import/import-zips.py99
-rwxr-xr-xcontrib/git-jump/git-jump4
-rwxr-xr-xcontrib/git-resurrect.sh1
-rwxr-xr-xcontrib/gitview/gitview2
-rw-r--r--contrib/gitview/gitview.txt2
-rwxr-xr-xcontrib/hg-to-git/hg-to-git.py7
-rw-r--r--contrib/hooks/multimail/CHANGES86
-rw-r--r--contrib/hooks/multimail/README594
-rw-r--r--contrib/hooks/multimail/README.Git15
-rw-r--r--contrib/hooks/multimail/README.migrate-from-post-receive-email145
-rwxr-xr-xcontrib/hooks/multimail/git_multimail.py3088
-rwxr-xr-xcontrib/hooks/multimail/migrate-mailhook-config271
-rwxr-xr-xcontrib/hooks/multimail/post-receive.example95
-rwxr-xr-xcontrib/hooks/post-receive-email36
-rwxr-xr-x[-rw-r--r--]contrib/hooks/pre-auto-gc-battery3
-rwxr-xr-x[-rw-r--r--]contrib/hooks/setgitperms.perl2
-rwxr-xr-x[-rw-r--r--]contrib/hooks/update-paranoid0
-rw-r--r--contrib/mw-to-git/.gitignore2
-rw-r--r--contrib/mw-to-git/.perlcriticrc28
-rw-r--r--contrib/mw-to-git/Git/Mediawiki.pm100
-rw-r--r--contrib/mw-to-git/Makefile57
-rwxr-xr-xcontrib/mw-to-git/bin-wrapper/git14
-rwxr-xr-xcontrib/mw-to-git/git-mw.perl368
-rwxr-xr-xcontrib/mw-to-git/git-remote-mediawiki827
-rwxr-xr-xcontrib/mw-to-git/git-remote-mediawiki.perl1338
-rw-r--r--contrib/mw-to-git/git-remote-mediawiki.txt2
-rw-r--r--contrib/mw-to-git/t/.gitignore4
-rw-r--r--contrib/mw-to-git/t/Makefile31
-rw-r--r--contrib/mw-to-git/t/README124
-rwxr-xr-xcontrib/mw-to-git/t/install-wiki.sh55
-rw-r--r--contrib/mw-to-git/t/install-wiki/.gitignore1
-rw-r--r--contrib/mw-to-git/t/install-wiki/LocalSettings.php129
-rw-r--r--contrib/mw-to-git/t/install-wiki/db_install.php120
-rw-r--r--contrib/mw-to-git/t/push-pull-tests.sh144
-rwxr-xr-xcontrib/mw-to-git/t/t9360-mw-to-git-clone.sh257
-rwxr-xr-xcontrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh24
-rwxr-xr-xcontrib/mw-to-git/t/t9362-mw-to-git-utf8.sh347
-rwxr-xr-xcontrib/mw-to-git/t/t9363-mw-to-git-export-import.sh217
-rwxr-xr-xcontrib/mw-to-git/t/t9364-pull-by-rev.sh17
-rwxr-xr-xcontrib/mw-to-git/t/t9365-continuing-queries.sh23
-rwxr-xr-xcontrib/mw-to-git/t/test-gitmw-lib.sh432
-rwxr-xr-xcontrib/mw-to-git/t/test-gitmw.pl225
-rw-r--r--contrib/mw-to-git/t/test.config37
-rw-r--r--contrib/p4import/README1
-rw-r--r--contrib/p4import/git-p4import.py360
-rw-r--r--contrib/p4import/git-p4import.txt167
-rw-r--r--contrib/patches/docbook-xsl-manpages-charmap.patch21
-rw-r--r--contrib/persistent-https/LICENSE202
-rw-r--r--contrib/persistent-https/Makefile38
-rw-r--r--contrib/persistent-https/README62
-rw-r--r--contrib/persistent-https/client.go189
-rw-r--r--contrib/persistent-https/main.go82
-rw-r--r--contrib/persistent-https/proxy.go190
-rw-r--r--contrib/persistent-https/socket.go97
-rw-r--r--contrib/remote-helpers/README15
-rwxr-xr-xcontrib/remote-helpers/git-remote-bzr13
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg13
-rwxr-xr-xcontrib/rerere-train.sh2
-rwxr-xr-xcontrib/stats/mailmap.pl96
-rw-r--r--contrib/subtree/.gitignore7
-rw-r--r--contrib/subtree/COPYING339
-rw-r--r--contrib/subtree/INSTALL28
-rw-r--r--contrib/subtree/Makefile81
-rw-r--r--contrib/subtree/README8
-rwxr-xr-xcontrib/subtree/git-subtree.sh744
-rw-r--r--contrib/subtree/git-subtree.txt351
-rw-r--r--contrib/subtree/t/Makefile69
-rwxr-xr-xcontrib/subtree/t/t7900-subtree.sh471
-rw-r--r--contrib/subtree/todo50
-rw-r--r--contrib/svn-fe/Makefile60
-rw-r--r--contrib/svn-fe/svn-fe.c3
-rw-r--r--contrib/svn-fe/svn-fe.txt14
-rwxr-xr-xcontrib/svn-fe/svnrdump_sim.py68
-rwxr-xr-xcontrib/thunderbird-patch-inline/appp.sh14
-rw-r--r--contrib/vim/README32
-rwxr-xr-xcontrib/workdir/git-new-workdir53
-rw-r--r--convert.c134
-rw-r--r--convert.h12
-rw-r--r--copy.c37
-rw-r--r--credential-cache--daemon.c31
-rw-r--r--credential-cache.c3
-rw-r--r--credential-store.c97
-rw-r--r--credential.c15
-rw-r--r--credential.h2
-rw-r--r--csum-file.c17
-rw-r--r--csum-file.h13
-rw-r--r--ctype.c51
-rw-r--r--daemon.c484
-rw-r--r--date.c212
-rw-r--r--decorate.c7
-rw-r--r--delta.h2
-rw-r--r--diff-delta.c2
-rw-r--r--diff-lib.c106
-rw-r--r--diff-no-index.c268
-rw-r--r--diff.c1450
-rw-r--r--diff.h67
-rw-r--r--diffcore-break.c10
-rw-r--r--diffcore-order.c85
-rw-r--r--diffcore-pickaxe.c293
-rw-r--r--diffcore-rename.c253
-rw-r--r--diffcore.h29
-rw-r--r--dir.c2287
-rw-r--r--dir.h256
-rw-r--r--editor.c21
-rw-r--r--entry.c143
-rw-r--r--environment.c115
-rw-r--r--ewah/bitmap.c221
-rw-r--r--ewah/ewah_bitmap.c714
-rw-r--r--ewah/ewah_io.c217
-rw-r--r--ewah/ewah_rlw.c115
-rw-r--r--ewah/ewok.h235
-rw-r--r--ewah/ewok_rlw.h114
-rw-r--r--exec_cmd.c16
-rw-r--r--exec_cmd.h3
-rw-r--r--fast-import.c681
-rw-r--r--fetch-pack.c1061
-rw-r--r--fetch-pack.h47
-rwxr-xr-xfixup-builtins16
-rw-r--r--fsck.c231
-rw-r--r--fsck.h4
-rwxr-xr-xgenerate-cmdlist.sh51
-rw-r--r--gettext.c59
-rw-r--r--gettext.h33
-rwxr-xr-xgit-add--interactive.perl71
-rwxr-xr-xgit-am.sh294
-rwxr-xr-xgit-archimport.perl2
-rwxr-xr-xgit-bisect.sh47
-rw-r--r--git-compat-util.h419
-rwxr-xr-xgit-cvsexportcommit.perl2
-rwxr-xr-xgit-cvsimport.perl75
-rwxr-xr-xgit-cvsserver.perl2403
-rwxr-xr-xgit-difftool--helper.sh33
-rwxr-xr-xgit-difftool.perl532
-rwxr-xr-xgit-filter-branch.sh78
-rwxr-xr-xgit-gui/GIT-VERSION-GEN2
-rw-r--r--git-gui/Makefile11
-rwxr-xr-xgit-gui/git-gui.sh154
-rw-r--r--git-gui/lib/blame.tcl2
-rw-r--r--git-gui/lib/choose_repository.tcl71
-rw-r--r--git-gui/lib/commit.tcl3
-rw-r--r--git-gui/lib/diff.tcl34
-rw-r--r--git-gui/lib/index.tcl2
-rw-r--r--git-gui/lib/mergetool.tcl4
-rw-r--r--git-gui/lib/option.tcl3
-rw-r--r--git-gui/lib/remote.tcl6
-rw-r--r--git-gui/lib/spellcheck.tcl4
-rw-r--r--git-gui/lib/status_bar.tcl1
-rw-r--r--git-gui/macosx/AppMain.tcl11
-rw-r--r--git-gui/macosx/Info.plist2
-rw-r--r--git-gui/po/bg.po2714
-rw-r--r--git-gui/po/de.po38
-rw-r--r--git-gui/po/fr.po4
-rw-r--r--git-gui/po/git-gui.pot2
-rw-r--r--git-gui/po/glossary/bg.po287
-rw-r--r--git-gui/po/glossary/git-gui-glossary.txt29
-rw-r--r--git-gui/po/hu.po2
-rw-r--r--git-gui/po/it.po2
-rw-r--r--git-gui/po/ja.po2
-rw-r--r--git-gui/po/nb.po2
-rwxr-xr-x[-rw-r--r--]git-gui/po/po2msg.sh0
-rw-r--r--git-gui/po/pt_br.po2
-rw-r--r--git-gui/po/ru.po2
-rw-r--r--git-gui/po/sv.po2995
-rw-r--r--git-gui/po/vi.po2690
-rwxr-xr-x[-rw-r--r--]git-gui/windows/git-gui.sh0
-rwxr-xr-xgit-instaweb.sh18
-rwxr-xr-xgit-lost-found.sh33
-rwxr-xr-xgit-merge-one-file.sh63
-rw-r--r--git-mergetool--lib.sh270
-rwxr-xr-xgit-mergetool.sh640
-rwxr-xr-xgit-p4.py (renamed from contrib/fast-import/git-p4)1901
-rw-r--r--git-parse-remote.sh47
-rwxr-xr-xgit-pull.sh245
-rwxr-xr-xgit-quiltimport.sh3
-rw-r--r--git-rebase--am.sh97
-rw-r--r--git-rebase--interactive.sh426
-rw-r--r--git-rebase--merge.sh43
-rwxr-xr-xgit-rebase.sh301
-rwxr-xr-xgit-relink.perl4
-rw-r--r--git-remote-testgit.py265
-rwxr-xr-xgit-remote-testgit.sh147
-rwxr-xr-xgit-request-pull.sh134
-rwxr-xr-xgit-send-email.perl512
-rw-r--r--git-sh-i18n.sh111
-rw-r--r--git-sh-setup.sh202
-rwxr-xr-xgit-stash.sh118
-rwxr-xr-xgit-submodule.sh734
-rwxr-xr-xgit-svn.perl5237
-rwxr-xr-xgit-web--browse.sh23
-rw-r--r--git.c463
-rw-r--r--git.rc22
-rw-r--r--git.spec.in1
-rw-r--r--git_remote_helpers/.gitignore2
-rw-r--r--git_remote_helpers/Makefile39
-rw-r--r--git_remote_helpers/__init__.py16
-rw-r--r--git_remote_helpers/git/__init__.py0
-rw-r--r--git_remote_helpers/git/exporter.py58
-rw-r--r--git_remote_helpers/git/git.py678
-rw-r--r--git_remote_helpers/git/importer.py66
-rw-r--r--git_remote_helpers/git/non_local.py61
-rw-r--r--git_remote_helpers/git/repo.py76
-rw-r--r--git_remote_helpers/setup.cfg3
-rw-r--r--git_remote_helpers/setup.py17
-rw-r--r--git_remote_helpers/util.py275
-rw-r--r--gitk-git/.gitignore2
-rw-r--r--gitk-git/Makefile16
-rwxr-xr-xgitk-git/gitk1709
-rw-r--r--gitk-git/po/bg.po1350
-rw-r--r--gitk-git/po/ca.po1354
-rw-r--r--gitk-git/po/de.po748
-rw-r--r--gitk-git/po/es.po1006
-rw-r--r--gitk-git/po/fr.po817
-rw-r--r--gitk-git/po/hu.po757
-rw-r--r--gitk-git/po/it.po734
-rw-r--r--gitk-git/po/ja.po769
-rwxr-xr-x[-rw-r--r--]gitk-git/po/po2msg.sh0
-rw-r--r--gitk-git/po/pt_br.po739
-rw-r--r--gitk-git/po/ru.po973
-rw-r--r--gitk-git/po/sv.po743
-rw-r--r--gitk-git/po/vi.po1360
-rw-r--r--gitweb/INSTALL13
-rw-r--r--gitweb/README3
-rwxr-xr-xgitweb/gitweb.perl1021
-rw-r--r--gitweb/static/gitweb.css26
-rw-r--r--gitweb/static/js/lib/cookies.js2
-rw-r--r--gpg-interface.c107
-rw-r--r--gpg-interface.h23
-rw-r--r--graph.c53
-rw-r--r--graph.h6
-rw-r--r--grep.c546
-rw-r--r--grep.h41
-rw-r--r--hash.c110
-rw-r--r--hash.h43
-rw-r--r--hashmap.c266
-rw-r--r--hashmap.h98
-rw-r--r--help.c227
-rw-r--r--help.h9
-rw-r--r--hex.c16
-rw-r--r--http-backend.c230
-rw-r--r--http-push.c134
-rw-r--r--http-walker.c25
-rw-r--r--http.c671
-rw-r--r--http.h67
-rw-r--r--ident.c390
-rw-r--r--imap-send.c923
-rw-r--r--khash.h327
-rw-r--r--kwset.c22
-rw-r--r--kwset.h2
-rw-r--r--line-log.c1256
-rw-r--r--line-log.h63
-rw-r--r--line-range.c290
-rw-r--r--line-range.h39
-rw-r--r--list-objects.c48
-rw-r--r--list-objects.h2
-rw-r--r--ll-merge.c75
-rw-r--r--lockfile.c434
-rw-r--r--lockfile.h99
-rw-r--r--log-tree.c472
-rw-r--r--log-tree.h13
-rw-r--r--mailmap.c319
-rw-r--r--mailmap.h4
-rw-r--r--match-trees.c132
-rw-r--r--merge-blobs.c (renamed from merge-file.c)8
-rw-r--r--merge-blobs.h8
-rw-r--r--merge-file.h7
-rw-r--r--merge-recursive.c365
-rw-r--r--merge-recursive.h5
-rw-r--r--merge.c96
-rw-r--r--mergesort.c73
-rw-r--r--mergesort.h17
-rw-r--r--mergetools/bc25
-rw-r--r--mergetools/bc326
-rw-r--r--mergetools/codecompare25
-rw-r--r--mergetools/defaults46
-rw-r--r--mergetools/deltawalker21
-rw-r--r--mergetools/diffmerge14
-rw-r--r--mergetools/emerge1
-rw-r--r--mergetools/gvimdiff1
-rw-r--r--mergetools/gvimdiff21
-rw-r--r--mergetools/gvimdiff31
-rw-r--r--mergetools/kdiff33
-rw-r--r--mergetools/meld9
-rw-r--r--mergetools/p4merge32
-rw-r--r--mergetools/tortoisemerge25
-rw-r--r--mergetools/vimdiff (renamed from mergetools/vim)26
-rw-r--r--mergetools/vimdiff21
-rw-r--r--mergetools/vimdiff31
-rw-r--r--mergetools/winmerge36
-rw-r--r--name-hash.c231
-rw-r--r--notes-cache.c8
-rw-r--r--notes-merge.c131
-rw-r--r--notes-merge.h14
-rw-r--r--notes-utils.c158
-rw-r--r--notes-utils.h37
-rw-r--r--notes.c115
-rw-r--r--notes.h22
-rw-r--r--object.c253
-rw-r--r--object.h76
-rw-r--r--pack-bitmap-write.c549
-rw-r--r--pack-bitmap.c1081
-rw-r--r--pack-bitmap.h57
-rw-r--r--pack-objects.c109
-rw-r--r--pack-objects.h68
-rw-r--r--pack-refs.c149
-rw-r--r--pack-refs.h18
-rw-r--r--pack-revindex.c151
-rw-r--r--pack-revindex.h9
-rw-r--r--pack-write.c40
-rw-r--r--pack.h4
-rw-r--r--pager.c64
-rw-r--r--parse-options-cb.c6
-rw-r--r--parse-options.c176
-rw-r--r--parse-options.h64
-rw-r--r--patch-ids.c8
-rw-r--r--path.c595
-rw-r--r--pathspec.c495
-rw-r--r--pathspec.h102
-rw-r--r--perl/.gitignore1
-rw-r--r--perl/Git.pm344
-rw-r--r--perl/Git/I18N.pm13
-rw-r--r--perl/Git/IndexInfo.pm33
-rw-r--r--perl/Git/SVN.pm2458
-rw-r--r--perl/Git/SVN/Editor.pm605
-rw-r--r--perl/Git/SVN/Fetcher.pm627
-rw-r--r--perl/Git/SVN/GlobSpec.pm61
-rw-r--r--perl/Git/SVN/Log.pm400
-rw-r--r--perl/Git/SVN/Memoize/YAML.pm93
-rw-r--r--perl/Git/SVN/Migration.pm258
-rw-r--r--perl/Git/SVN/Prompt.pm184
-rw-r--r--perl/Git/SVN/Ra.pm704
-rw-r--r--perl/Git/SVN/Utils.pm232
-rw-r--r--perl/Makefile51
-rw-r--r--perl/Makefile.PL26
-rw-r--r--perl/private-Error.pm6
-rw-r--r--pkt-line.c176
-rw-r--r--pkt-line.h71
-rw-r--r--po/.gitignore1
-rw-r--r--po/README134
-rw-r--r--po/TEAMS62
-rw-r--r--po/bg.po11961
-rw-r--r--po/ca.po11518
-rw-r--r--po/de.po12138
-rw-r--r--po/fr.po11930
-rw-r--r--po/git.pot10849
-rw-r--r--po/it.po5367
-rw-r--r--po/pt_PT.po4980
-rw-r--r--po/ru.po10924
-rw-r--r--po/sv.po11808
-rw-r--r--po/vi.po11888
-rw-r--r--po/zh_CN.po11280
-rw-r--r--preload-index.c26
-rw-r--r--pretty.c1025
-rw-r--r--prio-queue.c90
-rw-r--r--prio-queue.h54
-rw-r--r--progress.c132
-rw-r--r--prompt.c27
-rw-r--r--prompt.h1
-rw-r--r--quote.c147
-rw-r--r--quote.h17
-rw-r--r--reachable.c276
-rw-r--r--reachable.h5
-rw-r--r--read-cache.c1075
-rw-r--r--reflog-walk.c53
-rw-r--r--reflog-walk.h6
-rw-r--r--refs.c4140
-rw-r--r--refs.h385
-rw-r--r--remote-curl.c559
-rw-r--r--remote-testsvn.c341
-rw-r--r--remote.c1305
-rw-r--r--remote.h133
-rw-r--r--replace_object.c39
-rw-r--r--rerere.c125
-rw-r--r--rerere.h7
-rw-r--r--resolve-undo.c36
-rw-r--r--resolve-undo.h3
-rw-r--r--revision.c1548
-rw-r--r--revision.h127
-rw-r--r--run-command.c348
-rw-r--r--run-command.h26
-rw-r--r--send-pack.c549
-rw-r--r--send-pack.h7
-rw-r--r--sequencer.c1185
-rw-r--r--sequencer.h50
-rw-r--r--server-info.c128
-rw-r--r--setup.c656
-rw-r--r--sh-i18n--envsubst.c21
-rw-r--r--sha1-array.c2
-rw-r--r--sha1-array.h1
-rw-r--r--sha1-lookup.c49
-rw-r--r--sha1_file.c1740
-rw-r--r--sha1_name.c966
-rw-r--r--shallow.c620
-rw-r--r--shell.c33
-rw-r--r--sideband.c13
-rw-r--r--sideband.h3
-rw-r--r--sigchain.c2
-rw-r--r--split-index.c321
-rw-r--r--split-index.h35
-rw-r--r--strbuf.c372
-rw-r--r--strbuf.h475
-rw-r--r--streaming.c80
-rw-r--r--streaming.h4
-rw-r--r--string-list.c150
-rw-r--r--string-list.h93
-rw-r--r--submodule.c440
-rw-r--r--submodule.h19
-rw-r--r--symlinks.c94
-rw-r--r--t/.gitattributes1
-rwxr-xr-xt/Git-SVN/00compile.t14
-rwxr-xr-xt/Git-SVN/Utils/add_path_to_url.t27
-rwxr-xr-xt/Git-SVN/Utils/can_compress.t11
-rwxr-xr-xt/Git-SVN/Utils/canonicalize_url.t26
-rwxr-xr-xt/Git-SVN/Utils/collapse_dotdot.t23
-rwxr-xr-xt/Git-SVN/Utils/fatal.t34
-rwxr-xr-xt/Git-SVN/Utils/join_paths.t32
-rw-r--r--t/Makefile44
-rw-r--r--t/README251
-rw-r--r--t/annotate-tests.sh642
-rwxr-xr-xt/check-non-portable-shell.pl28
-rw-r--r--t/diff-lib.sh2
-rw-r--r--t/diff-lib/COPYING361
-rw-r--r--t/diff-lib/README46
-rw-r--r--t/gitweb-lib.sh5
-rw-r--r--t/lib-bash.sh17
-rwxr-xr-xt/lib-credential.sh45
-rw-r--r--t/lib-cvs.sh4
-rw-r--r--t/lib-diff-alternative.sh3
-rw-r--r--t/lib-gettext.sh9
-rw-r--r--t/lib-git-daemon.sh87
-rw-r--r--t/lib-git-p4.sh159
-rw-r--r--t/lib-git-svn.sh6
-rwxr-xr-xt/lib-gpg.sh40
-rw-r--r--t/lib-gpg/keyring.gpg142
-rw-r--r--t/lib-gpg/ownertrust4
-rw-r--r--t/lib-gpg/pubring.gpgbin1164 -> 0 bytes
-rw-r--r--t/lib-gpg/random_seedbin600 -> 0 bytes
-rw-r--r--t/lib-gpg/secring.gpgbin1237 -> 0 bytes
-rw-r--r--t/lib-gpg/trustdb.gpgbin1280 -> 0 bytes
-rw-r--r--t/lib-httpd.sh155
-rw-r--r--t/lib-httpd/apache.conf102
-rw-r--r--t/lib-httpd/broken-smart-http.sh10
-rwxr-xr-xt/lib-httpd/error.sh31
-rw-r--r--t/lib-httpd/passwd2
-rw-r--r--t/lib-pack.sh98
-rw-r--r--t/lib-pager.sh2
-rw-r--r--t/lib-prereq-FILEMODE.sh11
-rw-r--r--t/lib-read-tree.sh54
-rw-r--r--t/lib-rebase.sh125
-rwxr-xr-xt/lib-submodule-update.sh680
-rw-r--r--t/lib-t6000.sh106
-rw-r--r--t/lib-terminal.sh39
-rw-r--r--t/perf/.gitignore3
-rw-r--r--t/perf/Makefile15
-rw-r--r--t/perf/README146
-rwxr-xr-xt/perf/aggregate.perl166
-rwxr-xr-xt/perf/min_time.perl21
-rwxr-xr-xt/perf/p0000-perf-lib-sanity.sh55
-rwxr-xr-xt/perf/p0001-rev-list.sh29
-rwxr-xr-xt/perf/p0002-read-cache.sh14
-rwxr-xr-xt/perf/p4000-diff-algorithms.sh29
-rwxr-xr-xt/perf/p4001-diff-no-index.sh22
-rwxr-xr-xt/perf/p4211-line-log.sh34
-rwxr-xr-xt/perf/p5302-pack-index.sh40
-rwxr-xr-xt/perf/p5310-pack-bitmaps.sh60
-rwxr-xr-xt/perf/p7810-grep.sh23
-rw-r--r--t/perf/perf-lib.sh206
-rwxr-xr-xt/perf/run82
-rwxr-xr-xt/t0000-basic.sh1218
-rwxr-xr-xt/t0001-init.sh238
-rwxr-xr-xt/t0002-gitfile.sh20
-rwxr-xr-xt/t0003-attributes.sh121
-rwxr-xr-xt/t0005-signals.sh33
-rwxr-xr-xt/t0006-date.sh5
-rwxr-xr-xt/t0007-git-var.sh49
-rwxr-xr-xt/t0008-ignores.sh844
-rwxr-xr-xt/t0009-prio-queue.sh50
-rwxr-xr-xt/t0010-racy-git.sh4
-rwxr-xr-xt/t0011-hashmap.sh253
-rwxr-xr-xt/t0020-crlf.sh258
-rwxr-xr-xt/t0021-conversion.sh99
-rwxr-xr-xt/t0023-crlf-am.sh2
-rwxr-xr-xt/t0024-crlf-archive.sh10
-rwxr-xr-xt/t0025-crlf-auto.sh122
-rwxr-xr-xt/t0026-eol-config.sh48
-rwxr-xr-xt/t0027-auto-crlf.sh360
-rwxr-xr-xt/t0030-stripspace.sh61
-rwxr-xr-xt/t0040-parse-options.sh155
-rwxr-xr-xt/t0050-filesystem.sh127
-rwxr-xr-xt/t0056-git-C.sh94
-rwxr-xr-xt/t0060-path-utils.sh233
-rwxr-xr-xt/t0061-run-command.sh13
-rwxr-xr-xt/t0062-revision-walking.sh33
-rwxr-xr-xt/t0063-string-list.sh91
-rwxr-xr-xt/t0064-sha1-array.sh94
-rwxr-xr-xt/t0070-fundamental.sh11
-rwxr-xr-xt/t0080-vcs-svn.sh117
-rwxr-xr-xt/t0081-line-buffer.sh2
-rwxr-xr-xt/t0090-cache-tree.sh172
-rwxr-xr-xt/t0100-previous.sh15
-rwxr-xr-xt/t0110-urlmatch-normalization.sh180
-rw-r--r--t/t0110/README9
-rw-r--r--t/t0110/url-11
-rw-r--r--t/t0110/url-101
-rw-r--r--t/t0110/url-111
-rw-r--r--t/t0110/url-21
-rw-r--r--t/t0110/url-31
-rw-r--r--t/t0110/url-41
-rw-r--r--t/t0110/url-51
-rw-r--r--t/t0110/url-61
-rw-r--r--t/t0110/url-71
-rw-r--r--t/t0110/url-81
-rw-r--r--t/t0110/url-91
-rwxr-xr-xt/t0201-gettext-fallbacks.sh12
-rwxr-xr-xt/t0202-gettext-perl.sh4
-rwxr-xr-x[-rw-r--r--]t/t0202/test.pl0
-rwxr-xr-xt/t0204-gettext-reencode-sanity.sh37
-rwxr-xr-xt/t0300-credentials.sh33
-rwxr-xr-xt/t0302-credential-store.sh114
-rwxr-xr-xt/t0303-credential-external.sh69
-rwxr-xr-xt/t1000-read-tree-m-3way.sh4
-rwxr-xr-xt/t1001-read-tree-m-2way.sh20
-rwxr-xr-xt/t1002-read-tree-m-u-2way.sh18
-rwxr-xr-xt/t1003-read-tree-prefix.sh2
-rwxr-xr-xt/t1004-read-tree-m-u-wf.sh15
-rwxr-xr-xt/t1005-read-tree-reset.sh141
-rwxr-xr-xt/t1006-cat-file.sh404
-rwxr-xr-xt/t1007-hash-object.sh19
-rwxr-xr-xt/t1011-read-tree-sparse-checkout.sh24
-rwxr-xr-xt/t1013-loose-object-format.sh66
-rwxr-xr-xt/t1013-read-tree-submodule.sh12
-rw-r--r--t/t1013/objects/14/9cedb5c46929d18e0f118e9fa31927487af3b6bin117 -> 0 bytes
-rw-r--r--t/t1013/objects/16/56f9233d999f61ef23ef390b9c71d75399f435bin17 -> 0 bytes
-rw-r--r--t/t1013/objects/1e/72a6b2c4a577ab0338860fa9fe87f761fc9bbdbin18 -> 0 bytes
-rw-r--r--t/t1013/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99bin19 -> 0 bytes
-rw-r--r--t/t1013/objects/2e/65efe2a145dda7ee51d1741299f848e5bf752ebin10 -> 0 bytes
-rw-r--r--t/t1013/objects/6b/aee0540ea990d9761a3eb9ab183003a71c3696bin181 -> 0 bytes
-rw-r--r--t/t1013/objects/70/e6a83d8dcb26fc8bc0cf702e2ddeb6adca18fdbin26 -> 0 bytes
-rw-r--r--t/t1013/objects/76/e7fa9941f4d5f97f64fea65a2cba436bc79cbb2
-rw-r--r--t/t1013/objects/78/75c6237d3fcdd0ac2f0decc7d3fa6a50b66c09bin139 -> 0 bytes
-rw-r--r--t/t1013/objects/7a/37b887a73791d12d26c0d3e39568a8fb0fa6e8bin54 -> 0 bytes
-rw-r--r--t/t1013/objects/85/df50785d62d3b05ab03d9cbf7e4a0b49449730bin13 -> 0 bytes
-rw-r--r--t/t1013/objects/8d/4e360d6c70fbd72411991c02a09c442cf7a9fabin156 -> 0 bytes
-rw-r--r--t/t1013/objects/95/b1625de3ba8b2214d1e0d0591138aea733f64fbin252 -> 0 bytes
-rw-r--r--t/t1013/objects/9a/e9e86b7bd6cb1472d9373702d8249973da0832bin11 -> 0 bytes
-rw-r--r--t/t1013/objects/bd/15045f6ce8ff75747562173640456a394412c8bin34 -> 0 bytes
-rw-r--r--t/t1013/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391bin9 -> 0 bytes
-rw-r--r--t/t1013/objects/f8/16d5255855ac160652ee5253b06cd8ee14165a1
-rwxr-xr-xt/t1014-read-tree-confusing.sh62
-rwxr-xr-xt/t1020-subdirectory.sh49
-rwxr-xr-xt/t1050-large.sh95
-rwxr-xr-xt/t1060-object-corruption.sh104
-rwxr-xr-xt/t1090-sparse-checkout-scope.sh52
-rwxr-xr-xt/t1100-commit-tree-options.sh18
-rwxr-xr-xt/t1200-tutorial.sh4
-rwxr-xr-xt/t1300-repo-config.sh523
-rwxr-xr-xt/t1301-shared-repo.sh31
-rwxr-xr-xt/t1302-repo-version.sh2
-rwxr-xr-xt/t1303-wacky-config.sh84
-rwxr-xr-xt/t1304-default-acl.sh21
-rwxr-xr-xt/t1305-config-include.sh172
-rwxr-xr-xt/t1306-xdg-files.sh197
-rwxr-xr-xt/t1307-config-blob.sh79
-rwxr-xr-xt/t1308-config-set.sh221
-rwxr-xr-xt/t1400-update-ref.sh813
-rwxr-xr-xt/t1401-symbolic-ref.sh30
-rwxr-xr-xt/t1402-check-ref-format.sh47
-rwxr-xr-xt/t1403-show-ref.sh167
-rwxr-xr-xt/t1404-update-ref-df-conflicts.sh107
-rwxr-xr-xt/t1410-reflog.sh98
-rwxr-xr-xt/t1411-reflog-show.sh83
-rwxr-xr-xt/t1413-reflog-detach.sh70
-rwxr-xr-xt/t1430-bad-ref-name.sh215
-rwxr-xr-xt/t1450-fsck.sh227
-rwxr-xr-xt/t1501-worktree.sh79
-rwxr-xr-xt/t1502-rev-parse-parseopt.sh163
-rwxr-xr-xt/t1503-rev-parse-verify.sh37
-rwxr-xr-xt/t1504-ceiling-dirs.sh17
-rwxr-xr-xt/t1505-rev-parse-last.sh18
-rwxr-xr-xt/t1506-rev-parse-diagnosis.sh49
-rwxr-xr-xt/t1507-rev-parse-upstream.sh119
-rwxr-xr-xt/t1508-at-combinations.sh87
-rwxr-xr-xt/t1509-root-worktree.sh25
-rwxr-xr-xt/t1509/prepare-chroot.sh40
-rwxr-xr-xt/t1510-repo-setup.sh46
-rwxr-xr-xt/t1511-rev-parse-caret.sh7
-rwxr-xr-xt/t1512-rev-parse-disambiguation.sh294
-rwxr-xr-xt/t1513-rev-parse-prefix.sh96
-rwxr-xr-xt/t1514-rev-parse-push.sh63
-rwxr-xr-xt/t1600-index.sh76
-rwxr-xr-xt/t1700-split-index.sh203
-rwxr-xr-xt/t2001-checkout-cache-clash.sh7
-rwxr-xr-xt/t2003-checkout-cache-mkdir.sh169
-rwxr-xr-xt/t2004-checkout-cache-temp.sh401
-rwxr-xr-xt/t2006-checkout-index-basic.sh4
-rwxr-xr-xt/t2007-checkout-symlink.sh12
-rwxr-xr-xt/t2008-checkout-subdir.sh14
-rwxr-xr-xt/t2010-checkout-ambiguous.sh6
-rwxr-xr-xt/t2012-checkout-last.sh34
-rwxr-xr-xt/t2013-checkout-submodule.sh7
-rwxr-xr-xt/t2015-checkout-unborn.sh11
-rwxr-xr-xt/t2017-checkout-orphan.sh6
-rwxr-xr-xt/t2019-checkout-ambiguous-ref.sh26
-rwxr-xr-xt/t2020-checkout-detach.sh24
-rwxr-xr-xt/t2021-checkout-overwrite.sh12
-rwxr-xr-xt/t2022-checkout-paths.sh39
-rwxr-xr-xt/t2024-checkout-dwim.sh206
-rwxr-xr-xt/t2025-worktree-add.sh162
-rwxr-xr-xt/t2026-prune-linked-checkouts.sh96
-rwxr-xr-xt/t2030-unresolve-info.sh27
-rwxr-xr-xt/t2104-update-index-skip-worktree.sh4
-rwxr-xr-xt/t2107-update-index-basic.sh55
-rwxr-xr-xt/t2200-add-update.sh22
-rwxr-xr-xt/t2202-add-addremove.sh10
-rwxr-xr-xt/t2203-add-intent.sh20
-rwxr-xr-xt/t3001-ls-files-others-exclude.sh95
-rwxr-xr-xt/t3004-ls-files-basic.sh21
-rwxr-xr-xt/t3006-ls-files-long.sh39
-rwxr-xr-xt/t3010-ls-files-killed-modified.sh157
-rwxr-xr-xt/t3020-ls-files-error-unmatch.sh2
-rwxr-xr-xt/t3030-merge-recursive.sh109
-rwxr-xr-xt/t3031-merge-criscross.sh2
-rwxr-xr-xt/t3032-merge-recursive-options.sh6
-rwxr-xr-xt/t3033-merge-toplevel.sh136
-rwxr-xr-xt/t3060-ls-files-with-tree.sh14
-rwxr-xr-xt/t3070-wildmatch.sh268
-rwxr-xr-xt/t3100-ls-tree-restrict.sh42
-rwxr-xr-xt/t3102-ls-tree-wildcards.sh22
-rwxr-xr-xt/t3200-branch.sh653
-rwxr-xr-xt/t3201-branch-contains.sh64
-rwxr-xr-xt/t3202-show-branch-octopus.sh2
-rwxr-xr-xt/t3203-branch-output.sh43
-rwxr-xr-xt/t3210-pack-refs.sh88
-rwxr-xr-xt/t3211-peel-ref.sh73
-rwxr-xr-xt/t3300-funny-names.sh358
-rwxr-xr-xt/t3301-notes.sh1364
-rwxr-xr-xt/t3302-notes-index-expensive.sh130
-rwxr-xr-xt/t3305-notes-fanout.sh9
-rwxr-xr-xt/t3310-notes-merge-manual-resolve.sh27
-rwxr-xr-xt/t3400-rebase.sh120
-rwxr-xr-xt/t3401-rebase-partial.sh45
-rwxr-xr-xt/t3402-rebase-merge.sh17
-rwxr-xr-xt/t3403-rebase-skip.sh7
-rwxr-xr-xt/t3404-rebase-interactive.sh517
-rwxr-xr-xt/t3405-rebase-malformed.sh32
-rwxr-xr-xt/t3406-rebase-message.sh62
-rwxr-xr-xt/t3409-rebase-preserve-merges.sh62
-rwxr-xr-xt/t3411-rebase-preserve-around-merges.sh1
-rwxr-xr-xt/t3412-rebase-root.sh7
-rwxr-xr-xt/t3413-rebase-hook.sh6
-rwxr-xr-xt/t3415-rebase-autosquash.sh73
-rwxr-xr-xt/t3419-rebase-patch-id.sh25
-rwxr-xr-xt/t3420-rebase-autostash.sh185
-rwxr-xr-xt/t3421-rebase-topology-linear.sh350
-rwxr-xr-xt/t3425-rebase-topology-merges.sh258
-rwxr-xr-xt/t3426-rebase-submodule.sh46
-rwxr-xr-xt/t3501-revert-cherry-pick.sh45
-rwxr-xr-xt/t3505-cherry-pick-empty.sh74
-rwxr-xr-xt/t3506-cherry-pick-ff.sh8
-rwxr-xr-xt/t3507-cherry-pick-conflict.sh78
-rwxr-xr-xt/t3508-cherry-pick-many-commits.sh65
-rwxr-xr-xt/t3509-cherry-pick-merge-df.sh14
-rwxr-xr-xt/t3510-cherry-pick-sequence.sh14
-rwxr-xr-xt/t3511-cherry-pick-x.sh247
-rwxr-xr-xt/t3512-cherry-pick-submodule.sh13
-rwxr-xr-xt/t3513-revert-submodule.sh32
-rwxr-xr-xt/t3600-rm.sh675
-rwxr-xr-xt/t3700-add.sh42
-rwxr-xr-xt/t3701-add-interactive.sh132
-rwxr-xr-xt/t3702-add-edit.sh7
-rwxr-xr-xt/t3900-i18n-commit.sh42
-rw-r--r--t/t3900/UTF-16.txtbin0 -> 146 bytes
-rwxr-xr-xt/t3901-i18n-patch.sh27
-rwxr-xr-xt/t3902-quoted.sh31
-rwxr-xr-xt/t3903-stash.sh158
-rwxr-xr-xt/t3904-stash-patch.sh43
-rwxr-xr-xt/t3905-stash-include-untracked.sh4
-rwxr-xr-xt/t3906-stash-submodule.sh24
-rwxr-xr-xt/t3910-mac-os-precompose.sh163
-rwxr-xr-xt/t4000-diff-format.sh48
-rwxr-xr-xt/t4001-diff-rename.sh54
-rwxr-xr-xt/t4003-diff-rename-1.sh4
-rwxr-xr-xt/t4005-diff-rename-2.sh6
-rwxr-xr-xt/t4006-diff-mode.sh65
-rwxr-xr-xt/t4007-rename-3.sh2
-rwxr-xr-xt/t4008-diff-break-rewrite.sh292
-rwxr-xr-xt/t4009-diff-rename-4.sh6
-rwxr-xr-xt/t4010-diff-pathspec.sh40
-rwxr-xr-xt/t4011-diff-symlink.sh206
-rwxr-xr-xt/t4012-diff-binary.sh146
-rwxr-xr-xt/t4013-diff-various.sh23
-rw-r--r--t/t4013/diff.diff-tree_--cc_--patch-with-stat_--summary_master4
-rw-r--r--t/t4013/diff.diff-tree_--cc_--patch-with-stat_--summary_side6
-rw-r--r--t/t4013/diff.diff-tree_--cc_--patch-with-stat_master4
-rw-r--r--t/t4013/diff.diff-tree_--cc_--stat_--summary_master4
-rw-r--r--t/t4013/diff.diff-tree_--cc_--stat_--summary_side6
-rw-r--r--t/t4013/diff.diff-tree_--cc_--stat_master4
-rw-r--r--t/t4013/diff.diff-tree_--pretty=oneline_--root_--patch-with-stat_initial6
-rw-r--r--t/t4013/diff.diff-tree_--pretty_--patch-with-stat_side6
-rw-r--r--t/t4013/diff.diff-tree_--pretty_--root_--patch-with-stat_initial6
-rw-r--r--t/t4013/diff.diff-tree_--pretty_--root_--stat_--summary_initial6
-rw-r--r--t/t4013/diff.diff-tree_--pretty_--root_--stat_initial6
-rw-r--r--t/t4013/diff.diff-tree_--root_--patch-with-stat_initial6
-rw-r--r--t/t4013/diff.diff-tree_-c_--stat_--summary_master4
-rw-r--r--t/t4013/diff.diff-tree_-c_--stat_--summary_side6
-rw-r--r--t/t4013/diff.diff-tree_-c_--stat_master4
-rw-r--r--t/t4013/diff.diff_--patch-with-stat_-r_initial..side6
-rw-r--r--t/t4013/diff.diff_--patch-with-stat_initial..side6
-rw-r--r--t/t4013/diff.diff_--stat_initial..side6
-rw-r--r--t/t4013/diff.diff_-r_--stat_initial..side6
-rw-r--r--t/t4013/diff.format-patch_--attach_--stdout_--suffix=.diff_initial..side6
-rw-r--r--t/t4013/diff.format-patch_--attach_--stdout_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--attach_--stdout_initial..master^10
-rw-r--r--t/t4013/diff.format-patch_--attach_--stdout_initial..side6
-rw-r--r--t/t4013/diff.format-patch_--inline_--stdout_--numbered-files_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--inline_--stdout_--subject-prefix=TESTCASE_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--inline_--stdout_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--inline_--stdout_initial..master^10
-rw-r--r--t/t4013/diff.format-patch_--inline_--stdout_initial..master^^6
-rw-r--r--t/t4013/diff.format-patch_--inline_--stdout_initial..side6
-rw-r--r--t/t4013/diff.format-patch_--stdout_--cover-letter_-n_initial..master^18
-rw-r--r--t/t4013/diff.format-patch_--stdout_--no-numbered_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--stdout_--numbered_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--stdout_initial..master16
-rw-r--r--t/t4013/diff.format-patch_--stdout_initial..master^10
-rw-r--r--t/t4013/diff.format-patch_--stdout_initial..side6
-rw-r--r--t/t4013/diff.log_--decorate=full_--all2
-rw-r--r--t/t4013/diff.log_--decorate_--all2
-rw-r--r--t/t4013/diff.log_--patch-with-stat_--summary_master_--_dir_6
-rw-r--r--t/t4013/diff.log_--patch-with-stat_master16
-rw-r--r--t/t4013/diff.log_--patch-with-stat_master_--_dir_6
-rw-r--r--t/t4013/diff.log_--root_--cc_--patch-with-stat_--summary_master26
-rw-r--r--t/t4013/diff.log_--root_--patch-with-stat_--summary_master22
-rw-r--r--t/t4013/diff.log_--root_--patch-with-stat_master22
-rw-r--r--t/t4013/diff.log_--root_-c_--patch-with-stat_--summary_master26
-rw-r--r--t/t4013/diff.show_--patch-with-stat_--summary_side6
-rw-r--r--t/t4013/diff.show_--patch-with-stat_side6
-rw-r--r--t/t4013/diff.show_--stat_--summary_side6
-rw-r--r--t/t4013/diff.show_--stat_side6
-rw-r--r--t/t4013/diff.whatchanged_--patch-with-stat_--summary_master_--_dir_6
-rw-r--r--t/t4013/diff.whatchanged_--patch-with-stat_master16
-rw-r--r--t/t4013/diff.whatchanged_--patch-with-stat_master_--_dir_6
-rw-r--r--t/t4013/diff.whatchanged_--root_--cc_--patch-with-stat_--summary_master26
-rw-r--r--t/t4013/diff.whatchanged_--root_--patch-with-stat_--summary_master22
-rw-r--r--t/t4013/diff.whatchanged_--root_--patch-with-stat_master22
-rw-r--r--t/t4013/diff.whatchanged_--root_-c_--patch-with-stat_--summary_master26
-rwxr-xr-xt/t4014-format-patch.sh765
-rwxr-xr-xt/t4015-diff-whitespace.sh876
-rwxr-xr-xt/t4016-diff-quote.sh53
-rwxr-xr-xt/t4018-diff-funcname.sh235
-rw-r--r--t/t4018/README18
-rw-r--r--t/t4018/cpp-c++-function4
-rw-r--r--t/t4018/cpp-class-constructor4
-rw-r--r--t/t4018/cpp-class-constructor-mem-init5
-rw-r--r--t/t4018/cpp-class-definition4
-rw-r--r--t/t4018/cpp-class-definition-derived5
-rw-r--r--t/t4018/cpp-class-destructor4
-rw-r--r--t/t4018/cpp-function-returning-global-type4
-rw-r--r--t/t4018/cpp-function-returning-nested5
-rw-r--r--t/t4018/cpp-function-returning-pointer4
-rw-r--r--t/t4018/cpp-function-returning-reference4
-rw-r--r--t/t4018/cpp-gnu-style-function5
-rw-r--r--t/t4018/cpp-namespace-definition4
-rw-r--r--t/t4018/cpp-operator-definition4
-rw-r--r--t/t4018/cpp-skip-access-specifiers8
-rw-r--r--t/t4018/cpp-skip-comment-block9
-rw-r--r--t/t4018/cpp-skip-labels8
-rw-r--r--t/t4018/cpp-struct-definition9
-rw-r--r--t/t4018/cpp-struct-single-line7
-rw-r--r--t/t4018/cpp-template-function-definition4
-rw-r--r--t/t4018/cpp-union-definition4
-rw-r--r--t/t4018/cpp-void-c-function4
-rw-r--r--t/t4018/custom1-pattern17
-rw-r--r--t/t4018/custom2-match-to-end-of-line8
-rw-r--r--t/t4018/custom3-alternation-in-pattern17
-rw-r--r--t/t4018/java-class-member-function8
-rw-r--r--t/t4018/perl-skip-end-of-heredoc8
-rw-r--r--t/t4018/perl-skip-forward-decl10
-rw-r--r--t/t4018/perl-skip-sub-in-pod18
-rw-r--r--t/t4018/perl-sub-definition4
-rw-r--r--t/t4018/perl-sub-definition-kr-brace4
-rwxr-xr-xt/t4020-diff-external.sh102
-rwxr-xr-xt/t4022-diff-rewrite.sh35
-rwxr-xr-xt/t4023-diff-rename-typechange.sh31
-rwxr-xr-xt/t4024-diff-optimize-common.sh2
-rwxr-xr-xt/t4026-color.sh33
-rwxr-xr-xt/t4030-diff-textconv.sh66
-rwxr-xr-xt/t4031-diff-rewrite-binary.sh12
-rwxr-xr-xt/t4034-diff-words.sh42
-rw-r--r--t/t4034/ada/expect27
-rw-r--r--t/t4034/ada/post13
-rw-r--r--t/t4034/ada/pre13
-rwxr-xr-xt/t4035-diff-quiet.sh145
-rwxr-xr-xt/t4036-format-patch-signer-mime.sh2
-rwxr-xr-xt/t4038-diff-combined.sh346
-rwxr-xr-xt/t4039-diff-assume-unchanged.sh11
-rwxr-xr-xt/t4041-diff-submodule-option.sh555
-rwxr-xr-xt/t4042-diff-textconv-caching.sh8
-rwxr-xr-xt/t4043-diff-rename-binary.sh8
-rwxr-xr-xt/t4045-diff-relative.sh18
-rwxr-xr-xt/t4046-diff-unmerged.sh8
-rwxr-xr-xt/t4047-diff-dirstat.sh85
-rwxr-xr-xt/t4049-diff-stat-count.sh57
-rwxr-xr-xt/t4052-stat-output.sh336
-rwxr-xr-xt/t4053-diff-no-index.sh92
-rwxr-xr-xt/t4054-diff-bogus-tree.sh83
-rwxr-xr-xt/t4055-diff-context.sh92
-rwxr-xr-xt/t4056-diff-order.sh121
-rwxr-xr-xt/t4057-diff-combined-paths.sh106
-rwxr-xr-xt/t4058-diff-duplicates.sh79
-rwxr-xr-xt/t4100-apply-stat.sh4
-rwxr-xr-xt/t4102-apply-rename.sh3
-rwxr-xr-xt/t4103-apply-binary.sh54
-rwxr-xr-xt/t4104-apply-boundary.sh32
-rwxr-xr-xt/t4107-apply-ignore-whitespace.sh12
-rwxr-xr-xt/t4108-apply-threeway.sh157
-rwxr-xr-xt/t4111-apply-subdir.sh14
-rwxr-xr-xt/t4114-apply-typechange.sh29
-rwxr-xr-xt/t4115-apply-symlink.sh10
-rwxr-xr-xt/t4116-apply-reverse.sh16
-rwxr-xr-xt/t4117-apply-reject.sh74
-rwxr-xr-xt/t4119-apply-config.sh19
-rwxr-xr-xt/t4120-apply-popt.sh5
-rwxr-xr-xt/t4122-apply-symlink-inside.sh125
-rwxr-xr-xt/t4124-apply-ws-rule.sh44
-rwxr-xr-xt/t4129-apply-samemode.sh1
-rwxr-xr-xt/t4133-apply-filenames.sh4
-rwxr-xr-xt/t4136-apply-check.sh13
-rwxr-xr-xt/t4137-apply-submodule.sh20
-rwxr-xr-xt/t4138-apply-ws-expansion.sh121
-rwxr-xr-xt/t4139-apply-escape.sh141
-rwxr-xr-xt/t4150-am.sh106
-rwxr-xr-xt/t4151-am-abort.sh83
-rwxr-xr-xt/t4200-rerere.sh6
-rwxr-xr-xt/t4201-shortlog.sh52
-rwxr-xr-xt/t4202-log.sh465
-rwxr-xr-xt/t4203-mailmap.sh240
-rwxr-xr-xt/t4204-patch-id.sh106
-rwxr-xr-xt/t4205-log-pretty-formats.sh409
-rwxr-xr-xt/t4207-log-decoration-colors.sh16
-rwxr-xr-xt/t4208-log-magic-pathspec.sh32
-rwxr-xr-xt/t4209-log-pickaxe.sh109
-rwxr-xr-xt/t4210-log-i18n.sh58
-rwxr-xr-xt/t4211-line-log.sh102
-rw-r--r--t/t4211/expect.beginning-of-file43
-rw-r--r--t/t4211/expect.end-of-file62
-rw-r--r--t/t4211/expect.move-support-f80
-rw-r--r--t/t4211/expect.multiple104
-rw-r--r--t/t4211/expect.multiple-overlapping187
-rw-r--r--t/t4211/expect.multiple-superset187
-rw-r--r--t/t4211/expect.parallel-change-f-to-main160
-rw-r--r--t/t4211/expect.simple-f59
-rw-r--r--t/t4211/expect.simple-f-to-main100
-rw-r--r--t/t4211/expect.simple-main68
-rw-r--r--t/t4211/expect.simple-main-to-end70
-rw-r--r--t/t4211/expect.two-ranges102
-rw-r--r--t/t4211/expect.vanishes-early39
-rw-r--r--t/t4211/history.export406
-rwxr-xr-xt/t4212-log-corrupt.sh90
-rwxr-xr-xt/t4253-am-keep-cr-dos.sh4
-rwxr-xr-xt/t4254-am-corrupt.sh36
-rwxr-xr-xt/t4255-am-submodule.sh93
-rwxr-xr-xt/t4300-merge-tree.sh114
-rwxr-xr-xt/t5000-tar-tree.sh327
-rw-r--r--t/t5000/pax.tarbin0 -> 10240 bytes
-rwxr-xr-xt/t5001-archive-attr.sh12
-rwxr-xr-xt/t5002-archive-attr-pattern.sh84
-rwxr-xr-xt/t5003-archive-zip.sh172
-rw-r--r--t/t5003/infozip-symlinks.zipbin0 -> 328 bytes
-rwxr-xr-xt/t5004-archive-corner-cases.sh158
-rw-r--r--t/t5004/empty-with-pax-header.tarbin0 -> 10240 bytes
-rw-r--r--t/t5004/empty.zipbin0 -> 62 bytes
-rwxr-xr-xt/t5100-mailinfo.sh26
-rw-r--r--t/t5100/embed-from.expect5
-rw-r--r--t/t5100/embed-from.in13
-rw-r--r--t/t5100/info0012--message-id5
-rw-r--r--t/t5100/info00175
-rw-r--r--t/t5100/msg0012--message-id8
-rw-r--r--t/t5100/msg00172
-rw-r--r--t/t5100/patch00012
-rw-r--r--t/t5100/patch00022
-rw-r--r--t/t5100/patch00032
-rw-r--r--t/t5100/patch00054
-rw-r--r--t/t5100/patch00062
-rw-r--r--t/t5100/patch00102
-rw-r--r--t/t5100/patch00112
-rw-r--r--t/t5100/patch0012--message-id30
-rw-r--r--t/t5100/patch00142
-rw-r--r--t/t5100/patch0014--scissors2
-rw-r--r--t/t5100/patch00176
-rw-r--r--t/t5100/quoted-from.expect3
-rw-r--r--t/t5100/quoted-from.in10
-rw-r--r--t/t5100/sample.mbox34
-rwxr-xr-xt/t5150-request-pull.sh32
-rwxr-xr-xt/t5300-pack-object.sh21
-rwxr-xr-xt/t5302-pack-index.sh27
-rwxr-xr-xt/t5303-pack-corruption-resilience.sh29
-rwxr-xr-xt/t5304-prune.sh125
-rwxr-xr-xt/t5305-include-tag.sh4
-rwxr-xr-xt/t5308-pack-detect-duplicates.sh80
-rwxr-xr-xt/t5309-pack-delta-cycles.sh77
-rwxr-xr-xt/t5310-pack-bitmaps.sh188
-rwxr-xr-xt/t5311-pack-bitmaps-shallow.sh39
-rwxr-xr-xt/t5312-prune-corruption.sh114
-rwxr-xr-xt/t5400-send-pack.sh51
-rwxr-xr-xt/t5401-update-hooks.sh13
-rwxr-xr-xt/t5403-post-checkout-hook.sh8
-rwxr-xr-xt/t5404-tracking-branches.sh2
-rwxr-xr-xt/t5407-post-rewrite-hook.sh93
-rwxr-xr-xt/t5408-send-pack-stdin.sh92
-rwxr-xr-xt/t5500-fetch-pack.sh395
-rwxr-xr-xt/t5503-tagfollow.sh68
-rwxr-xr-xt/t5504-fetch-receive-strict.sh2
-rwxr-xr-xt/t5505-remote.sh901
-rwxr-xr-xt/t5510-fetch.sh337
-rwxr-xr-xt/t5511-refspec.sh6
-rwxr-xr-xt/t5512-ls-remote.sh34
-rwxr-xr-xt/t5514-fetch-multiple.sh34
-rw-r--r--t/t5515/fetch.br-unconfig_--tags_.._.git1
-rw-r--r--t/t5515/fetch.master_--tags_.._.git1
-rwxr-xr-xt/t5516-fetch-push.sh1055
-rwxr-xr-xt/t5517-push-mirror.sh2
-rwxr-xr-xt/t5519-push-alternates.sh12
-rwxr-xr-xt/t5520-pull.sh347
-rwxr-xr-xt/t5521-pull-options.sh68
-rwxr-xr-xt/t5524-pull-msg.sh17
-rwxr-xr-xt/t5525-fetch-tagopt.sh23
-rwxr-xr-xt/t5526-fetch-submodules.sh10
-rwxr-xr-xt/t5527-fetch-odd-refs.sh33
-rwxr-xr-xt/t5528-push-default.sh203
-rwxr-xr-xt/t5529-push-errors.sh48
-rwxr-xr-xt/t5530-upload-pack-error.sh7
-rwxr-xr-xt/t5531-deep-submodule-push.sh98
-rwxr-xr-xt/t5532-fetch-proxy.sh2
-rwxr-xr-xt/t5533-push-cas.sh189
-rwxr-xr-xt/t5534-push-signed.sh171
-rwxr-xr-xt/t5535-fetch-push-symref.sh42
-rwxr-xr-xt/t5536-fetch-conflicts.sh100
-rwxr-xr-xt/t5537-fetch-shallow.sh189
-rwxr-xr-xt/t5538-push-shallow.sh123
-rwxr-xr-xt/t5539-fetch-http-shallow.sh77
-rwxr-xr-xt/t5540-http-push-webdav.sh (renamed from t/t5540-http-push.sh)20
-rwxr-xr-xt/t5541-http-push-smart.sh (renamed from t/t5541-http-push.sh)174
-rwxr-xr-xt/t5542-push-http-shallow.sh94
-rwxr-xr-xt/t5543-atomic-push.sh194
-rwxr-xr-xt/t5550-http-fetch-dumb.sh254
-rwxr-xr-xt/t5550-http-fetch.sh207
-rwxr-xr-xt/t5551-http-fetch-smart.sh286
-rwxr-xr-xt/t5551-http-fetch.sh113
-rwxr-xr-xt/t5560-http-backend-noserver.sh10
-rwxr-xr-xt/t5561-http-backend.sh7
-rwxr-xr-xt/t5570-git-daemon.sh172
-rwxr-xr-xt/t5571-pre-push-hook.sh131
-rwxr-xr-xt/t5572-pull-submodule.sh45
-rwxr-xr-xt/t5600-clone-fail-cleanup.sh12
-rwxr-xr-xt/t5601-clone.sh258
-rwxr-xr-xt/t5602-clone-remote-exec.sh13
-rwxr-xr-xt/t5603-clone-dirname.sh106
-rwxr-xr-xt/t5700-clone-reference.sh76
-rwxr-xr-xt/t5701-clone-local.sh93
-rwxr-xr-xt/t5702-clone-options.sh10
-rwxr-xr-xt/t5704-bundle.sh15
-rwxr-xr-xt/t5705-clone-2gb.sh2
-rwxr-xr-xt/t5706-clone-branch.sh16
-rwxr-xr-xt/t5709-clone-refspec.sh156
-rwxr-xr-xt/t5710-info-alternate.sh4
-rwxr-xr-xt/t5800-remote-helpers.sh135
-rwxr-xr-xt/t5801-remote-helpers.sh308
-rwxr-xr-xt/t5802-connect-helper.sh72
-rwxr-xr-xt/t6000-rev-list-misc.sh54
-rwxr-xr-xt/t6002-rev-list-bisect.sh84
-rwxr-xr-xt/t6003-rev-list-topo-order.sh101
-rwxr-xr-xt/t6006-rev-list-format.sh377
-rwxr-xr-xt/t6009-rev-list-parent.sh13
-rwxr-xr-xt/t6010-merge-base.sh67
-rwxr-xr-xt/t6012-rev-list-simplify.sh73
-rwxr-xr-xt/t6014-rev-list-all.sh4
-rwxr-xr-xt/t6018-rev-list-glob.sh54
-rwxr-xr-xt/t6019-rev-list-ancestry-path.sh48
-rwxr-xr-xt/t6020-merge-df.sh2
-rwxr-xr-xt/t6021-merge-criss-cross.sh8
-rwxr-xr-xt/t6022-merge-rename.sh52
-rwxr-xr-xt/t6023-merge-file.sh94
-rwxr-xr-xt/t6026-merge-attr.sh20
-rwxr-xr-xt/t6028-merge-up-to-date.sh17
-rwxr-xr-xt/t6030-bisect-porcelain.sh148
-rwxr-xr-xt/t6031-merge-recursive.sh2
-rwxr-xr-xt/t6032-merge-large-rename.sh8
-rwxr-xr-xt/t6034-merge-rename-nocruft.sh66
-rwxr-xr-xt/t6035-merge-dir-to-symlink.sh73
-rwxr-xr-xt/t6036-recursive-corner-cases.sh13
-rwxr-xr-xt/t6037-merge-ours-theirs.sh14
-rwxr-xr-xt/t6038-merge-text-auto.sh54
-rwxr-xr-xt/t6039-merge-ignorecase.sh53
-rwxr-xr-xt/t6040-tracking-info.sh126
-rwxr-xr-xt/t6041-bisect-submodule.sh32
-rwxr-xr-xt/t6042-merge-rename-corner-cases.sh4
-rwxr-xr-xt/t6050-replace.sh238
-rwxr-xr-xt/t6101-rev-parse-parents.sh127
-rwxr-xr-xt/t6111-rev-list-treesame.sh193
-rwxr-xr-xt/t6120-describe.sh27
-rwxr-xr-xt/t6130-pathspec-noglob.sh162
-rwxr-xr-xt/t6131-pathspec-icase.sh109
-rwxr-xr-xt/t6132-pathspec-exclude.sh184
-rwxr-xr-xt/t6200-fmt-merge-msg.sh147
-rwxr-xr-xt/t6300-for-each-ref.sh103
-rwxr-xr-xt/t6301-for-each-ref-errors.sh56
-rwxr-xr-xt/t6500-gc.sh9
-rwxr-xr-xt/t6501-freshen-objects.sh147
-rwxr-xr-xt/t7001-mv.sh242
-rwxr-xr-xt/t7003-filter-branch.sh43
-rwxr-xr-xt/t7004-tag.sh251
-rwxr-xr-xt/t7006-pager.sh41
-rwxr-xr-xt/t7007-show.sh111
-rwxr-xr-xt/t7008-grep-binary.sh53
-rwxr-xr-xt/t7009-filter-branch-null-sha1.sh49
-rwxr-xr-xt/t7011-skip-worktree-reading.sh4
-rwxr-xr-xt/t7060-wtstatus.sh114
-rwxr-xr-xt/t7061-wtstatus-ignore.sh274
-rwxr-xr-xt/t7062-wtstatus-ignorecase.sh20
-rwxr-xr-xt/t7063-status-untracked-cache.sh357
-rwxr-xr-xt/t7101-reset-empty-subdirs.sh (renamed from t/t7101-reset.sh)0
-rwxr-xr-xt/t7102-reset.sh139
-rwxr-xr-xt/t7104-reset-hard.sh (renamed from t/t7104-reset.sh)2
-rwxr-xr-xt/t7105-reset-patch.sh10
-rwxr-xr-xt/t7106-reset-unborn-branch.sh70
-rwxr-xr-xt/t7112-reset-submodule.sh14
-rwxr-xr-xt/t7201-co.sh43
-rwxr-xr-xt/t7300-clean.sh64
-rwxr-xr-xt/t7301-clean-interactive.sh475
-rwxr-xr-xt/t7400-submodule-basic.sh534
-rwxr-xr-xt/t7401-submodule-summary.sh146
-rwxr-xr-xt/t7402-submodule-rebase.sh30
-rwxr-xr-xt/t7403-submodule-sync.sh341
-rwxr-xr-xt/t7406-submodule-update.sh181
-rwxr-xr-xt/t7407-submodule-foreach.sh35
-rwxr-xr-xt/t7408-submodule-reference.sh8
-rwxr-xr-xt/t7409-submodule-detached-worktree.sh84
-rwxr-xr-xt/t7410-submodule-checkout-to.sh50
-rwxr-xr-xt/t7500-commit.sh23
-rwxr-xr-xt/t7500/add-content-and-comment5
-rwxr-xr-xt/t7501-commit.sh120
-rwxr-xr-xt/t7502-commit.sh316
-rwxr-xr-xt/t7503-pre-commit-hook.sh18
-rwxr-xr-xt/t7505-prepare-commit-msg-hook.sh43
-rwxr-xr-xt/t7507-commit-verbose.sh28
-rwxr-xr-xt/t7508-status.sh1239
-rwxr-xr-xt/t7509-commit.sh1
-rwxr-xr-xt/t7510-signed-commit.sh114
-rwxr-xr-xt/t7512-status-help.sh748
-rwxr-xr-xt/t7513-interpret-trailers.sh922
-rwxr-xr-xt/t7514-commit-patch.sh34
-rwxr-xr-xt/t7515-status-symlinks.sh43
-rwxr-xr-xt/t7516-commit-races.sh30
-rwxr-xr-xt/t7600-merge.sh87
-rwxr-xr-xt/t7601-merge-pull-config.sh31
-rwxr-xr-xt/t7602-merge-octopus-many.sh26
-rwxr-xr-xt/t7603-merge-reduce-heads.sh50
-rwxr-xr-xt/t7607-merge-overwrite.sh14
-rwxr-xr-xt/t7610-mergetool.sh890
-rwxr-xr-xt/t7612-merge-verify-signatures.sh61
-rwxr-xr-xt/t7613-merge-submodule.sh19
-rwxr-xr-xt/t7700-repack.sh34
-rwxr-xr-xt/t7701-repack-unpack-unreachable.sh29
-rwxr-xr-xt/t7702-repack-cyclic-alternate.sh24
-rwxr-xr-xt/t7800-difftool.sh544
-rwxr-xr-xt/t7810-grep.sh471
-rwxr-xr-xt/t7811-grep-open.sh5
-rwxr-xr-xt/t8001-annotate.sh6
-rwxr-xr-xt/t8002-blame.sh74
-rwxr-xr-xt/t8003-blame-corner-cases.sh35
-rwxr-xr-xt/t8004-blame-with-conflicts.sh2
-rwxr-xr-xt/t8005-blame-i18n.sh8
-rwxr-xr-xt/t8006-blame-textconv.sh16
-rwxr-xr-xt/t8007-cat-file-textconv.sh30
-rwxr-xr-xt/t8008-blame-formats.sh2
-rwxr-xr-xt/t9001-send-email.sh949
-rwxr-xr-xt/t9002-column.sh180
-rwxr-xr-xt/t9010-svn-fe.sh357
-rwxr-xr-xt/t9011-svn-da.sh248
-rwxr-xr-xt/t9020-remote-svn.sh89
-rwxr-xr-xt/t9100-git-svn-basic.sh53
-rwxr-xr-xt/t9104-git-svn-follow-parent.sh10
-rwxr-xr-xt/t9107-git-svn-migrate.sh60
-rwxr-xr-xt/t9112-git-svn-md5less-file.sh2
-rwxr-xr-xt/t9114-git-svn-dcommit-merge.sh6
-rwxr-xr-xt/t9116-git-svn-log.sh46
-rwxr-xr-xt/t9117-git-svn-init-clone.sh67
-rwxr-xr-xt/t9118-git-svn-funky-branch-names.sh27
-rwxr-xr-xt/t9119-git-svn-info.sh30
-rwxr-xr-xt/t9120-git-svn-clone-with-percent-escapes.sh14
-rwxr-xr-xt/t9125-git-svn-multi-glob-branch-names.sh6
-rwxr-xr-xt/t9128-git-svn-cmd-branch.sh18
-rwxr-xr-xt/t9130-git-svn-authors-file.sh3
-rwxr-xr-xt/t9135-git-svn-moved-branch-empty-file.sh2
-rwxr-xr-xt/t9138-git-svn-authors-prog.sh35
-rwxr-xr-xt/t9141-git-svn-multiple-branches.sh28
-rwxr-xr-xt/t9145-git-svn-master-branch.sh2
-rwxr-xr-xt/t9147-git-svn-include-paths.sh149
-rwxr-xr-xt/t9148-git-svn-propset.sh95
-rwxr-xr-x[-rw-r--r--]t/t9150/make-svk-dump0
-rwxr-xr-x[-rw-r--r--]t/t9151/make-svnmerge-dump0
-rwxr-xr-xt/t9154-git-svn-fancy-glob.sh13
-rwxr-xr-xt/t9155-git-svn-fetch-deleted-tag.sh4
-rwxr-xr-xt/t9156-git-svn-fetch-deleted-tag-2.sh6
-rwxr-xr-xt/t9158-git-svn-mergeinfo.sh4
-rwxr-xr-xt/t9161-git-svn-mergeinfo-push.sh33
-rwxr-xr-xt/t9163-git-svn-reset-clears-caches.sh78
-rwxr-xr-xt/t9164-git-svn-dcommit-concurrent.sh216
-rwxr-xr-xt/t9165-git-svn-fetch-merge-branch-of-branch.sh60
-rwxr-xr-xt/t9166-git-svn-fetch-merge-branch-of-branch2.sh53
-rwxr-xr-xt/t9167-git-svn-cmd-branch-subproject.sh48
-rwxr-xr-xt/t9200-git-cvsexportcommit.sh6
-rwxr-xr-xt/t9300-fast-import.sh658
-rwxr-xr-xt/t9350-fast-export.sh100
-rwxr-xr-xt/t9351-fast-export-anonymize.sh112
-rwxr-xr-xt/t9400-git-cvsserver-server.sh84
-rwxr-xr-xt/t9401-git-cvsserver-crlf.sh38
-rwxr-xr-xt/t9402-git-cvsserver-refs.sh551
-rwxr-xr-xt/t9500-gitweb-standalone-no-errors.sh41
-rwxr-xr-xt/t9501-gitweb-standalone-http-status.sh72
-rwxr-xr-xt/t9502-gitweb-standalone-parse-output.sh27
-rwxr-xr-xt/t9603-cvsimport-patchsets.sh2
-rwxr-xr-xt/t9604-cvsimport-timestamps.sh71
-rw-r--r--t/t9604/cvsroot/.gitattributes1
-rw-r--r--t/t9604/cvsroot/CVSROOT/.gitignore2
-rw-r--r--t/t9604/cvsroot/module/a,v264
-rwxr-xr-xt/t9700-perl-git.sh4
-rwxr-xr-xt/t9700/test.pl6
-rwxr-xr-xt/t9800-git-p4-basic.sh388
-rwxr-xr-xt/t9801-git-p4-branch.sh422
-rwxr-xr-xt/t9802-git-p4-filetype.sh221
-rwxr-xr-xt/t9803-git-p4-shell-metachars.sh58
-rwxr-xr-xt/t9804-git-p4-label.sh115
-rwxr-xr-xt/t9805-git-p4-skip-submit-edit.sh33
-rwxr-xr-xt/t9806-git-p4-options.sh194
-rwxr-xr-xt/t9807-git-p4-submit.sh354
-rwxr-xr-xt/t9808-git-p4-chdir.sh51
-rwxr-xr-xt/t9809-git-p4-client-view.sh526
-rwxr-xr-xt/t9810-git-p4-rcs.sh367
-rwxr-xr-xt/t9811-git-p4-label-import.sh222
-rwxr-xr-xt/t9812-git-p4-wildcards.sh218
-rwxr-xr-xt/t9813-git-p4-preserve-users.sh145
-rwxr-xr-xt/t9814-git-p4-rename.sh261
-rwxr-xr-xt/t9815-git-p4-submit-fail.sh432
-rwxr-xr-xt/t9816-git-p4-locked.sh145
-rwxr-xr-xt/t9817-git-p4-exclude.sh71
-rwxr-xr-xt/t9818-git-p4-block.sh119
-rwxr-xr-xt/t9819-git-p4-case-folding.sh54
-rwxr-xr-xt/t9820-git-p4-editor-handling.sh38
-rwxr-xr-xt/t9902-completion.sh651
-rwxr-xr-xt/t9903-bash-prompt.sh708
-rw-r--r--t/test-lib-functions.sh894
-rw-r--r--t/test-lib.sh1217
-rwxr-xr-xt/test-terminal.perl2
-rwxr-xr-xt/valgrind/analyze.sh8
-rwxr-xr-xt/valgrind/valgrind.sh30
-rw-r--r--tag.c49
-rw-r--r--tag.h2
-rwxr-xr-xtemplates/hooks--applypatch-msg.sample4
-rwxr-xr-xtemplates/hooks--pre-applypatch.sample4
-rwxr-xr-xtemplates/hooks--pre-commit.sample29
-rwxr-xr-xtemplates/hooks--pre-push.sample53
-rwxr-xr-xtemplates/hooks--update.sample2
-rw-r--r--test-chmtime.c16
-rw-r--r--test-config.c152
-rw-r--r--test-credential.c38
-rw-r--r--test-date.c17
-rw-r--r--test-delta.c2
-rw-r--r--test-dump-cache-tree.c9
-rw-r--r--test-dump-split-index.c36
-rw-r--r--test-dump-untracked-cache.c62
-rw-r--r--test-genrandom.c2
-rw-r--r--test-hashmap.c264
-rw-r--r--test-index-version.c2
-rw-r--r--test-line-buffer.c7
-rw-r--r--test-match-trees.c4
-rw-r--r--test-mergesort.c52
-rw-r--r--test-obj-pool.c116
-rw-r--r--test-parse-options.c18
-rw-r--r--test-path-utils.c83
-rw-r--r--test-prio-queue.c39
-rw-r--r--test-read-cache.c13
-rw-r--r--test-regex.c20
-rw-r--r--test-revision-walking.c66
-rw-r--r--test-run-command.c4
-rw-r--r--test-scrap-cache-tree.c6
-rw-r--r--test-sha1-array.c34
-rw-r--r--test-sha1.c15
-rw-r--r--test-sigchain.c2
-rw-r--r--test-string-list.c103
-rw-r--r--test-string-pool.c31
-rw-r--r--test-subprocess.c7
-rw-r--r--test-svn-fe.c48
-rw-r--r--test-treap.c70
-rw-r--r--test-urlmatch-normalization.c50
-rw-r--r--test-wildmatch.c21
-rw-r--r--thread-utils.c20
-rw-r--r--thread-utils.h4
-rw-r--r--trace.c374
-rw-r--r--trace.h113
-rw-r--r--trailer.c874
-rw-r--r--trailer.h6
-rw-r--r--transport-helper.c387
-rw-r--r--transport.c346
-rw-r--r--transport.h49
-rw-r--r--tree-diff.c730
-rw-r--r--tree-walk.c461
-rw-r--r--tree-walk.h22
-rw-r--r--tree.c53
-rw-r--r--tree.h12
-rw-r--r--unicode_width.h323
-rw-r--r--unix-socket.c17
-rw-r--r--unpack-trees.c397
-rw-r--r--unpack-trees.h14
-rwxr-xr-xupdate_unicode.sh40
-rw-r--r--upload-pack.c401
-rw-r--r--url.c2
-rw-r--r--urlmatch.c538
-rw-r--r--urlmatch.h53
-rw-r--r--usage.c55
-rw-r--r--userdiff.c98
-rw-r--r--utf8.c398
-rw-r--r--utf8.h44
-rw-r--r--varint.c30
-rw-r--r--varint.h7
-rw-r--r--vcs-svn/LICENSE3
-rw-r--r--vcs-svn/fast_export.c276
-rw-r--r--vcs-svn/fast_export.h33
-rw-r--r--vcs-svn/line_buffer.c10
-rw-r--r--vcs-svn/line_buffer.h3
-rw-r--r--vcs-svn/obj_pool.h61
-rw-r--r--vcs-svn/repo_tree.c330
-rw-r--r--vcs-svn/repo_tree.h12
-rw-r--r--vcs-svn/sliding_window.c79
-rw-r--r--vcs-svn/sliding_window.h18
-rw-r--r--vcs-svn/string_pool.c102
-rw-r--r--vcs-svn/string_pool.h11
-rw-r--r--vcs-svn/string_pool.txt43
-rw-r--r--vcs-svn/svndiff.c309
-rw-r--r--vcs-svn/svndiff.h10
-rw-r--r--vcs-svn/svndump.c204
-rw-r--r--vcs-svn/svndump.h3
-rw-r--r--vcs-svn/trp.h237
-rw-r--r--vcs-svn/trp.txt109
-rw-r--r--version.c38
-rw-r--r--version.h9
-rw-r--r--versioncmp.c143
-rw-r--r--walker.c95
-rw-r--r--wildmatch.c279
-rw-r--r--wildmatch.h18
-rw-r--r--wrap-for-bin.sh2
-rw-r--r--wrapper.c263
-rw-r--r--write_or_die.c39
-rw-r--r--ws.c7
-rw-r--r--wt-status.c1003
-rw-r--r--wt-status.h45
-rw-r--r--xdiff-interface.c44
-rw-r--r--xdiff-interface.h4
-rw-r--r--xdiff/xdiff.h16
-rw-r--r--xdiff/xdiffi.c50
-rw-r--r--xdiff/xdiffi.h1
-rw-r--r--xdiff/xemit.c63
-rw-r--r--xdiff/xemit.h2
-rw-r--r--xdiff/xhistogram.c4
-rw-r--r--xdiff/xmerge.c4
-rw-r--r--xdiff/xpatience.c2
-rw-r--r--xdiff/xprepare.c21
-rw-r--r--xdiff/xutils.c162
-rw-r--r--xdiff/xutils.h4
-rw-r--r--zlib.c27
1868 files changed, 314995 insertions, 63702 deletions
diff --git a/.gitignore b/.gitignore
index 3b7680e..a685ec1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,11 @@
/GIT-BUILD-OPTIONS
/GIT-CFLAGS
/GIT-LDFLAGS
-/GIT-GUI-VARS
+/GIT-PREFIX
+/GIT-PERL-DEFINES
+/GIT-PYTHON-VARS
+/GIT-SCRIPT-DEFINES
+/GIT-USER-AGENT
/GIT-VERSION-FILE
/bin-wrappers/
/git
@@ -19,6 +23,8 @@
/git-bundle
/git-cat-file
/git-check-attr
+/git-check-ignore
+/git-check-mailmap
/git-check-ref-format
/git-checkout
/git-checkout-index
@@ -26,10 +32,12 @@
/git-cherry-pick
/git-clean
/git-clone
+/git-column
/git-commit
/git-commit-tree
/git-config
/git-count-objects
+/git-credential
/git-credential-cache
/git-credential-cache--daemon
/git-credential-store
@@ -66,9 +74,9 @@
/git-index-pack
/git-init
/git-init-db
+/git-interpret-trailers
/git-instaweb
/git-log
-/git-lost-found
/git-ls-files
/git-ls-remote
/git-ls-tree
@@ -92,12 +100,12 @@
/git-name-rev
/git-mv
/git-notes
+/git-p4
/git-pack-redundant
/git-pack-objects
/git-pack-refs
/git-parse-remote
/git-patch-id
-/git-peek-remote
/git-prune
/git-prune-packed
/git-pull
@@ -119,9 +127,10 @@
/git-remote-fd
/git-remote-ext
/git-remote-testgit
+/git-remote-testpy
+/git-remote-testsvn
/git-repack
/git-replace
-/git-repo-config
/git-request-pull
/git-rerere
/git-reset
@@ -149,7 +158,6 @@
/git-svn
/git-symbolic-ref
/git-tag
-/git-tar-tree
/git-unpack-file
/git-unpack-objects
/git-update-index
@@ -158,39 +166,49 @@
/git-upload-archive
/git-upload-pack
/git-var
+/git-verify-commit
/git-verify-pack
/git-verify-tag
/git-web--browse
/git-whatchanged
+/git-worktree
/git-write-tree
/git-core-*/?*
-/gitk-git/gitk-wish
/gitweb/GITWEB-BUILD-OPTIONS
/gitweb/gitweb.cgi
/gitweb/static/gitweb.js
/gitweb/static/gitweb.min.*
/test-chmtime
-/test-credential
/test-ctype
+/test-config
/test-date
/test-delta
/test-dump-cache-tree
+/test-dump-split-index
+/test-dump-untracked-cache
/test-scrap-cache-tree
/test-genrandom
+/test-hashmap
/test-index-version
/test-line-buffer
/test-match-trees
+/test-mergesort
/test-mktemp
-/test-obj-pool
/test-parse-options
/test-path-utils
+/test-prio-queue
+/test-read-cache
+/test-regex
+/test-revision-walking
/test-run-command
/test-sha1
+/test-sha1-array
/test-sigchain
-/test-string-pool
+/test-string-list
/test-subprocess
/test-svn-fe
-/test-treap
+/test-urlmatch-normalization
+/test-wildmatch
/common-cmds.h
*.tar.gz
*.dsc
@@ -215,11 +233,13 @@
/config.mak.autogen
/config.mak.append
/configure
+/unicode
/tags
/TAGS
/cscope*
*.obj
*.lib
+*.res
*.sln
*.suo
*.ncb
diff --git a/.mailmap b/.mailmap
index 19c8726..ece2951 100644
--- a/.mailmap
+++ b/.mailmap
@@ -5,65 +5,250 @@
# same person appearing not to be so.
#
+<nico@fluxnic.net> <nico@cam.org>
+Alejandro R. Sedeño <asedeno@MIT.EDU> <asedeno@mit.edu>
Alex Bennée <kernel-hacker@bennee.com>
+Alex Riesen <raa.lkml@gmail.com> <fork0@t-online.de>
+Alex Riesen <raa.lkml@gmail.com> <raa@limbo.localdomain>
+Alex Riesen <raa.lkml@gmail.com> <raa@steel.home>
+Alex Vandiver <alex@chmrr.net> <alexmv@MIT.EDU>
Alexander Gavrilov <angavrilov@gmail.com>
+Alexander Kuleshov <kuleshovmail@gmail.com>
+Alexey Shumkin <alex.crezoff@gmail.com> <zapped@mail.ru>
+Alexey Shumkin <alex.crezoff@gmail.com> <Alex.Crezoff@gmail.com>
+Anders Kaseorg <andersk@MIT.EDU> <andersk@ksplice.com>
+Anders Kaseorg <andersk@MIT.EDU> <andersk@mit.edu>
Aneesh Kumar K.V <aneesh.kumar@gmail.com>
-Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
+Amos Waterland <apw@debian.org> <apw@rossby.metr.ou.edu>
+Amos Waterland <apw@debian.org> <apw@us.ibm.com>
+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>
+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>
-Dana L. How <danahow@gmail.com>
-Dana L. How <how@deathvalley.cswitch.com>
+Chris Wright <chrisw@sous-sol.org> <chrisw@osdl.org>
+Cord Seele <cowose@gmail.com> <cowose@googlemail.com>
+Christian Stimming <stimming@tuhh.de> <chs@ckiste.goetheallee>
+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 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>
David D. Kilzer <ddkilzer@kilzer.net>
David Kågedal <davidk@lysator.liu.se>
+David Reiss <dreiss@facebook.com> <dreiss@dreiss-vmware.(none)>
David S. Miller <davem@davemloft.net>
Deskin Miller <deskinm@umich.edu>
Dirk Süsserott <newsletter@dirk.my1.cc>
-Fredrik Kuivinen <freku045@student.liu.se>
-H. Peter Anvin <hpa@bonde.sc.orionmulti.com>
-H. Peter Anvin <hpa@tazenda.sc.orionmulti.com>
-H. Peter Anvin <hpa@trantor.hos.anvin.org>
+Eric Blake <eblake@redhat.com> <ebb9@byu.net>
+Eric Hanchrow <eric.hanchrow@gmail.com> <offby1@blarg.net>
+Eric S. Raymond <esr@thyrsus.com>
+Erik Faye-Lund <kusmabite@gmail.com> <kusmabite@googlemail.com>
+Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com> <eyvind-git@orakel.ntnu.no>
+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>
+Frank Lichtenheld <frank@lichtenheld.de> <flichtenheld@astaro.com>
+Fredrik Kuivinen <frekui@gmail.com> <freku045@student.liu.se>
+Frédéric Heitzmann <frederic.heitzmann@gmail.com>
+Garry Dolley <gdolley@ucla.edu> <gdolley@arpnetworks.com>
+Greg Price <price@mit.edu> <price@MIT.EDU>
+Greg Price <price@mit.edu> <price@ksplice.com>
+Heiko Voigt <hvoigt@hvoigt.net> <git-list@hvoigt.net>
+H. Merijn Brand <h.m.brand@xs4all.nl> H.Merijn Brand <h.m.brand@xs4all.nl>
+H. Peter Anvin <hpa@zytor.com> <hpa@bonde.sc.orionmulti.com>
+H. Peter Anvin <hpa@zytor.com> <hpa@smyrno.hos.anvin.org>
+H. Peter Anvin <hpa@zytor.com> <hpa@tazenda.sc.orionmulti.com>
+H. Peter Anvin <hpa@zytor.com> <hpa@trantor.hos.anvin.org>
+Han-Wen Nienhuys <hanwen@google.com> Han-Wen Nienhuys <hanwen@xs4all.nl>
Horst H. von Brand <vonbrand@inf.utfsm.cl>
-İsmail Dönmez <ismail@pardus.org.tr>
-Jay Soffian <jaysoffian+git@gmail.com>
+J. Bruce Fields <bfields@citi.umich.edu> <bfields@fieldses.org>
+J. Bruce Fields <bfields@citi.umich.edu> <bfields@pig.linuxdev.us.dell.com>
+J. Bruce Fields <bfields@citi.umich.edu> <bfields@puzzle.fieldses.org>
+Jakub Narębski <jnareb@gmail.com>
+James Y Knight <jknight@itasoftware.com> <foom@fuhm.net>
+# The 2 following authors are probably the same person,
+# but both emails bounce.
+Jason McMullan <jason.mcmullan@timesys.com>
+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>
+Jeff King <peff@peff.net> <peff@github.com>
+Jeff Muizelaar <jmuizelaar@mozilla.com> <jeff@infidigm.net>
+Jens Axboe <axboe@kernel.dk> <axboe@suse.de>
+Jens Axboe <axboe@kernel.dk> <jens.axboe@oracle.com>
+Jens Lindström <jl@opera.com> Jens Lindstrom <jl@opera.com>
+Jim Meyering <jim@meyering.net> <meyering@redhat.com>
Joachim Berdal Haga <cjhaga@fys.uio.no>
-Jon Loeliger <jdl@freescale.com>
-Jon Seymour <jon@blackcubes.dyndns.org>
-Jonathan Nieder <jrnieder@uchicago.edu>
-Junio C Hamano <junio@twinsun.com>
-Karl Hasselström <kha@treskal.com>
+Johannes Schindelin <Johannes.Schindelin@gmx.de> <johannes.schindelin@gmx.de>
+Johannes Sixt <j6t@kdbg.org> <J.Sixt@eudaptics.com>
+Johannes Sixt <j6t@kdbg.org> <j.sixt@viscovery.net>
+Johannes Sixt <j6t@kdbg.org> <johannes.sixt@telecom.at>
+John 'Warthog9' Hawley <warthog9@kernel.org> <warthog9@eaglescrag.net>
+Jon Loeliger <jdl@jdl.com> <jdl@freescale.com>
+Jon Loeliger <jdl@jdl.com> <jdl@freescale.org>
+Jon Seymour <jon.seymour@gmail.com> <jon@blackcubes.dyndns.org>
+Jonathan Nieder <jrnieder@gmail.com> <jrnieder@uchicago.edu>
+Jonathan del Strother <jon.delStrother@bestbefore.tv> <maillist@steelskies.com>
+Josh Triplett <josh@joshtriplett.org> <josh@freedesktop.org>
+Josh Triplett <josh@joshtriplett.org> <josht@us.ibm.com>
+Julian Phillips <julian@quantumfyre.co.uk> <jp3@quantumfyre.co.uk>
+Junio C Hamano <gitster@pobox.com> <gitster@pobox.com>
+Junio C Hamano <gitster@pobox.com> <junio@hera.kernel.org>
+Junio C Hamano <gitster@pobox.com> <junio@kernel.org>
+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>
+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>
+Karsten Blees <blees@dcon.de> <karsten.blees@gmail.com>
+Kay Sievers <kay.sievers@vrfy.org> <kay.sievers@suse.de>
+Kay Sievers <kay.sievers@vrfy.org> <kay@mam.(none)>
+Kazuki Saitoh <ksaitoh560@gmail.com> kazuki saitoh <ksaitoh560@gmail.com>
+Keith Cascio <keith@CS.UCLA.EDU> <keith@cs.ucla.edu>
Kent Engstrom <kent@lysator.liu.se>
+Kevin Leung <kevinlsk@gmail.com>
+Kirill Smelkov <kirr@navytux.spb.ru> <kirr@landau.phys.spbu.ru>
+Kirill Smelkov <kirr@navytux.spb.ru> <kirr@mns.spb.ru>
+Knut Franke <Knut.Franke@gmx.de> <k.franke@science-computing.de>
Lars Doelle <lars.doelle@on-line ! de>
Lars Doelle <lars.doelle@on-line.de>
+Lars Noschinski <lars@public.noschinski.de> <lars.noschinski@rwth-aachen.de>
Li Hong <leehong@pku.edu.cn>
-Lukas Sandström <lukass@etek.chalmers.se>
-Martin Langhoff <martin@laptop.org>
+Linus Torvalds <torvalds@linux-foundation.org> <torvalds@evo.osdl.org>
+Linus Torvalds <torvalds@linux-foundation.org> <torvalds@g5.osdl.org>
+Linus Torvalds <torvalds@linux-foundation.org> <torvalds@osdl.org>
+Linus Torvalds <torvalds@linux-foundation.org> <torvalds@ppc970.osdl.org.(none)>
+Linus Torvalds <torvalds@linux-foundation.org> <torvalds@ppc970.osdl.org>
+Linus Torvalds <torvalds@linux-foundation.org> <torvalds@woody.linux-foundation.org>
+Lukas Sandström <luksan@gmail.com> <lukass@etek.chalmers.se>
+Marc Khouzam <marc.khouzam@ericsson.com> <marc.khouzam@gmail.com>
+Marc-André Lureau <marcandre.lureau@gmail.com>
+Marco Costalba <mcostalba@gmail.com> <mcostalba@yahoo.it>
+Mark Levedahl <mdl123@verizon.net> <mlevedahl@gmail.com>
+Mark Rada <marada@uwaterloo.ca>
+Martin Langhoff <martin@laptop.org> <martin@catalyst.net.nz>
+Martin von Zweigbergk <martinvonz@gmail.com> <martin.von.zweigbergk@gmail.com>
+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 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 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>
Michael W. Olson <mwolson@gnu.org>
+Michael Witten <mfwitten@gmail.com> <mfwitten@MIT.EDU>
+Michael Witten <mfwitten@gmail.com> <mfwitten@mit.edu>
+Michal Rokos <michal.rokos@nextsoft.cz> <rokos@nextsoft.cz>
Michele Ballabio <barra_cuda@katamail.com>
-Nanako Shiraishi <nanako3@bluebottle.com>
+Miklos Vajna <vmiklos@frugalware.org> <vmiklos@suse.cz>
+Namhyung Kim <namhyung@gmail.com> <namhyung.kim@lge.com>
+Namhyung Kim <namhyung@gmail.com> <namhyung@kernel.org>
+Nanako Shiraishi <nanako3@lavabit.com> <nanako3@bluebottle.com>
Nanako Shiraishi <nanako3@lavabit.com>
+Nelson Elhage <nelhage@mit.edu> <nelhage@MIT.EDU>
+Nelson Elhage <nelhage@mit.edu> <nelhage@ksplice.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
-<nico@fluxnic.net> <nico@cam.org>
+Nick Stokoe <nick@noodlefactory.co.uk> Nick Woolley <nick@noodlefactory.co.uk>
+Nick Stokoe <nick@noodlefactory.co.uk> Nick Woolley <nickwoolley@yahoo.co.uk>
+Nicolas Morey-Chaisemartin <devel-git@morey-chaisemartin.com> <nicolas.morey@free.fr>
+Nicolas Morey-Chaisemartin <devel-git@morey-chaisemartin.com> <nmorey@kalray.eu>
+Nicolas Sebrecht <nicolas.s.dev@gmx.fr> <ni.s@laposte.net>
+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>
+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>
+Peter Baumann <waste.manager@gmx.de> <siprbaum@stud.informatik.uni-erlangen.de>
+Peter Krefting <peter@softwolves.pp.se> <peter@softwolves.pp.se>
+Peter Krefting <peter@softwolves.pp.se> <peter@svarten.intern.softwolves.pp.se>
+Petr Baudis <pasky@ucw.cz> <pasky@suse.cz>
+Petr Baudis <pasky@ucw.cz> <xpasky@machine>
+Phil Hord <hordp@cisco.com> <phil.hord@gmail.com>
+Philip Jägenstedt <philip@foolip.org> <philip.jagenstedt@gmail.com>
+Philipp A. Hartmann <pah@qo.cx> <ph@sorgh.de>
Philippe Bruhat <book@cpan.org>
+Ralf Thielow <ralf.thielow@gmail.com> <ralf.thielow@googlemail.com>
Ramsay Allan Jones <ramsay@ramsay1.demon.co.uk>
-René Scharfe <rene.scharfe@lsrfire.ath.cx>
+René Scharfe <l.s.r@web.de> <rene.scharfe@lsrfire.ath.cx>
Robert Fitzsimons <robfitz@273k.net>
-Sam Vilain <sam@vilain.net>
-Santi Béjar <sbejar@gmail.com>
+Robert Shearman <robertshearman@gmail.com> <rob@codeweavers.com>
+Robert Zeh <robert.a.zeh@gmail.com>
+Robin Rosenberg <robin.rosenberg@dewire.com> <robin.rosenberg.lists@dewire.com>
+Rutger Nijlunsing <rutger.nijlunsing@gmail.com> <rutger@nospam.com>
+Rutger Nijlunsing <rutger.nijlunsing@gmail.com> <git@tux.tmfweb.nl>
+Ryan Anderson <ryan@michonline.com> <rda@google.com>
+Salikh Zakirov <salikh.zakirov@gmail.com> <Salikh.Zakirov@Intel.com>
+Sam Vilain <sam@vilain.net> <sam.vilain@catalyst.net.nz>
+Sam Vilain <sam@vilain.net> sam@vilain.net
+Santi Béjar <santi@agolina.net> <sbejar@gmail.com>
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>
-Steven Grimm <koreth@midwinter.com>
+Simon Hausmann <hausmann@kde.org> <simon@lst.de>
+Simon Hausmann <hausmann@kde.org> <shausman@trolltech.com>
+Stefan Beller <stefanbeller@gmail.com> <stefanbeller@googlemail.com>
+Stefan Beller <stefanbeller@gmail.com> <sbeller@google.com>
+Stefan Naewe <stefan.naewe@gmail.com> <stefan.naewe@atlas-elektronik.com>
+Stefan Naewe <stefan.naewe@gmail.com> <stefan.naewe@googlemail.com>
+Stefan Sperling <stsp@elego.de> <stsp@stsp.name>
+Štěpán Němec <stepnem@gmail.com> <stepan.nemec@gmail.com>
+Stephen Boyd <bebarino@gmail.com> <sboyd@codeaurora.org>
+Steven Drake <sdrake@xnet.co.nz> <sdrake@ihug.co.nz>
+Steven Grimm <koreth@midwinter.com> <sgrimm@sgrimm-mbp.local>
+Steven Grimm <koreth@midwinter.com> koreth@midwinter.com
+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>
+Tay Ray Chuan <rctay89@gmail.com>
+Ted Percival <ted@midg3t.net> <ted.percival@quest.com>
Theodore Ts'o <tytso@mit.edu>
+Thomas Ackermann <th.acker@arcor.de> <th.acker66@arcor.de>
+Thomas Rast <tr@thomasrast.ch> <trast@student.ethz.ch>
+Thomas Rast <tr@thomasrast.ch> <trast@inf.ethz.ch>
+Thomas Rast <tr@thomasrast.ch> <trast@google.com>
+Timo Hirvonen <tihirvon@gmail.com> <tihirvon@ee.oulu.fi>
+Toby Allsopp <Toby.Allsopp@navman.co.nz> <toby.allsopp@navman.co.nz>
+Tom Grennan <tmgrennan@gmail.com> <tgrennan@redback.com>
+Tommi Virtanen <tv@debian.org> <tv@eagain.net>
+Tommi Virtanen <tv@debian.org> <tv@inoi.fi>
+Tommy Thorn <tommy-git@thorn.ws> <tt1729@yahoo.com>
Tony Luck <tony.luck@intel.com>
-Uwe Kleine-König <Uwe_Zeisberger@digi.com>
-Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
-Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
-Uwe Kleine-König <uzeisberger@io.fsforth.de>
-Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de>
-Ville Skyttä <scop@xemacs.org>
+Tor Arne Vestbø <torarnv@gmail.com> <tavestbo@trolltech.com>
+Trần Ngọc Quân <vnwildman@gmail.com> Tran Ngoc Quan <vnwildman@gmail.com>
+Trent Piepho <tpiepho@gmail.com> <tpiepho@freescale.com>
+Trent Piepho <tpiepho@gmail.com> <xyzzy@speakeasy.org>
+Uwe Kleine-König <u.kleine-koenig@pengutronix.de> <Uwe.Kleine-Koenig@digi.com>
+Uwe Kleine-König <u.kleine-koenig@pengutronix.de> <ukleinek@informatik.uni-freiburg.de>
+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>
+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>
+YONETANI Tomokazu <y0n3t4n1@gmail.com> <y0netan1@dragonflybsd.org>
YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+# the two anonymous contributors are different persons:
anonymous <linux@horizon.com>
anonymous <linux@horizon.net>
+İsmail Dönmez <ismail@pardus.org.tr>
diff --git a/Documentation/.gitignore b/Documentation/.gitignore
index d62aebd..2c8b2d6 100644
--- a/Documentation/.gitignore
+++ b/Documentation/.gitignore
@@ -9,4 +9,5 @@ gitman.info
howto-index.txt
doc.dep
cmds-*.txt
+mergetools-*.txt
manpage-base-url.xsl
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 4557711..c6e536f 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -1,5 +1,5 @@
Like other projects, we also have some guidelines to keep to the
-code. For git in general, three rough rules are:
+code. For Git in general, a few rough rules are:
- Most importantly, we never say "It's in POSIX; we'll happily
ignore your needs should your system not conform to it."
@@ -18,11 +18,20 @@ code. For git in general, three rough rules are:
judgement call, the decision based more on real world
constraints people face than what the paper standard says.
+ - Fixing style violations while working on a real change as a
+ preparatory clean-up step is good, but otherwise avoid useless code
+ churn for the sake of conforming to the style.
+
+ "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
+
+Make your code readable and sensible, and don't try to be clever.
As for more concrete guidelines, just imitate the existing code
(this is a good guideline, no matter which project you are
contributing to). It is always preferable to match the _local_
-convention. New code added to git suite is expected to match
+convention. New code added to Git suite is expected to match
the overall style of existing code. Modifications to existing
code is expected to match the style the surrounding code already
uses (even if it doesn't match the overall style of existing code).
@@ -33,7 +42,17 @@ For shell scripts specifically (not exhaustive):
- We use tabs for indentation.
- - Case arms are indented at the same depth as case and esac lines.
+ - Case arms are indented at the same depth as case and esac lines,
+ like this:
+
+ case "$variable" in
+ pattern1)
+ do this
+ ;;
+ pattern2)
+ do that
+ ;;
+ esac
- Redirection operators should be written with space before, but no
space after them. In other words, write 'echo test >"$file"'
@@ -42,6 +61,14 @@ For shell scripts specifically (not exhaustive):
redirection target in a variable (as shown above), our code does so
because some versions of bash issue a warning without the quotes.
+ (incorrect)
+ cat hello > world < universe
+ echo hello >$world
+
+ (correct)
+ cat hello >world <universe
+ echo hello >"$world"
+
- We prefer $( ... ) for command substitution; unlike ``, it
properly nests. It should have been the way Bourne spelled
it from day one, but unfortunately isn't.
@@ -76,19 +103,46 @@ For shell scripts specifically (not exhaustive):
- We do not use Process Substitution <(list) or >(list).
+ - Do not write control structures on a single line with semicolon.
+ "then" should be on the next line for if statements, and "do"
+ should be on the next line for "while" and "for".
+
+ (incorrect)
+ if test -f hello; then
+ do this
+ fi
+
+ (correct)
+ if test -f hello
+ then
+ do this
+ fi
+
- We prefer "test" over "[ ... ]".
- We do not write the noiseword "function" in front of shell
functions.
+ - We prefer a space between the function name and the parentheses,
+ and no space inside the parentheses. The opening "{" should also
+ be on the same line.
+
+ (incorrect)
+ my_function(){
+ ...
+
+ (correct)
+ my_function () {
+ ...
+
- As to use of grep, stick to a subset of BRE (namely, no \{m,n\},
- [::], [==], nor [..]) for portability.
+ [::], [==], or [..]) for portability.
- We do not use \{m,n\};
- We do not use -E;
- - We do not use ? nor + (which are \{0,1\} and \{1,\}
+ - We do not use ? or + (which are \{0,1\} and \{1,\}
respectively in BRE) but that goes without saying as these
are ERE elements not BRE (note that \? and \+ are not even part
of BRE -- making them accessible from BRE is a GNU extension).
@@ -97,6 +151,19 @@ For shell scripts specifically (not exhaustive):
interface translatable. See "Marking strings for translation" in
po/README.
+ - We do not write our "test" command with "-a" and "-o" and use "&&"
+ or "||" to concatenate multiple "test" commands instead, because
+ the use of "-a/-o" is often error-prone. E.g.
+
+ test -n "$x" -a "$a" = "$b"
+
+ is buggy and breaks when $x is "=", but
+
+ test -n "$x" && test "$a" = "$b"
+
+ does not have such a problem.
+
+
For C programs:
- We use tabs to indent, and interpret tabs as taking up to
@@ -104,11 +171,30 @@ For C programs:
- We try to keep to at most 80 characters per line.
+ - We try to support a wide range of C compilers to compile Git with,
+ including old ones. That means that you should not use C99
+ initializers, even if a lot of compilers grok it.
+
+ - Variables have to be declared at the beginning of the block.
+
+ - NULL pointers shall be written as NULL, not as 0.
+
- When declaring pointers, the star sides with the variable
name, i.e. "char *string", not "char* string" or
"char * string". This makes it easier to understand code
like "char *string, c;".
+ - Use whitespace around operators and keywords, but not inside
+ parentheses and not around functions. So:
+
+ while (condition)
+ func(bar + 1);
+
+ and not:
+
+ while( condition )
+ func (bar+1);
+
- We avoid using braces unnecessarily. I.e.
if (bla) {
@@ -121,16 +207,116 @@ For C programs:
of "else if" statements, it can make sense to add braces to
single line blocks.
- - We try to avoid assignments inside if().
+ - We try to avoid assignments in the condition of an "if" statement.
- Try to make your code understandable. You may put comments
in, but comments invariably tend to stale out when the code
they were describing changes. Often splitting a function
into two makes the intention of the code much clearer.
+ - Multi-line comments include their delimiters on separate lines from
+ the text. E.g.
+
+ /*
+ * A very long
+ * multi-line comment.
+ */
+
+ 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: 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
at all.
+ - There are two schools of thought when it comes to comparison,
+ especially inside a loop. Some people prefer to have the less stable
+ value on the left hand side and the more stable value on the right hand
+ side, e.g. if you have a loop that counts variable i down to the
+ lower bound,
+
+ while (i > lower_bound) {
+ do something;
+ i--;
+ }
+
+ Other people prefer to have the textual order of values match the
+ actual order of values in their comparison, so that they can
+ mentally draw a number line from left to right and place these
+ values in order, i.e.
+
+ while (lower_bound < i) {
+ do something;
+ i--;
+ }
+
+ Both are valid, and we use both. However, the more "stable" the
+ stable side becomes, the more we tend to prefer the former
+ (comparison with a constant, "i > 0", is an extreme example).
+ Just do not mix styles in the same part of the code and mimic
+ existing styles in the neighbourhood.
+
+ - There are two schools of thought when it comes to splitting a long
+ logical line into multiple lines. Some people push the second and
+ subsequent lines far enough to the right with tabs and align them:
+
+ if (the_beginning_of_a_very_long_expression_that_has_to ||
+ span_more_than_a_single_line_of ||
+ the_source_text) {
+ ...
+
+ while other people prefer to align the second and the subsequent
+ lines with the column immediately inside the opening parenthesis,
+ with tabs and spaces, following our "tabstop is always a multiple
+ of 8" convention:
+
+ if (the_beginning_of_a_very_long_expression_that_has_to ||
+ span_more_than_a_single_line_of ||
+ the_source_text) {
+ ...
+
+ Both are valid, and we use both. Again, just do not mix styles in
+ the same part of the code and mimic existing styles in the
+ neighbourhood.
+
+ - When splitting a long logical line, some people change line before
+ a binary operator, so that the result looks like a parse tree when
+ you turn your head 90-degrees counterclockwise:
+
+ if (the_beginning_of_a_very_long_expression_that_has_to
+ || span_more_than_a_single_line_of_the_source_text) {
+
+ while other people prefer to leave the operator at the end of the
+ line:
+
+ if (the_beginning_of_a_very_long_expression_that_has_to ||
+ span_more_than_a_single_line_of_the_source_text) {
+
+ Both are valid, but we tend to use the latter more, unless the
+ expression gets fairly complex, in which case the former tends to
+ be easier to read. Again, just do not mix styles in the same part
+ of the code and mimic existing styles in the neighbourhood.
+
+ - When splitting a long logical line, with everything else being
+ equal, it is preferable to split after the operator at higher
+ level in the parse tree. That is, this is more preferable:
+
+ if (a_very_long_variable * that_is_used_in +
+ a_very_long_expression) {
+ ...
+
+ than
+
+ if (a_very_long_variable *
+ that_is_used_in + a_very_long_expression) {
+ ...
+
- Some clever tricks, like using the !! operator with arithmetic
constructs, can be extremely confusing to others. Avoid them,
unless there is a compelling reason to use them.
@@ -142,20 +328,25 @@ For C programs:
- When you come up with an API, document it.
- - The first #include in C files, except in platform specific
- compat/ implementations, should be git-compat-util.h or another
- header file that includes it, such as cache.h or builtin.h.
+ - The first #include in C files, except in platform specific compat/
+ implementations, must be either "git-compat-util.h", "cache.h" or
+ "builtin.h". You do not have to include more than one of these.
+
+ - A C file must directly include the header files that declare the
+ functions and the types it uses, except for the functions and types
+ that are made available to it by including one of the header files
+ it must include by the previous rule.
- If you are planning a new command, consider writing it in shell
or perl first, so that changes in semantics can be easily
- changed and discussed. Many git commands started out like
+ changed and discussed. Many Git commands started out like
that, and a few are still scripts.
- - Avoid introducing a new dependency into git. This means you
+ - Avoid introducing a new dependency into Git. This means you
usually should stay away from scripting languages not already
- used in the git core command set (unless your command is clearly
+ used in the Git core command set (unless your command is clearly
separate from it, such as an importer to convert random-scm-X
- repositories to git).
+ repositories to Git).
- When we pass <string, length> pair to functions, we should try to
pass them in that order.
@@ -163,19 +354,125 @@ For C programs:
- Use Git's gettext wrappers to make the user interface
translatable. See "Marking strings for translation" in po/README.
+For Perl programs:
+
+ - Most of the C guidelines above apply.
+
+ - We try to support Perl 5.8 and later ("use Perl 5.008").
+
+ - use strict and use warnings are strongly preferred.
+
+ - Don't overuse statement modifiers unless using them makes the
+ result easier to follow.
+
+ ... do something ...
+ do_this() unless (condition);
+ ... do something else ...
+
+ is more readable than:
+
+ ... do something ...
+ unless (condition) {
+ do_this();
+ }
+ ... do something else ...
+
+ *only* when the condition is so rare that do_this() will be almost
+ always called.
+
+ - We try to avoid assignments inside "if ()" conditions.
+
+ - Learn and use Git.pm if you need that functionality.
+
+ - For Emacs, it's useful to put the following in
+ GIT_CHECKOUT/.dir-locals.el, assuming you use cperl-mode:
+
+ ;; note the first part is useful for C editing, too
+ ((nil . ((indent-tabs-mode . t)
+ (tab-width . 8)
+ (fill-column . 80)))
+ (cperl-mode . ((cperl-indent-level . 8)
+ (cperl-extra-newline-before-brace . nil)
+ (cperl-merge-trailing-else . t))))
+
+For Python scripts:
+
+ - We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
+
+ - As a minimum, we aim to be compatible with Python 2.6 and 2.7.
+
+ - Where required libraries do not restrict us to Python 2, we try to
+ also be compatible with Python 3.1 and later.
+
+ - When you must differentiate between Unicode literals and byte string
+ literals, it is OK to use the 'b' prefix. Even though the Python
+ documentation for version 2.6 does not mention this prefix, it has
+ been supported since version 2.6.0.
+
+Error Messages
+
+ - Do not end error messages with a full stop.
+
+ - Do not capitalize ("unable to open %s", not "Unable to open %s")
+
+ - Say what the error is first ("cannot open %s", not "%s: cannot open")
+
+
+Externally Visible Names
+
+ - For configuration variable names, follow the existing convention:
+
+ . The section name indicates the affected subsystem.
+
+ . The subsection name, if any, indicates which of an unbounded set
+ of things to set the value for.
+
+ . The variable name describes the effect of tweaking this knob.
+
+ The section and variable names that consist of multiple words are
+ formed by concatenating the words without punctuations (e.g. `-`),
+ and are broken using bumpyCaps in documentation as a hint to the
+ reader.
+
+ When choosing the variable namespace, do not use variable name for
+ specifying possibly unbounded set of things, most notably anything
+ an end user can freely come up with (e.g. branch names). Instead,
+ use subsection names or variable values, like the existing variable
+ branch.<name>.description does.
+
+
Writing Documentation:
+ Most (if not all) of the documentation pages are written in the
+ AsciiDoc format in *.txt files (e.g. Documentation/git.txt), and
+ processed into HTML and manpages (e.g. git.html and git.1 in the
+ same directory).
+
+ The documentation liberally mixes US and UK English (en_US/UK)
+ norms for spelling and grammar, which is somewhat unfortunate.
+ In an ideal world, it would have been better if it consistently
+ used only one and not the other, and we would have picked en_US
+ (if you wish to correct the English of some of the existing
+ documentation, please see the documentation-related advice in the
+ Documentation/SubmittingPatches file).
+
Every user-visible change should be reflected in the documentation.
The same general rule as for code applies -- imitate the existing
- conventions. A few commented examples follow to provide reference
- when writing or modifying command usage strings and synopsis sections
- in the manual pages:
+ conventions.
+
+ A few commented examples follow to provide reference when writing or
+ modifying command usage strings and synopsis sections in the manual
+ pages:
Placeholders are spelled in lowercase and enclosed in angle brackets:
<file>
--sort=<key>
--abbrev[=<n>]
+ If a placeholder has multiple words, they are separated by dashes:
+ <new-branch-name>
+ --template=<template-directory>
+
Possibility of multiple occurrences is indicated by three dots:
<file>...
(One or more of <file>.)
@@ -192,12 +489,12 @@ Writing Documentation:
(Zero or more of <patch>. Note that the dots are inside, not
outside the brackets.)
- Multiple alternatives are indicated with vertical bar:
+ Multiple alternatives are indicated with vertical bars:
[-q | --quiet]
[--utf8 | --no-utf8]
Parentheses are used for grouping:
- [(<rev>|<range>)...]
+ [(<rev> | <range>)...]
(Any number of either <rev> or <range>. Parens are needed to make
it clear that "..." pertains to both <rev> and <range>.)
@@ -214,3 +511,34 @@ Writing Documentation:
valid usage. "*" has its own pair of brackets, because it can
(optionally) be specified only when one or more of the letters is
also provided.
+
+ A note on notation:
+ Use 'git' (all lowercase) when talking about commands i.e. something
+ the user would type into a shell and use 'Git' (uppercase first letter)
+ when talking about the version control system and its properties.
+
+ A few commented examples follow to provide reference when writing or
+ modifying paragraphs or option/command explanations that contain options
+ or commands:
+
+ Literal examples (e.g. use of command-line options, command names, and
+ configuration variables) are typeset in monospace, and if you can use
+ `backticks around word phrases`, do so.
+ `--pretty=oneline`
+ `git rev-list`
+ `remote.pushDefault`
+
+ Word phrases enclosed in `backtick characters` are rendered literally
+ and will not be further expanded. The use of `backticks` to achieve the
+ previous rule means that literal examples should not use AsciiDoc
+ escapes.
+ Correct:
+ `--pretty=oneline`
+ Incorrect:
+ `\--pretty=oneline`
+
+ If some place in the documentation needs to typeset a command usage
+ example with inline substitutions, it is fine to use +monospaced and
+ inline substituted text+ instead of `monospaced literal text`, and with
+ the former, the part that should not get substituted must be
+ quoted/escaped.
diff --git a/Documentation/Makefile b/Documentation/Makefile
index d40e211..3e39e28 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -1,63 +1,124 @@
-MAN1_TXT= \
- $(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
- $(wildcard git-*.txt)) \
- gitk.txt gitweb.txt git.txt
-MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt githooks.txt \
- gitrepository-layout.txt gitweb.conf.txt
-MAN7_TXT=gitcli.txt gittutorial.txt gittutorial-2.txt \
- gitcvs-migration.txt gitcore-tutorial.txt gitglossary.txt \
- gitdiffcore.txt gitnamespaces.txt gitrevisions.txt gitworkflows.txt
+# Guard against environment variables
+MAN1_TXT =
+MAN5_TXT =
+MAN7_TXT =
+TECH_DOCS =
+ARTICLES =
+SP_ARTICLES =
+OBSOLETE_HTML =
+
+MAN1_TXT += $(filter-out \
+ $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
+ $(wildcard git-*.txt))
+MAN1_TXT += git.txt
+MAN1_TXT += gitk.txt
+MAN1_TXT += gitremote-helpers.txt
+MAN1_TXT += gitweb.txt
+
+MAN5_TXT += gitattributes.txt
+MAN5_TXT += githooks.txt
+MAN5_TXT += gitignore.txt
+MAN5_TXT += gitmodules.txt
+MAN5_TXT += gitrepository-layout.txt
+MAN5_TXT += gitweb.conf.txt
+
+MAN7_TXT += gitcli.txt
+MAN7_TXT += gitcore-tutorial.txt
MAN7_TXT += gitcredentials.txt
+MAN7_TXT += gitcvs-migration.txt
+MAN7_TXT += gitdiffcore.txt
+MAN7_TXT += giteveryday.txt
+MAN7_TXT += gitglossary.txt
+MAN7_TXT += gitnamespaces.txt
+MAN7_TXT += gitrevisions.txt
+MAN7_TXT += gittutorial-2.txt
+MAN7_TXT += gittutorial.txt
+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))
+MAN_XML = $(patsubst %.txt,%.xml,$(MAN_TXT))
+MAN_HTML = $(patsubst %.txt,%.html,$(MAN_TXT))
-DOC_HTML=$(MAN_HTML)
+OBSOLETE_HTML += everyday.html
+OBSOLETE_HTML += git-remote-helpers.html
+DOC_HTML = $(MAN_HTML) $(OBSOLETE_HTML)
-ARTICLES = howto-index
-ARTICLES += everyday
+ARTICLES += howto-index
ARTICLES += git-tools
ARTICLES += git-bisect-lk2009
# with their own formatting rules.
-SP_ARTICLES = user-manual
+SP_ARTICLES += user-manual
+SP_ARTICLES += howto/new-command
SP_ARTICLES += howto/revert-branch-rebase
SP_ARTICLES += howto/using-merge-subtree
SP_ARTICLES += howto/using-signed-tag-in-pull-request
+SP_ARTICLES += howto/use-git-daemon
+SP_ARTICLES += howto/update-hook-example
+SP_ARTICLES += howto/setup-git-server-over-http
+SP_ARTICLES += howto/separating-topic-branches
+SP_ARTICLES += howto/revert-a-faulty-merge
+SP_ARTICLES += howto/recover-corrupted-blob-object
+SP_ARTICLES += howto/recover-corrupted-object-harder
+SP_ARTICLES += howto/rebuild-from-update-hook
+SP_ARTICLES += howto/rebase-from-internal-branch
+SP_ARTICLES += howto/keep-canonical-history-correct
+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 += technical/http-protocol
+TECH_DOCS += technical/index-format
+TECH_DOCS += technical/pack-format
+TECH_DOCS += technical/pack-heuristics
+TECH_DOCS += technical/pack-protocol
+TECH_DOCS += technical/protocol-capabilities
+TECH_DOCS += technical/protocol-common
+TECH_DOCS += technical/racy-git
+TECH_DOCS += technical/send-pack-pipeline
+TECH_DOCS += technical/shallow
+TECH_DOCS += technical/trivial-merge
+SP_ARTICLES += $(TECH_DOCS)
SP_ARTICLES += technical/api-index
DOC_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
-DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT))
-DOC_MAN5=$(patsubst %.txt,%.5,$(MAN5_TXT))
-DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT))
-
-prefix?=$(HOME)
-bindir?=$(prefix)/bin
-htmldir?=$(prefix)/share/doc/git-doc
-pdfdir?=$(prefix)/share/doc/git-doc
-mandir?=$(prefix)/share/man
-man1dir=$(mandir)/man1
-man5dir=$(mandir)/man5
-man7dir=$(mandir)/man7
-# DESTDIR=
-
-ASCIIDOC=asciidoc
+DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT))
+DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT))
+DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT))
+
+prefix ?= $(HOME)
+bindir ?= $(prefix)/bin
+htmldir ?= $(prefix)/share/doc/git-doc
+infodir ?= $(prefix)/share/info
+pdfdir ?= $(prefix)/share/doc/git-doc
+mandir ?= $(prefix)/share/man
+man1dir = $(mandir)/man1
+man5dir = $(mandir)/man5
+man7dir = $(mandir)/man7
+# DESTDIR =
+
+ASCIIDOC = asciidoc
ASCIIDOC_EXTRA =
+ASCIIDOC_HTML = xhtml11
+ASCIIDOC_DOCBOOK = docbook
+ASCIIDOC_CONF = -f asciidoc.conf
+ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
+ -agit_version=$(GIT_VERSION)
+TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
+TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
MANPAGE_XSL = manpage-normal.xsl
+XMLTO = xmlto
XMLTO_EXTRA =
-INSTALL?=install
+INSTALL ?= install
RM ?= rm -f
MAN_REPO = ../../git-manpages
HTML_REPO = ../../git-htmldocs
-infodir?=$(prefix)/share/info
-MAKEINFO=makeinfo
-INSTALL_INFO=install-info
-DOCBOOK2X_TEXI=docbook2x-texi
-DBLATEX=dblatex
+MAKEINFO = makeinfo
+INSTALL_INFO = install-info
+DOCBOOK2X_TEXI = docbook2x-texi
+DBLATEX = dblatex
+ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex
ifndef PERL_PATH
PERL_PATH = /usr/bin/perl
endif
@@ -66,12 +127,6 @@ endif
-include ../config.mak
#
-# For asciidoc ...
-# -7.1.2, set ASCIIDOC7
-# 8.0-, no extra settings are needed
-#
-
-#
# For docbook-xsl ...
# -1.68.1, no extra settings are needed?
# 1.69.0, set ASCIIDOC_ROFF?
@@ -81,9 +136,6 @@ endif
# 1.73.0-, no extra settings are needed
#
-ifndef ASCIIDOC7
-ASCIIDOC_EXTRA += -a asciidoc7compatible -a no-inline-literal
-endif
ifdef DOCBOOK_XSL_172
ASCIIDOC_EXTRA += -a git-asciidoc-no-roff
MANPAGE_XSL = manpage-1.72.xsl
@@ -124,14 +176,15 @@ SHELL_PATH ?= $(SHELL)
# Shell quote;
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
-#
-# Please note that there is a minor bug in asciidoc.
-# The version after 6.0.3 _will_ include the patch found here:
-# http://marc.theaimsgroup.com/?l=git&m=111558757202243&w=2
-#
-# Until that version is released you may have to apply the patch
-# yourself - yes, all 6 characters of it!
-#
+ifdef DEFAULT_PAGER
+DEFAULT_PAGER_SQ = $(subst ','\'',$(DEFAULT_PAGER))
+ASCIIDOC_EXTRA += -a 'git-default-pager=$(DEFAULT_PAGER_SQ)'
+endif
+
+ifdef DEFAULT_EDITOR
+DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR))
+ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)'
+endif
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
QUIET_SUBDIR1 =
@@ -163,8 +216,6 @@ all: html man
html: $(DOC_HTML)
-$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7): asciidoc.conf
-
man: man1 man5 man7
man1: $(DOC_MAN1)
man5: $(DOC_MAN5)
@@ -209,7 +260,11 @@ install-html: html
#
# Determine "include::" file references in asciidoc files.
#
-doc.dep : $(wildcard *.txt) build-docdep.perl
+docdep_prereqs = \
+ mergetools-list.made $(mergetools_txt) \
+ cmd-list.made $(cmds_txt)
+
+doc.dep : $(docdep_prereqs) $(wildcard *.txt) build-docdep.perl
$(QUIET_GEN)$(RM) $@+ $@ && \
$(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
mv $@+ $@
@@ -233,19 +288,37 @@ cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \
date >$@
+mergetools_txt = mergetools-diff.txt mergetools-merge.txt
+
+$(mergetools_txt): mergetools-list.made
+
+mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
+ $(QUIET_GEN)$(RM) $@ && \
+ $(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
+ . ../git-mergetool--lib.sh && \
+ show_tool_names can_diff "* " || :' >mergetools-diff.txt && \
+ $(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
+ . ../git-mergetool--lib.sh && \
+ show_tool_names can_merge "* " || :' >mergetools-merge.txt && \
+ date >$@
+
clean:
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
$(RM) *.pdf
$(RM) howto-index.txt howto/*.html doc.dep
- $(RM) technical/api-*.html technical/api-index.txt
- $(RM) $(cmds_txt) *.made
+ $(RM) technical/*.html technical/api-index.txt
+ $(RM) $(cmds_txt) $(mergetools_txt) *.made
$(RM) manpage-base-url.xsl
-$(MAN_HTML): %.html : %.txt
+$(MAN_HTML): %.html : %.txt asciidoc.conf
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
- $(ASCIIDOC) -b xhtml11 -d manpage -f asciidoc.conf \
- $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
+ $(TXT_TO_HTML) -d manpage -o $@+ $< && \
+ mv $@+ $@
+
+$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf
+ $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
+ $(TXT_TO_HTML) -o $@+ $< && \
mv $@+ $@
manpage-base-url.xsl: manpage-base-url.xsl.in
@@ -253,26 +326,25 @@ manpage-base-url.xsl: manpage-base-url.xsl.in
%.1 %.5 %.7 : %.xml manpage-base-url.xsl
$(QUIET_XMLTO)$(RM) $@ && \
- xmlto -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+ $(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
-%.xml : %.txt
+%.xml : %.txt asciidoc.conf
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
- $(ASCIIDOC) -b docbook -d manpage -f asciidoc.conf \
- $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) -o $@+ $< && \
+ $(TXT_TO_XML) -d manpage -o $@+ $< && \
mv $@+ $@
user-manual.xml: user-manual.txt user-manual.conf
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
- $(ASCIIDOC) $(ASCIIDOC_EXTRA) -b docbook -d book -o $@+ $< && \
+ $(TXT_TO_XML) -d article -o $@+ $< && \
mv $@+ $@
technical/api-index.txt: technical/api-index-skel.txt \
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
-$(patsubst %,%.html,$(API_DOCS) technical/api-index): %.html : %.txt
- $(QUIET_ASCIIDOC)$(ASCIIDOC) -b xhtml11 -f asciidoc.conf \
- $(ASCIIDOC_EXTRA) -agit_version=$(GIT_VERSION) $*.txt
+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
XSLT = docbook.xsl
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
@@ -294,7 +366,7 @@ user-manual.texi: user-manual.xml
user-manual.pdf: user-manual.xml
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
- $(DBLATEX) -o $@+ -p /etc/asciidoc/dblatex/asciidoc-dblatex.xsl -s /etc/asciidoc/dblatex/asciidoc-dblatex.sty $< && \
+ $(DBLATEX) -o $@+ -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty $< && \
mv $@+ $@
gitman.texi: $(MAN_XML) cat-texi.perl
@@ -315,24 +387,26 @@ $(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
howto-index.txt: howto-index.sh $(wildcard howto/*.txt)
$(QUIET_GEN)$(RM) $@+ $@ && \
- '$(SHELL_PATH_SQ)' ./howto-index.sh $(wildcard howto/*.txt) >$@+ && \
+ '$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(wildcard howto/*.txt)) >$@+ && \
mv $@+ $@
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
- $(QUIET_ASCIIDOC)$(ASCIIDOC) $(ASCIIDOC_EXTRA) -b xhtml11 $*.txt
+ $(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
WEBDOC_DEST = /pub/software/scm/git/docs
+howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
- sed -e '1,/^$$/d' $< | $(ASCIIDOC) $(ASCIIDOC_EXTRA) -b xhtml11 - >$@+ && \
+ sed -e '1,/^$$/d' $< | \
+ $(TXT_TO_HTML) - >$@+ && \
mv $@+ $@
install-webdoc : html
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
-# You must have a clone of git-htmldocs and git-manpages repositories
-# next to the git repository itself for the following to work.
+# You must have a clone of 'git-htmldocs' and 'git-manpages' repositories
+# next to the 'git' repository itself for the following to work.
quick-install: quick-install-man
@@ -350,4 +424,7 @@ require-htmlrepo::
quick-install-html: require-htmlrepo
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir)
+print-man1:
+ @for i in $(MAN1_TXT); do echo $$i; done
+
.PHONY: FORCE
diff --git a/Documentation/RelNotes/1.5.2.1.txt b/Documentation/RelNotes/1.5.2.1.txt
index ebf20e2..d41984d 100644
--- a/Documentation/RelNotes/1.5.2.1.txt
+++ b/Documentation/RelNotes/1.5.2.1.txt
@@ -45,9 +45,3 @@ Fixes since v1.5.2
- git-fastimport --import-marks was broken; fixed.
- A lot of documentation updates, clarifications and fixes.
-
---
-exec >/var/tmp/1
-O=v1.5.2-65-g996e2d6
-echo O=`git describe refs/heads/maint`
-git shortlog --no-merges $O..refs/heads/maint
diff --git a/Documentation/RelNotes/1.6.0.2.txt b/Documentation/RelNotes/1.6.0.2.txt
index e1e24b3..7d8fb85 100644
--- a/Documentation/RelNotes/1.6.0.2.txt
+++ b/Documentation/RelNotes/1.6.0.2.txt
@@ -79,9 +79,3 @@ Fixes since v1.6.0.1
packfile.
Also contains many documentation updates.
-
---
-exec >/var/tmp/1
-O=v1.6.0.1-78-g3632cfc
-echo O=$(git describe maint)
-git shortlog --no-merges $O..maint
diff --git a/Documentation/RelNotes/1.6.1.3.txt b/Documentation/RelNotes/1.6.1.3.txt
index 6f0bde1..cd08d81 100644
--- a/Documentation/RelNotes/1.6.1.3.txt
+++ b/Documentation/RelNotes/1.6.1.3.txt
@@ -26,7 +26,3 @@ Fixes since v1.6.1.2
* RPM binary package installed the html manpages in a wrong place.
Also includes minor documentation fixes and updates.
-
-
---
-git shortlog --no-merges v1.6.1.2-33-gc789350..
diff --git a/Documentation/RelNotes/1.6.1.4.txt b/Documentation/RelNotes/1.6.1.4.txt
index 0ce6316..ccbad79 100644
--- a/Documentation/RelNotes/1.6.1.4.txt
+++ b/Documentation/RelNotes/1.6.1.4.txt
@@ -39,6 +39,3 @@ Fixes since v1.6.1.3
This fix was first merged to 1.6.2.3.
Also includes minor documentation fixes and updates.
-
---
-git shortlog --no-merges v1.6.1.3..
diff --git a/Documentation/RelNotes/1.6.1.txt b/Documentation/RelNotes/1.6.1.txt
index adb7cca..7b152a6 100644
--- a/Documentation/RelNotes/1.6.1.txt
+++ b/Documentation/RelNotes/1.6.1.txt
@@ -278,9 +278,3 @@ release, unless otherwise noted.
* "gitweb" did not mark non-ASCII characters imported from external HTML fragments
correctly.
-
---
-exec >/var/tmp/1
-O=v1.6.1-rc3-74-gf66bc5f
-echo O=$(git describe master)
-git shortlog --no-merges $O..master ^maint
diff --git a/Documentation/RelNotes/1.7.10.1.txt b/Documentation/RelNotes/1.7.10.1.txt
new file mode 100644
index 0000000..be68524
--- /dev/null
+++ b/Documentation/RelNotes/1.7.10.1.txt
@@ -0,0 +1,78 @@
+Git v1.7.10.1 Release Notes
+===========================
+
+Additions since v1.7.10
+-----------------------
+
+Localization message files for Danish and German have been added.
+
+
+Fixes since v1.7.10
+-------------------
+
+ * "git add -p" is not designed to deal with unmerged paths but did
+ not exclude them and tried to apply funny patches only to fail.
+
+ * "git blame" started missing quite a few changes from the origin
+ since we stopped using the diff minimization by default in v1.7.2
+ era.
+
+ * When PATH contains an unreadable directory, alias expansion code
+ did not kick in, and failed with an error that said "git-subcmd"
+ was not found.
+
+ * "git clean -d -f" (not "-d -f -f") is supposed to protect nested
+ working trees of independent git repositories that exist in the
+ current project working tree from getting removed, but the
+ protection applied only to such working trees that are at the
+ top-level of the current project by mistake.
+
+ * "git commit --author=$name" did not tell the name that was being
+ recorded in the resulting commit to hooks, even though it does do
+ so when the end user overrode the authorship via the
+ "GIT_AUTHOR_NAME" environment variable.
+
+ * When "git commit --template F" errors out because the user did not
+ touch the message, it claimed that it aborts due to "empty
+ message", which was utterly wrong.
+
+ * The regexp configured with diff.wordregex was incorrectly reused
+ across files.
+
+ * An age-old corner case bug in combine diff (only triggered with -U0
+ and the hunk at the beginning of the file needs to be shown) has
+ been fixed.
+
+ * Rename detection logic used to match two empty files as renames
+ during merge-recursive, leading to unnatural mismerges.
+
+ * The parser in "fast-import" did not diagnose ":9" style references
+ that is not followed by required SP/LF as an error.
+
+ * When "git fetch" encounters repositories with too many references,
+ the command line of "fetch-pack" that is run by a helper
+ e.g. remote-curl, may fail to hold all of them. Now such an
+ internal invocation can feed the references through the standard
+ input of "fetch-pack".
+
+ * "git fetch" that recurses into submodules on demand did not check
+ if it needs to go into submodules when non branches (most notably,
+ tags) are fetched.
+
+ * "log -p --graph" used with "--stat" had a few formatting error.
+
+ * Running "notes merge --commit" failed to perform correctly when run
+ from any directory inside $GIT_DIR/. When "notes merge" stops with
+ conflicts, $GIT_DIR/NOTES_MERGE_WORKTREE is the place a user edits
+ to resolve it.
+
+ * 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.
+
+ * Giving "--continue" to a conflicted "rebase -i" session skipped a
+ commit that only results in changes to submodules.
+
+Also contains minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.10.2.txt b/Documentation/RelNotes/1.7.10.2.txt
new file mode 100644
index 0000000..7a7e9d6
--- /dev/null
+++ b/Documentation/RelNotes/1.7.10.2.txt
@@ -0,0 +1,85 @@
+Git v1.7.10.2 Release Notes
+===========================
+
+Fixes since v1.7.10.1
+---------------------
+
+ * The test scaffolding for git-daemon was flaky.
+
+ * The test scaffolding for fast-import was flaky.
+
+ * The filesystem boundary was not correctly reported when .git directory
+ discovery stopped at a mount point.
+
+ * HTTP transport that requires authentication did not work correctly when
+ multiple connections are used simultaneously.
+
+ * Minor memory leak during unpack_trees (hence "merge" and "checkout"
+ to check out another branch) has been plugged.
+
+ * In the older days, the header "Conflicts:" in "cherry-pick" and "merge"
+ was separated by a blank line from the list of paths that follow for
+ readability, but when "merge" was rewritten in C, we lost it by
+ mistake. Remove the newline from "cherry-pick" to make them match
+ again.
+
+ * The command line parser choked "git cherry-pick $name" when $name can
+ be both revision name and a pathname, even though $name can never be a
+ path in the context of the command.
+
+ * The "include.path" facility in the configuration mechanism added in
+ 1.7.10 forgot to interpret "~/path" and "~user/path" as it should.
+
+ * "git config --rename-section" to rename an existing section into a
+ bogus one did not check the new name.
+
+ * The "diff --no-index" codepath used limited-length buffers, risking
+ pathnames getting truncated. Update it to use the strbuf API.
+
+ * The report from "git fetch" said "new branch" even for a non branch
+ ref.
+
+ * The http-backend (the server side of the smart http transfer) used
+ to overwrite GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL with the
+ value obtained from REMOTE_USER unconditionally, making it
+ impossible for the server side site-specific customization to use
+ different identity sources to affect the names logged. It now uses
+ REMOTE_USER only as a fallback value.
+
+ * "log --graph" was not very friendly with "--stat" option and its
+ output had line breaks at wrong places.
+
+ * Octopus merge strategy did not reduce heads that are recorded in the
+ final commit correctly.
+
+ * "git push" over smart-http lost progress output a few releases ago;
+ this release resurrects it.
+
+ * The error and advice messages given by "git push" when it fails due
+ to non-ff were not very helpful to new users; it has been broken
+ into three cases, and each is given a separate advice message.
+
+ * The insn sheet given by "rebase -i" did not make it clear that the
+ insn lines can be re-ordered to affect the order of the commits in
+ the resulting history.
+
+ * "git repack" used to write out unreachable objects as loose objects
+ when repacking, even if such loose objects will immediately pruned
+ due to its age.
+
+ * A contrib script "rerere-train" did not work out of the box unless
+ user futzed with her $PATH.
+
+ * "git rev-parse --show-prefix" used to emit nothing when run at the
+ top-level of the working tree, but now it gives a blank line.
+
+ * The i18n of error message "git stash save" was not properly done.
+
+ * "git submodule" used a sed script that some platforms mishandled.
+
+ * When using a Perl script on a system where "perl" found on user's
+ $PATH could be ancient or otherwise broken, we allow builders to
+ specify the path to a good copy of Perl with $PERL_PATH. The
+ gitweb test forgot to use that Perl when running its test.
+
+Also contains minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.10.3.txt b/Documentation/RelNotes/1.7.10.3.txt
new file mode 100644
index 0000000..703fbf1
--- /dev/null
+++ b/Documentation/RelNotes/1.7.10.3.txt
@@ -0,0 +1,43 @@
+Git v1.7.10.3 Release Notes
+===========================
+
+Fixes since v1.7.10.2
+---------------------
+
+ * The message file for German translation has been updated a bit.
+
+ * Running "git checkout" on an unborn branch used to corrupt HEAD.
+
+ * When checking out another commit from an already detached state, we
+ used to report all commits that are not reachable from any of the
+ refs as lossage, but some of them might be reachable from the new
+ HEAD, and there is no need to warn about them.
+
+ * Some time ago, "git clone" lost the progress output for its
+ "checkout" phase; when run without any "--quiet" option, it should
+ give progress to the lengthy operation.
+
+ * The directory path used in "git diff --no-index", when it recurses
+ down, was broken with a recent update after v1.7.10.1 release.
+
+ * "log -z --pretty=tformat:..." did not terminate each record with
+ NUL. The fix is not entirely correct when the output also asks for
+ --patch and/or --stat, though.
+
+ * The DWIM behaviour for "log --pretty=format:%gd -g" was somewhat
+ broken and gave undue precedence to configured log.date, causing
+ "git stash list" to show "stash@{time stamp string}".
+
+ * "git status --porcelain" ignored "--branch" option by mistake. The
+ output for "git status --branch -z" was also incorrect and did not
+ terminate the record for the current branch name with NUL as asked.
+
+ * When a submodule repository uses alternate object store mechanism,
+ some commands that were started from the superproject did not
+ notice it and failed with "No such object" errors. The subcommands
+ of "git submodule" command that recursed into the submodule in a
+ separate process were OK; only the ones that cheated and peeked
+ directly into the submodule's repository from the primary process
+ were affected.
+
+Also contains minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.10.4.txt b/Documentation/RelNotes/1.7.10.4.txt
new file mode 100644
index 0000000..326670d
--- /dev/null
+++ b/Documentation/RelNotes/1.7.10.4.txt
@@ -0,0 +1,29 @@
+Git v1.7.10.4 Release Notes
+===========================
+
+Fixes since v1.7.10.3
+---------------------
+
+ * The message file for Swedish translation has been updated a bit.
+
+ * A name taken from mailmap was copied into an internal buffer
+ incorrectly and could overun the buffer if it is too long.
+
+ * A malformed commit object that has a header line chomped in the
+ middle could kill git with a NULL pointer dereference.
+
+ * An author/committer name that is a single character was mishandled
+ as an invalid name by mistake.
+
+ * The progress indicator for a large "git checkout" was sent to
+ stderr even if it is not a terminal.
+
+ * "git grep -e '$pattern'", unlike the case where the patterns are
+ read from a file, did not treat individual lines in the given
+ pattern argument as separate regular expressions as it should.
+
+ * When "git rebase" was given a bad commit to replay the history on,
+ its error message did not correctly give the command line argument
+ it had trouble parsing.
+
+Also contains minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.10.5.txt b/Documentation/RelNotes/1.7.10.5.txt
new file mode 100644
index 0000000..4db1770
--- /dev/null
+++ b/Documentation/RelNotes/1.7.10.5.txt
@@ -0,0 +1,12 @@
+Git v1.7.10.5 Release Notes
+===========================
+
+Fixes since v1.7.10.4
+---------------------
+
+ * "git fast-export" did not give a readable error message when the
+ same mark erroneously appeared twice in the --import-marks input.
+
+ * "git rebase -p" used to pay attention to rebase.autosquash which
+ was wrong. "git rebase -p -i" should, but "git rebase -p" by
+ itself should not.
diff --git a/Documentation/RelNotes/1.7.10.txt b/Documentation/RelNotes/1.7.10.txt
new file mode 100644
index 0000000..58100bf
--- /dev/null
+++ b/Documentation/RelNotes/1.7.10.txt
@@ -0,0 +1,219 @@
+Git v1.7.10 Release Notes
+=========================
+
+Compatibility Notes
+-------------------
+
+ * From this release on, the "git merge" command in an interactive
+ session will start an editor when it automatically resolves the
+ merge for the user to explain the resulting commit, just like the
+ "git commit" command does when it wasn't given a commit message.
+
+ If you have a script that runs "git merge" and keeps its standard
+ input and output attached to the user's terminal, and if you do not
+ want the user to explain the resulting merge commits, you can
+ export GIT_MERGE_AUTOEDIT environment variable set to "no", like
+ this:
+
+ #!/bin/sh
+ GIT_MERGE_AUTOEDIT=no
+ export GIT_MERGE_AUTOEDIT
+
+ to disable this behavior (if you want your users to explain their
+ merge commits, you do not have to do anything). Alternatively, you
+ can give the "--no-edit" option to individual invocations of the
+ "git merge" command if you know everybody who uses your script has
+ Git v1.7.8 or newer.
+
+ * The "--binary/-b" options to "git am" have been a no-op for quite a
+ while and were deprecated in mid 2008 (v1.6.0). When you give these
+ options to "git am", it will now warn and ask you not to use them.
+
+ * When you do not tell which branches and tags to push to the "git
+ push" command in any way, the command used "matching refs" rule to
+ update remote branches and tags with branches and tags with the
+ same name you locally have. In future versions of Git, this will
+ change to push out only your current branch according to either the
+ "upstream" or the "current" rule. Although "upstream" may be more
+ powerful once the user understands Git better, the semantics
+ "current" gives is simpler and easier to understand for beginners
+ and may be a safer and better default option. We haven't decided
+ yet which one to switch to.
+
+
+Updates since v1.7.9
+--------------------
+
+UI, Workflows & Features
+
+ * various "gitk" updates.
+ - show the path to the top level directory in the window title
+ - update preference edit dialog
+ - display file list correctly when directories are given on command line
+ - make "git-describe" output in the log message into a clickable link
+ - avoid matching the UNIX timestamp part when searching all fields
+ - give preference to symbolic font names like sans & monospace
+ - allow comparing two commits using a mark
+ - "gitk" honors log.showroot configuration.
+
+ * Teams for localizing the messages from the Porcelain layer of
+ commands are starting to form, thanks to Jiang Xin who volunteered
+ to be the localization coordinator. Translated messages for
+ simplified Chinese, Swedish and Portuguese are available.
+
+ * The configuration mechanism learned an "include" facility; an
+ assignment to the include.path pseudo-variable causes the named
+ file to be included in-place when Git looks up configuration
+ variables.
+
+ * A content filter (clean/smudge) used to be just a way to make the
+ recorded contents "more useful", and allowed to fail; a filter can
+ now optionally be marked as "required".
+
+ * Options whose names begin with "--no-" (e.g. the "--no-verify"
+ option of the "git commit" command) can be negated by omitting
+ "no-" from its name, e.g. "git commit --verify".
+
+ * "git am" learned to pass "-b" option to underlying "git mailinfo", so
+ that a bracketed string other than "PATCH" at the beginning can be kept.
+
+ * "git clone" learned "--single-branch" option to limit cloning to a
+ single branch (surprise!); tags that do not point into the history
+ of the branch are not fetched.
+
+ * "git clone" learned to detach the HEAD in the resulting repository
+ when the user specifies a tag with "--branch" (e.g., "--branch=v1.0").
+ Clone also learned to print the usual "detached HEAD" advice in such
+ a case, similar to "git checkout v1.0".
+
+ * When showing a patch while ignoring whitespace changes, the context
+ lines are taken from the postimage, in order to make it easier to
+ view the output.
+
+ * "git diff --stat" learned to adjust the width of the output on
+ wider terminals, and give more columns to pathnames as needed.
+
+ * "diff-highlight" filter (in contrib/) was updated to produce more
+ aesthetically pleasing output.
+
+ * "fsck" learned "--no-dangling" option to omit dangling object
+ information.
+
+ * "git log -G" and "git log -S" learned to pay attention to the "-i"
+ option. With "-i", "log -G" ignores the case when finding patch
+ hunks that introduce or remove a string that matches the given
+ pattern. Similarly with "-i", "log -S" ignores the case when
+ finding the commit the given block of text appears or disappears
+ from the file.
+
+ * "git merge" in an interactive session learned to spawn the editor
+ by default to let the user edit the auto-generated merge message,
+ to encourage people to explain their merges better. Legacy scripts
+ can export GIT_MERGE_AUTOEDIT=no to retain the historical behavior.
+ Both "git merge" and "git pull" can be given --no-edit from the
+ command line to accept the auto-generated merge message.
+
+ * The advice message given when the user didn't give enough clue on
+ what to merge to "git pull" and "git merge" has been updated to
+ be more concise and easier to understand.
+
+ * "git push" learned the "--prune" option, similar to "git fetch".
+
+ * The whole directory that houses a top-level superproject managed by
+ "git submodule" can be moved to another place.
+
+ * "git symbolic-ref" learned the "--short" option to abbreviate the
+ refname it shows unambiguously.
+
+ * "git tag --list" can be given "--points-at <object>" to limit its
+ output to those that point at the given object.
+
+ * "gitweb" allows intermediate entries in the directory hierarchy
+ that leads to a project to be clicked, which in turn shows the
+ list of projects inside that directory.
+
+ * "gitweb" learned to read various pieces of information for the
+ repositories lazily, instead of reading everything that could be
+ needed (including the ones that are not necessary for a specific
+ task).
+
+ * Project search in "gitweb" shows the substring that matched in the
+ project name and description highlighted.
+
+ * HTTP transport learned to authenticate with a proxy if needed.
+
+ * A new script "diffall" is added to contrib/; it drives an
+ external tool to perform a directory diff of two Git revisions
+ in one go, unlike "difftool" that compares one file at a time.
+
+Foreign Interface
+
+ * Improved handling of views, labels and branches in "git-p4" (in contrib).
+
+ * "git-p4" (in contrib) suffered from unnecessary merge conflicts when
+ p4 expanded the embedded $RCS$-like keywords; it can be now told to
+ unexpand them.
+
+ * Some "git-svn" updates.
+
+ * "vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and
+ support incremental imports.
+
+ * "git difftool/mergetool" learned to drive DeltaWalker.
+
+Performance
+
+ * Unnecessary calls to parse_object() "git upload-pack" makes in
+ response to "git fetch", have been eliminated, to help performance
+ in repositories with excessive number of refs.
+
+Internal Implementation (please report possible regressions)
+
+ * Recursive call chains in "git index-pack" to deal with long delta
+ chains have been flattened, to reduce the stack footprint.
+
+ * Use of add_extra_ref() API is now gone, to make it possible to
+ cleanly restructure the overall refs API.
+
+ * The command line parser of "git pack-objects" now uses parse-options
+ API.
+
+ * The test suite supports the new "test_pause" helper function.
+
+ * Parallel to the test suite, there is a beginning of performance
+ benchmarking framework.
+
+ * t/Makefile is adjusted to prevent newer versions of GNU make from
+ running tests in seemingly random order.
+
+ * The code to check if a path points at a file beyond a symbolic link
+ has been restructured to be thread-safe.
+
+ * When pruning directories that has become empty during "git prune"
+ and "git prune-packed", call closedir() that iterates over a
+ directory before rmdir() it.
+
+Also contains minor documentation updates and code clean-ups.
+
+
+Fixes since v1.7.9
+------------------
+
+Unless otherwise noted, all the fixes since v1.7.9 in the maintenance
+releases are contained in this release (see release notes to them for
+details).
+
+ * Build with NO_PERL_MAKEMAKER was broken and Git::I18N did not work
+ with versions of Perl older than 5.8.3.
+ (merge 5eb660e ab/perl-i18n later to maint).
+
+ * "git tag -s" honored "gpg.program" configuration variable since
+ 1.7.9, but "git tag -v" and "git verify-tag" didn't.
+ (merge a2c2506 az/verify-tag-use-gpg-config later to maint).
+
+ * "configure" script learned to take "--with-sane-tool-path" from the
+ command line to record SANE_TOOL_PATH (used to avoid broken platform
+ tools in /usr/bin) in config.mak.autogen. This may be useful for
+ people on Solaris who have saner tools outside /usr/xpg[46]/bin.
+
+ * zsh port of bash completion script needed another workaround.
diff --git a/Documentation/RelNotes/1.7.11.1.txt b/Documentation/RelNotes/1.7.11.1.txt
new file mode 100644
index 0000000..577ecca
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.1.txt
@@ -0,0 +1,9 @@
+Git v1.7.11.1 Release Notes
+===========================
+
+Fixes since v1.7.11
+-------------------
+
+ * The cross links in the HTML version of manual pages were broken.
+
+Also contains minor typofixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.11.2.txt b/Documentation/RelNotes/1.7.11.2.txt
new file mode 100644
index 0000000..f0cfd02
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.2.txt
@@ -0,0 +1,53 @@
+Git v1.7.11.2 Release Notes
+===========================
+
+Fixes since v1.7.11.1
+---------------------
+
+ * On Cygwin, the platform pread(2) is not thread safe, just like our
+ own compat/ emulation, and cannot be used in the index-pack
+ program. Makefile variable NO_THREAD_SAFE_PREAD can be defined to
+ avoid use of this function in a threaded program.
+
+ * "git add" allows adding a regular file to the path where a
+ submodule used to exist, but "git update-index" does not allow an
+ equivalent operation to Porcelain writers.
+
+ * "git archive" incorrectly computed the header checksum; the symptom
+ was observed only when using pathnames with hi-bit set.
+
+ * "git blame" did not try to make sure that the abbreviated commit
+ object names in its output are unique.
+
+ * Running "git bundle verify" on a bundle that records a complete
+ history said "it requires these 0 commits".
+
+ * "git clone --single-branch" to clone a single branch did not limit
+ the cloning to the specified branch.
+
+ * "git diff --no-index" did not correctly handle relative paths and
+ did not correctly give exit codes when run under "--quiet" option.
+
+ * "git diff --no-index" did not work with pagers correctly.
+
+ * "git diff COPYING HEAD:COPYING" gave a nonsense error message that
+ claimed that the tree-ish HEAD did not have COPYING in it.
+
+ * When "git log" gets "--simplify-merges/by-decoration" together with
+ "--first-parent", the combination of these options makes the
+ simplification logic to use in-core commit objects that haven't
+ been examined for relevance, either producing incorrect result or
+ taking too long to produce any output. Teach the simplification
+ logic to ignore commits that the first-parent traversal logic
+ ignored when both are in effect to work around the issue.
+
+ * "git ls-files --exclude=t -i" did not consider anything under t/ as
+ excluded, as it did not pay attention to exclusion of leading paths
+ while walking the index. Other two users of excluded() are also
+ updated.
+
+ * "git request-pull $url dev" when the tip of "dev" branch was tagged
+ with "ext4-for-linus" used the contents from the tag in the output
+ but still asked the "dev" branch to be pulled, not the tag.
+
+Also contains minor typofixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.11.3.txt b/Documentation/RelNotes/1.7.11.3.txt
new file mode 100644
index 0000000..64494f8
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.3.txt
@@ -0,0 +1,53 @@
+Git v1.7.11.3 Release Notes
+===========================
+
+Fixes since v1.7.11.3
+---------------------
+
+ * The error message from "git push $there :bogo" (and its equivalent
+ "git push $there --delete bogo") mentioned that we tried and failed
+ to guess what ref is being deleted based on the LHS of the refspec,
+ which we don't.
+
+ * A handful of files and directories we create had tighter than
+ necessary permission bits when the user wanted to have group
+ writability (e.g. by setting "umask 002").
+
+ * "commit --amend" used to refuse amending a commit with an empty log
+ message, with or without "--allow-empty-message".
+
+ * "git commit --amend --only --" was meant to allow "Clever" people to
+ rewrite the commit message without making any change even when they
+ have already changes for the next commit added to their index, but
+ it never worked as advertised since it was introduced in 1.3.0 era.
+
+ * Even though the index can record pathnames longer than 1<<12 bytes,
+ in some places we were not comparing them in full, potentially
+ replacing index entries instead of adding.
+
+ * "git show"'s auto-walking behaviour was an unreliable and
+ unpredictable hack; it now behaves just like "git log" does when it
+ walks.
+
+ * "git diff", "git status" and anything that internally uses the
+ comparison machinery was utterly broken when the difference
+ involved a file with "-" as its name. This was due to the way "git
+ diff --no-index" was incorrectly bolted on to the system, making
+ any comparison that involves a file "-" at the root level
+ incorrectly read from the standard input.
+
+ * We did not have test to make sure "git rebase" without extra options
+ filters out an empty commit in the original history.
+
+ * "git fast-export" produced an input stream for fast-import without
+ properly quoting pathnames when they contain SPs in them.
+
+ * "git checkout --detach", when you are still on an unborn branch,
+ should be forbidden, but it wasn't.
+
+ * Some implementations of Perl terminates "lines" with CRLF even when
+ the script is operating on just a sequence of bytes. Make sure to
+ use "$PERL_PATH", the version of Perl the user told Git to use, in
+ our tests to avoid unnecessary breakages in tests.
+
+Also contains minor typofixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.11.4.txt b/Documentation/RelNotes/1.7.11.4.txt
new file mode 100644
index 0000000..3a640c2
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.4.txt
@@ -0,0 +1,31 @@
+Git v1.7.11.4 Release Notes
+===========================
+
+Fixes since v1.7.11.3
+---------------------
+
+ * "$GIT_DIR/COMMIT_EDITMSG" file that is used to hold the commit log
+ message user edits was not documented.
+
+ * The advise() function did not use varargs correctly to format
+ its message.
+
+ * When "git am" failed, old timers knew to check .git/rebase-apply/patch
+ to see what went wrong, but we never told the users about it.
+
+ * "git commit-tree" learned a more natural "-p <parent> <tree>" order
+ of arguments long time ago, but recently forgot it by mistake.
+
+ * "git diff --no-ext-diff" did not output anything for a typechange
+ filepair when GIT_EXTERNAL_DIFF is in effect.
+
+ * In 1.7.9 era, we taught "git rebase" about the raw timestamp format
+ but we did not teach the same trick to "filter-branch", which rolled
+ a similar logic on its own.
+
+ * When "git submodule add" clones a submodule repository, it can get
+ confused where to store the resulting submodule repository in the
+ superproject's .git/ directory when there is a symbolic link in the
+ path to the current directory.
+
+Also contains minor typofixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.11.5.txt b/Documentation/RelNotes/1.7.11.5.txt
new file mode 100644
index 0000000..0a2ed85
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.5.txt
@@ -0,0 +1,36 @@
+Git v1.7.11.5 Release Notes
+===========================
+
+Fixes since v1.7.11.4
+---------------------
+
+ * The Makefile rule to create assembly output (primarily for
+ debugging purposes) did not create it next to the source.
+
+ * The code to avoid mistaken attempt to add the object directory
+ itself as its own alternate could read beyond end of a string while
+ comparison.
+
+ * On some architectures, "block-sha1" did not compile correctly
+ when compilers inferred alignment guarantees from our source we
+ did not intend to make.
+
+ * When talking to a remote running ssh on IPv6 enabled host, whose
+ address is spelled as "[HOST]:PORT", we did not parse the address
+ correctly and failed to connect.
+
+ * git-blame.el (in compat/) have been updated to use Elisp more
+ correctly.
+
+ * "git checkout <branchname>" to come back from a detached HEAD state
+ incorrectly computed reachability of the detached HEAD, resulting
+ in unnecessary warnings.
+
+ * "git mergetool" did not support --tool-help option to give the list
+ of supported backends, like "git difftool" does.
+
+ * "git grep" stopped spawning an external "grep" long time ago, but a
+ duplicated test to check internal and external "grep" was left
+ behind.
+
+Also contains minor typofixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.11.6.txt b/Documentation/RelNotes/1.7.11.6.txt
new file mode 100644
index 0000000..ba7d3c3
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.6.txt
@@ -0,0 +1,84 @@
+Git v1.7.11.6 Release Notes
+===========================
+
+Fixes since v1.7.11.5
+---------------------
+
+ * "ciabot" script (in contrib/) has been updated with extensive
+ documentation.
+
+ * "git foo" errored out with "Not a directory" when the user had a
+ non-directory on $PATH, and worse yet it masked an alias "foo" from
+ running.
+
+ * When the user exports a non-default IFS without HT, scripts that
+ rely on being able to parse "ls-files -s | while read a b c..."
+ started to fail. Protect them from such a misconfiguration.
+
+ * When the user gives an argument that can be taken as both a
+ revision name and a pathname without disambiguating with "--", we
+ used to give a help message "Use '--' to separate". The message
+ has been clarified to show where that '--' goes on the command
+ line.
+
+ * Documentation for the configuration file format had a confusing
+ example.
+
+ * Older parts of the documentation described as if having a regular
+ file in .git/refs/ hierarchy were the only way to have branches and
+ tags, which is not true for quite some time.
+
+ * It was generally understood that "--long-option"s to many of our
+ subcommands can be abbreviated to the unique prefix, but it was not
+ easy to find it described for new readers of the documentation set.
+
+ * The "--topo-order", "--date-order" (and the lack of either means
+ the default order) options to "rev-list" and "log" family of
+ commands were poorly described in the documentation.
+
+ * "git commit --amend" let the user edit the log message and then
+ died when the human-readable committer name was given
+ insufficiently by getpwent(3).
+
+ * The exit status code from "git config" was way overspecified while
+ being incorrect. The implementation has been updated to give the
+ documented status for a case that was documented, and introduce a
+ new code for "all other errors".
+
+ * The output from "git diff -B" for a file that ends with an
+ incomplete line did not put "\ No newline..." on a line of its own.
+
+ * "git diff" had a confusion between taking data from a path in the
+ working tree and taking data from an object that happens to have
+ name 0{40} recorded in a tree.
+
+ * The "--rebase" option to "git pull" can be abbreviated to "-r",
+ but we didn't document it.
+
+ * When "git push" triggered the automatic gc on the receiving end, a
+ message from "git prune" that said it was removing cruft leaked to
+ the standard output, breaking the communication protocol.
+
+ * The reflog entries left by "git rebase" and "git rebase -i" were
+ inconsistent (the interactive one gave an abbreviated object name).
+
+ * "git send-email" did not unquote encoded words that appear on the
+ header correctly, and lost "_" from strings.
+
+ * "git stash apply/pop" did not trigger "rerere" upon conflicts
+ unlike other mergy operations.
+
+ * "git submodule <cmd> path" did not error out when the path to the
+ submodule was misspelt.
+
+ * "git submodule update -f" did not update paths in the working tree
+ that has local changes.
+ (merge 01d4721 sz/submodule-force-update later to maint).
+
+ * "gitweb" when used with PATH_INFO failed to notice directories with
+ SP (and other characters that need URL-style quoting) in them.
+
+ * Fallback 'getpass' implementation made unportable use of stdio API.
+
+ * A utility shell function test_seq has been added as a replacement
+ for the 'seq' utility found on some platforms.
diff --git a/Documentation/RelNotes/1.7.11.7.txt b/Documentation/RelNotes/1.7.11.7.txt
new file mode 100644
index 0000000..e7e79d9
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.7.txt
@@ -0,0 +1,46 @@
+Git v1.7.11.7 Release Notes
+===========================
+
+Fixes since v1.7.11.6
+---------------------
+
+ * The synopsis said "checkout [-B branch]" to make it clear the
+ branch name is a parameter to the option, but the heading for the
+ option description was "-B::", not "-B branch::", making the
+ documentation misleading.
+
+ * Git ships with a fall-back regexp implementation for platforms with
+ buggy regexp library, but it was easy for people to keep using their
+ platform regexp. A new test has been added to check this.
+
+ * "git apply -p0" did not parse pathnames on "diff --git" line
+ correctly. This caused patches that had pathnames in no other
+ places to be mistakenly rejected (most notably, binary patch that
+ does not rename nor change mode). Textual patches, renames or mode
+ changes have preimage and postimage pathnames in different places
+ in a form that can be parsed unambiguously and did not suffer from
+ this problem.
+
+ * After "gitk" showed the contents of a tag, neither "Reread
+ 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
+ option.
+
+ * "git log .." errored out saying it is both rev range and a path
+ when there is no disambiguating "--" is on the command line.
+ Update the command line parser to interpret ".." as a path in such
+ a case.
+
+ * Pushing to smart HTTP server with recent Git fails without having
+ the username in the URL to force authentication, if the server is
+ configured to allow GET anonymously, while requiring authentication
+ for POST.
+
+ * "git show --format='%ci'" did not give timestamp correctly for
+ commits created without human readable name on "committer" line.
+ (merge e27ddb6 jc/maint-ident-missing-human-name later to maint).
+
+ * "git show --quiet" ought to be a synonym for "git show -s", but
+ wasn't.
diff --git a/Documentation/RelNotes/1.7.11.txt b/Documentation/RelNotes/1.7.11.txt
new file mode 100644
index 0000000..15b954c
--- /dev/null
+++ b/Documentation/RelNotes/1.7.11.txt
@@ -0,0 +1,139 @@
+Git v1.7.11 Release Notes
+=========================
+
+Updates since v1.7.10
+---------------------
+
+UI, Workflows & Features
+
+ * A new mode for push, "simple", which is a cross between "current"
+ and "upstream", has been introduced. "git push" without any refspec
+ will push the current branch out to the same name at the remote
+ repository only when it is set to track the branch with the same
+ name over there. The plan is to make this mode the new default
+ value when push.default is not configured.
+
+ * A couple of commands learned the "--column" option to produce
+ columnar output.
+
+ * A third-party tool "git subtree" is distributed in contrib/
+
+ * A remote helper that acts as a proxy and caches ssl session for the
+ https:// transport is added to the contrib/ area.
+
+ * Error messages given when @{u} is used for a branch without its
+ upstream configured have been clarified.
+
+ * Even with the "-q"uiet option, "checkout" used to report setting up
+ tracking. Also "branch" learned the "-q"uiet option to squelch
+ informational message.
+
+ * Your build platform may support hardlinks but you may prefer not to
+ use them, e.g. when installing to DESTDIR to make a tarball and
+ untarring on a filesystem that has poor support for hardlinks.
+ There is a Makefile option NO_INSTALL_HARDLINKS for you.
+
+ * The smart-http backend used to always override GIT_COMMITTER_*
+ variables with REMOTE_USER and REMOTE_ADDR, but these variables are
+ now preserved when set.
+
+ * "git am" learned the "--include" option, which is an opposite of
+ existing the "--exclude" option.
+
+ * When "git am -3" needs to fall back to an application of the patch
+ to a synthesized preimage followed by a 3-way merge, the paths that
+ needed such treatment are now reported to the end user, so that the
+ result in them can be eyeballed with extra care.
+
+ * The output from "diff/log --stat" used to always allocate 4 columns
+ to show the number of modified lines, but not anymore.
+
+ * "git difftool" learned the "--dir-diff" option to spawn external
+ diff tools that can compare two directory hierarchies at a time
+ after populating two temporary directories, instead of running an
+ instance of the external tool once per a file pair.
+
+ * The "fmt-merge-msg" command learned to list the primary contributors
+ involved in the side topic you are merging in a comment in the merge
+ commit template.
+
+ * "git rebase" learned to optionally keep commits that do not
+ introduce any change in the original history.
+
+ * "git push --recurse-submodules" learned to optionally look into the
+ histories of submodules bound to the superproject and push them
+ out.
+
+ * A 'snapshot' request to "gitweb" honors If-Modified-Since: header,
+ based on the commit date.
+
+ * "gitweb" learned to highlight the patch it outputs even more.
+
+Foreign Interface
+
+ * "git svn" used to die with unwanted SIGPIPE when talking with an HTTP
+ server that uses keep-alive.
+
+ * "git svn" learned to use platform specific authentication
+ providers, e.g. gnome-keyring, kwallet, etc.
+
+ * "git p4" has been moved out of the contrib/ area and has seen more
+ work on importing labels as tags from (and exporting tags as labels
+ to) p4.
+
+Performance and Internal Implementation (please report possible regressions)
+
+ * Bash completion script (in contrib/) have been cleaned up to make
+ future work on it simpler.
+
+ * An experimental "version 4" format of the index file has been
+ introduced to reduce on-disk footprint and I/O overhead.
+
+ * "git archive" learned to produce its output without reading the
+ blob object it writes out in memory in its entirety.
+
+ * "git index-pack" that runs when fetching or pushing objects to
+ complete the packfile on the receiving end learned to use multiple
+ threads to do its job when available.
+
+ * The code to compute hash values for lines used by the internal diff
+ engine was optimized on little-endian machines, using the same
+ trick the kernel folks came up with.
+
+ * "git apply" had some memory leaks plugged.
+
+ * Setting up a revision traversal with many starting points was
+ inefficient as these were placed in a date-order priority queue
+ one-by-one. Now they are collected in the queue unordered first,
+ and sorted immediately before getting used.
+
+ * More lower-level commands learned to use the streaming API to read
+ from the object store without keeping everything in core.
+
+ * The weighting parameters to suggestion command name typo have been
+ tweaked, so that "git tags" will suggest "tag?" and not "stage?".
+
+ * Because "sh" on the user's PATH may be utterly broken on some
+ systems, run-command API now uses SHELL_PATH, not /bin/sh, when
+ spawning an external command (not applicable to Windows port).
+
+ * The API to iterate over the refs/ hierarchy has been tweaked to
+ allow walking only a subset of it more efficiently.
+
+Also contains minor documentation updates and code clean-ups.
+
+
+Fixes since v1.7.10
+-------------------
+
+Unless otherwise noted, all the fixes since v1.7.10 in the maintenance
+releases are contained in this release (see release notes to them for
+details).
+
+ * "git submodule init" used to report "registered for path ..."
+ even for submodules that were registered earlier.
+ (cherry-pick c1c259e jl/submodule-report-new-path-once later to maint).
+
+ * "git diff --stat" used to fully count a binary file with modified
+ execution bits whose contents is unmodified, which was not quite
+ right.
diff --git a/Documentation/RelNotes/1.7.12.1.txt b/Documentation/RelNotes/1.7.12.1.txt
new file mode 100644
index 0000000..b8f04af
--- /dev/null
+++ b/Documentation/RelNotes/1.7.12.1.txt
@@ -0,0 +1,134 @@
+Git 1.7.12.1 Release Notes
+==========================
+
+Fixes since v1.7.12
+-------------------
+
+ * "git apply -p0" did not parse pathnames on "diff --git" line
+ correctly. This caused patches that had pathnames in no other
+ places to be mistakenly rejected (most notably, binary patch that
+ does not rename nor change mode). Textual patches, renames or mode
+ changes have preimage and postimage pathnames in different places
+ in a form that can be parsed unambiguously and did not suffer from
+ this problem.
+
+ * "git cherry-pick A C B" used to replay changes in A and then B and
+ then C if these three commits had committer timestamps in that
+ order, which is not what the user who said "A C B" naturally
+ expects.
+
+ * "git commit --amend" let the user edit the log message and then
+ died when the human-readable committer name was given
+ insufficiently by getpwent(3).
+
+ * Some capabilities were asked by fetch-pack even when upload-pack
+ did not advertise that they are available. fetch-pack has been
+ fixed not to do so.
+
+ * "git diff" had a confusion between taking data from a path in the
+ working tree and taking data from an object that happens to have
+ name 0{40} recorded in a tree.
+
+ * "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
+ when there is no disambiguating "--" is on the command line.
+ Update the command line parser to interpret ".." as a path in such
+ a case.
+
+ * The "--topo-order", "--date-order" (and the lack of either means
+ the default order) options to "rev-list" and "log" family of
+ commands were poorly described in the documentation.
+
+ * "git prune" without "-v" used to warn about leftover temporary
+ files (which is an indication of an earlier aborted operation).
+
+ * Pushing to smart HTTP server with recent Git fails without having
+ the username in the URL to force authentication, if the server is
+ configured to allow GET anonymously, while requiring authentication
+ for POST.
+
+ * The reflog entries left by "git rebase" and "git rebase -i" were
+ inconsistent (the interactive one gave an abbreviated object name).
+
+ * When "git push" triggered the automatic gc on the receiving end, a
+ message from "git prune" that said it was removing cruft leaked to
+ the standard output, breaking the communication protocol.
+
+ * "git show --quiet" ought to be a synonym for "git show -s", but
+ wasn't.
+
+ * "git show --format='%ci'" did not give timestamp correctly for
+ commits created without human readable name on "committer" line.
+
+ * "git send-email" did not unquote encoded words that appear on the
+ header correctly, and lost "_" from strings.
+
+ * The interactive prompt "git send-email" gives was error prone. It
+ asked "What e-mail address do you want to use?" with the address it
+ guessed (correctly) the user would want to use in its prompt,
+ tempting the user to say "y". But the response was taken as "No,
+ please use 'y' as the e-mail address instead", which is most
+ certainly not what the user meant.
+
+ * "gitweb" when used with PATH_INFO failed to notice directories with
+ SP (and other characters that need URL-style quoting) in them.
+
+ * When the user gives an argument that can be taken as both a
+ revision name and a pathname without disambiguating with "--", we
+ used to give a help message "Use '--' to separate". The message
+ has been clarified to show where that '--' goes on the command
+ line.
+
+ * When the user exports a non-default IFS without HT, scripts that
+ rely on being able to parse "ls-files -s | while read a b c..."
+ started to fail. Protect them from such a misconfiguration.
+
+ * The attribute system may be asked for a path that itself or its
+ leading directories no longer exists in the working tree, and it is
+ fine if we cannot open .gitattribute file in such a case. Failure
+ to open per-directory .gitattributes with error status other than
+ ENOENT and ENOTDIR should be diagnosed, but it wasn't.
+
+ * After "gitk" showed the contents of a tag, neither "Reread
+ references" nor "Reload" did not update what is shown as the
+ contents of it, when the user overwrote the tag with "git tag -f".
+
+ * "ciabot" script (in contrib/) has been updated with extensive
+ documentation.
+
+ * "git-jump" script (in contrib/) did not work well when
+ diff.noprefix or diff.mnemonicprefix is in effect.
+
+ * Older parts of the documentation described as if having a regular
+ file in .git/refs/ hierarchy were the only way to have branches and
+ tags, which is not true for quite some time.
+
+ * A utility shell function test_seq has been added as a replacement
+ for the 'seq' utility found on some platforms.
+
+ * Compatibility wrapper to learn the maximum number of file
+ descriptors we can open around sysconf(_SC_OPEN_MAX) and
+ getrlimit(RLIMIT_NO_FILE) has been introduced for portability.
+
+ * We used curl_easy_strerror() without checking version of cURL,
+ breaking the build for versions before curl 7.12.0.
+
+ * Code to work around MacOS X UTF-8 gotcha has been cleaned up.
+
+ * Fallback 'getpass' implementation made unportable use of stdio API.
+
+ * The "--rebase" option to "git pull" can be abbreviated to "-r",
+ but we didn't document it.
+
+ * It was generally understood that "--long-option"s to many of our
+ subcommands can be abbreviated to the unique prefix, but it was not
+ easy to find it described for new readers of the documentation set.
+
+ * The synopsis said "checkout [-B branch]" to make it clear the
+ branch name is a parameter to the option, but the heading for the
+ option description was "-B::", not "-B branch::", making the
+ documentation misleading.
+
+Also contains numerous documentation updates.
diff --git a/Documentation/RelNotes/1.7.12.2.txt b/Documentation/RelNotes/1.7.12.2.txt
new file mode 100644
index 0000000..6925574
--- /dev/null
+++ b/Documentation/RelNotes/1.7.12.2.txt
@@ -0,0 +1,40 @@
+Git 1.7.12.2 Release Notes
+==========================
+
+Fixes since v1.7.12.1
+---------------------
+
+ * When "git am" is fed an input that has multiple "Content-type: ..."
+ header, it did not grok charset= attribute correctly.
+
+ * Even during a conflicted merge, "git blame $path" always meant to
+ blame uncommitted changes to the "working tree" version; make it
+ more useful by showing cleanly merged parts as coming from the other
+ branch that is being merged.
+
+ * "git blame MAKEFILE" run in a history that has "Makefile" but not
+ "MAKEFILE" should say "No such file MAKEFILE in HEAD", but got
+ confused on a case insensitive filesystem and failed to do so.
+
+ * "git fetch --all", when passed "--no-tags", did not honor the
+ "--no-tags" option while fetching from individual remotes (the same
+ issue existed with "--tags", but combination "--all --tags" makes
+ much less sense than "--all --no-tags").
+
+ * "git log/diff/format-patch --stat" showed the "N line(s) added"
+ comment in user's locale and caused careless submitters to send
+ patches with such a line in them to projects whose project language
+ is not their language, mildly irritating others. Localization to
+ the line has been disabled for now.
+
+ * "git log --all-match --grep=A --grep=B" ought to show commits that
+ mention both A and B, but when these three options are used with
+ --author or --committer, it showed commits that mention either A or
+ B (or both) instead.
+
+ * The subcommand to remove the definition of a remote in "git remote"
+ was named "rm" even though all other subcommands were spelled out.
+ Introduce "git remote remove" to remove confusion, and keep "rm" as
+ a backward compatible synonym.
+
+Also contains a handful of documentation updates.
diff --git a/Documentation/RelNotes/1.7.12.3.txt b/Documentation/RelNotes/1.7.12.3.txt
new file mode 100644
index 0000000..ecda427
--- /dev/null
+++ b/Documentation/RelNotes/1.7.12.3.txt
@@ -0,0 +1,34 @@
+Git 1.7.12.3 Release Notes
+==========================
+
+Fixes since v1.7.12.2
+---------------------
+
+ * "git am" mishandled a patch attached as application/octet-stream
+ (e.g. not text/*); Content-Transfer-Encoding (e.g. base64) was not
+ honored correctly.
+
+ * It was unclear in the documentation for "git blame" that it is
+ unnecessary for users to use the "--follow" option.
+
+ * A repository created with "git clone --single" had its fetch
+ refspecs set up just like a clone without "--single", leading the
+ subsequent "git fetch" to slurp all the other branches, defeating
+ the whole point of specifying "only this branch".
+
+ * "git fetch" over http had an old workaround for an unlikely server
+ misconfiguration; it turns out that this hurts debuggability of the
+ configuration in general, and has been reverted.
+
+ * "git fetch" over http advertised that it supports "deflate", which
+ is much less common, and did not advertise the more common "gzip" on
+ its Accept-Encoding header.
+
+ * "git receive-pack" (the counterpart to "git push") did not give
+ progress output while processing objects it received to the puser
+ when run over the smart-http protocol.
+
+ * "git status" honored the ignore=dirty settings in .gitmodules but
+ "git commit" didn't.
+
+Also contains a handful of documentation updates.
diff --git a/Documentation/RelNotes/1.7.12.4.txt b/Documentation/RelNotes/1.7.12.4.txt
new file mode 100644
index 0000000..c6da3cc
--- /dev/null
+++ b/Documentation/RelNotes/1.7.12.4.txt
@@ -0,0 +1,23 @@
+Git 1.7.12.4 Release Notes
+==========================
+
+Fixes since v1.7.12.3
+---------------------
+
+ * "git fetch" over the dumb-http revision walker could segfault when
+ curl's multi interface was used.
+
+ * It was possible to give specific paths for "asciidoc" and other
+ tools in the documentation toolchain, but not for "xmlto".
+
+ * "gitweb" did not give the correct committer timezone in its feed
+ output due to a typo.
+
+ * The "-Xours" (and similarly -Xtheirs) backend option to "git
+ merge -s recursive" was ignored for binary files. Now it is
+ honored.
+
+ * The "binary" synthetic attribute made "diff" to treat the path as
+ binary, but not "merge".
+
+Also contains many documentation updates.
diff --git a/Documentation/RelNotes/1.7.12.txt b/Documentation/RelNotes/1.7.12.txt
new file mode 100644
index 0000000..010d8c7
--- /dev/null
+++ b/Documentation/RelNotes/1.7.12.txt
@@ -0,0 +1,136 @@
+Git v1.7.12 Release Notes
+=========================
+
+Updates since v1.7.11
+---------------------
+
+UI, Workflows & Features
+
+ * Git can be told to normalize pathnames it read from readdir(3) and
+ all arguments it got from the command line into precomposed UTF-8
+ (assuming that they come as decomposed UTF-8), in order to work
+ around issues on Mac OS.
+
+ I think there still are other places that need conversion
+ (e.g. paths that are read from stdin for some commands), but this
+ should be a good first step in the right direction.
+
+ * Per-user $HOME/.gitconfig file can optionally be stored in
+ $HOME/.config/git/config instead, which is in line with XDG.
+
+ * The value of core.attributesfile and core.excludesfile default to
+ $HOME/.config/git/attributes and $HOME/.config/git/ignore respectively
+ when these files exist.
+
+ * Logic to disambiguate abbreviated object names have been taught to
+ take advantage of object types that are expected in the context,
+ e.g. XXXXXX in the "git describe" output v1.2.3-gXXXXXX must be a
+ commit object, not a blob nor a tree. This will help us prolong
+ the lifetime of abbreviated object names.
+
+ * "git apply" learned to wiggle the base version and perform three-way
+ merge when a patch does not exactly apply to the version you have.
+
+ * Scripted Porcelain writers now have access to the credential API via
+ the "git credential" plumbing command.
+
+ * "git help" used to always default to "man" format even on platforms
+ where "man" viewer is not widely available.
+
+ * "git clone --local $path" started its life as an experiment to
+ optionally use link/copy when cloning a repository on the disk, but
+ we didn't deprecate it after we made the option a no-op to always
+ use the optimization. The command learned "--no-local" option to
+ turn this off, as a more explicit alternative over use of file://
+ URL.
+
+ * "git fetch" and friends used to say "remote side hung up
+ unexpectedly" when they failed to get response they expect from the
+ other side, but one common reason why they don't get expected
+ response is that the remote repository does not exist or cannot be
+ read. The error message in this case was updated to give better
+ hints to the user.
+
+ * "git help -w $cmd" can show HTML version of documentation for
+ "git-$cmd" by setting help.htmlpath to somewhere other than the
+ default location where the build procedure installs them locally;
+ the variable can even point at a http:// URL.
+
+ * "git rebase [-i] --root $tip" can now be used to rewrite all the
+ history leading to "$tip" down to the root commit.
+
+ * "git rebase -i" learned "-x <cmd>" to insert "exec <cmd>" after
+ each commit in the resulting history.
+
+ * "git status" gives finer classification to various states of paths
+ in conflicted state and offer advice messages in its output.
+
+ * "git submodule" learned to deal with nested submodule structure
+ where a module is contained within a module whose origin is
+ specified as a relative URL to its superproject's origin.
+
+ * A rather heavy-ish "git completion" script has been split to create
+ a separate "git prompting" script, to help lazy-autoloading of the
+ completion part while making prompting part always available.
+
+ * "gitweb" pays attention to various forms of credits that are
+ similar to "Signed-off-by:" lines in the commit objects and