[Skip to content](https://github.com/git/git/tree/HEAD/Documentation/technical#start-of-content)
## Navigation Menu
Toggle navigation
[ ](https://github.com/)
[ Sign in ](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgit%2Fgit%2Ftree%2FHEAD%2FDocumentation%2Ftechnical)
Appearance settings
  * Platform
    * AI CODE CREATION
      * [ GitHub CopilotWrite better code with AI ](https://github.com/features/copilot)
      * [ GitHub SparkBuild and deploy intelligent apps ](https://github.com/features/spark)
      * [ GitHub ModelsManage and compare prompts ](https://github.com/features/models)
      * [ MCP RegistryNewIntegrate external tools ](https://github.com/mcp)
    * DEVELOPER WORKFLOWS
      * [ ActionsAutomate any workflow ](https://github.com/features/actions)
      * [ CodespacesInstant dev environments ](https://github.com/features/codespaces)
      * [ IssuesPlan and track work ](https://github.com/features/issues)
      * [ Code ReviewManage code changes ](https://github.com/features/code-review)
    * APPLICATION SECURITY
      * [ GitHub Advanced SecurityFind and fix vulnerabilities ](https://github.com/security/advanced-security)
      * [ Code securitySecure your code as you build ](https://github.com/security/advanced-security/code-security)
      * [ Secret protectionStop leaks before they start ](https://github.com/security/advanced-security/secret-protection)
    * EXPLORE
      * [Why GitHub](https://github.com/why-github)
      * [Documentation](https://docs.github.com)
      * [Blog](https://github.blog)
      * [Changelog](https://github.blog/changelog)
      * [Marketplace](https://github.com/marketplace)
[View all features](https://github.com/features)
  * Solutions
    * BY COMPANY SIZE
      * [Enterprises](https://github.com/enterprise)
      * [Small and medium teams](https://github.com/team)
      * [Startups](https://github.com/enterprise/startups)
      * [Nonprofits](https://github.com/solutions/industry/nonprofits)
    * BY USE CASE
      * [App Modernization](https://github.com/solutions/use-case/app-modernization)
      * [DevSecOps](https://github.com/solutions/use-case/devsecops)
      * [DevOps](https://github.com/solutions/use-case/devops)
      * [CI/CD](https://github.com/solutions/use-case/ci-cd)
      * [View all use cases](https://github.com/solutions/use-case)
    * BY INDUSTRY
      * [Healthcare](https://github.com/solutions/industry/healthcare)
      * [Financial services](https://github.com/solutions/industry/financial-services)
      * [Manufacturing](https://github.com/solutions/industry/manufacturing)
      * [Government](https://github.com/solutions/industry/government)
      * [View all industries](https://github.com/solutions/industry)
[View all solutions](https://github.com/solutions)
  * Resources
    * EXPLORE BY TOPIC
      * [AI](https://github.com/resources/articles?topic=ai)
      * [Software Development](https://github.com/resources/articles?topic=software-development)
      * [DevOps](https://github.com/resources/articles?topic=devops)
      * [Security](https://github.com/resources/articles?topic=security)
      * [View all topics](https://github.com/resources/articles)
    * EXPLORE BY TYPE
      * [Customer stories](https://github.com/customer-stories)
      * [Events & webinars](https://github.com/resources/events)
      * [Ebooks & reports](https://github.com/resources/whitepapers)
      * [Business insights](https://github.com/solutions/executive-insights)
      * [GitHub Skills](https://skills.github.com)
    * SUPPORT & SERVICES
      * [Documentation](https://docs.github.com)
      * [Customer support](https://support.github.com)
      * [Community forum](https://github.com/orgs/community/discussions)
      * [Trust center](https://github.com/trust-center)
      * [Partners](https://github.com/partners)
[View all resources](https://github.com/resources)
  * Open Source
    * COMMUNITY
      * [ GitHub SponsorsFund open source developers ](https://github.com/sponsors)
    * PROGRAMS
      * [Security Lab](https://securitylab.github.com)
      * [Maintainer Community](https://maintainers.github.com)
      * [Accelerator](https://github.com/accelerator)
      * [Archive Program](https://archiveprogram.github.com)
    * REPOSITORIES
      * [Topics](https://github.com/topics)
      * [Trending](https://github.com/trending)
      * [Collections](https://github.com/collections)
  * Enterprise
    * ENTERPRISE SOLUTIONS
      * [ Enterprise platformAI-powered developer platform ](https://github.com/enterprise)
    * AVAILABLE ADD-ONS
      * [ GitHub Advanced SecurityEnterprise-grade security features ](https://github.com/security/advanced-security)
      * [ Copilot for BusinessEnterprise-grade AI features ](https://github.com/features/copilot/copilot-business)
      * [ Premium SupportEnterprise-grade 24/7 support ](https://github.com/premium-support)
  * [Pricing](https://github.com/pricing)


Search or jump to...
# Search code, repositories, users, issues, pull requests...
Search
Clear
[Search syntax tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax)
#  Provide feedback
We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel  Submit feedback
#  Saved searches
## Use saved searches to filter your results more quickly
Name
Query
To see all available qualifiers, see our [documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax).
Cancel  Create saved search
[ Sign in ](https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgit%2Fgit%2Ftree%2FHEAD%2FDocumentation%2Ftechnical)
[ Sign up ](https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Ffiles%2Fdisambiguate&source=header-repo&source_repo=git%2Fgit)
Appearance settings
Resetting focus
You signed in with another tab or window. [Reload](https://github.com/git/git/tree/HEAD/Documentation/technical) to refresh your session. You signed out in another tab or window. [Reload](https://github.com/git/git/tree/HEAD/Documentation/technical) to refresh your session. You switched accounts on another tab or window. [Reload](https://github.com/git/git/tree/HEAD/Documentation/technical) to refresh your session. Dismiss alert
{{ message }}
[ git ](https://github.com/git) / **[git](https://github.com/git/git) ** Public
  * [ ](https://github.com/login?return_to=%2Fgit%2Fgit) You must be signed in to change notification settings
  * [ 27.6k ](https://github.com/login?return_to=%2Fgit%2Fgit)
  * [ Star  59.4k ](https://github.com/login?return_to=%2Fgit%2Fgit)


  * [ Code ](https://github.com/git/git)
  * [ Pull requests 340 ](https://github.com/git/git/pulls)
  * [ Actions ](https://github.com/git/git/actions)
  * [ Security 32 ](https://github.com/git/git/security)
  * [ Insights ](https://github.com/git/git/pulse)


Additional navigation options
  * [ Code  ](https://github.com/git/git)
  * [ Pull requests  ](https://github.com/git/git/pulls)
  * [ Actions  ](https://github.com/git/git/actions)
  * [ Security  ](https://github.com/git/git/security)
  * [ Insights  ](https://github.com/git/git/pulse)


## Collapse file tree
## Files
File does not exist on default branch
7b2bccb
Search this repository
  * .github
  * Documentation
    * RelNotes
    * config
    * howto
    * includes
    * mergetools
    * technical
      * .gitignore
      * api-error-handling.adoc
      * api-index-skel.adoc
      * api-index.sh
      * api-merge.adoc
      * api-parse-options.adoc
      * api-path-walk.adoc
      * api-simple-ipc.adoc
      * api-trace2.adoc
      * bitmap-format.adoc
      * build-systems.adoc
      * bundle-uri.adoc
      * commit-graph.adoc
      * directory-rename-detection.adoc
      * hash-function-transition.adoc
      * large-object-promisors.adoc
      * long-running-process-protocol.adoc
      * meson.build
      * multi-pack-index.adoc
      * pack-heuristics.adoc
      * packfile-uri.adoc
      * parallel-checkout.adoc
      * partial-clone.adoc
      * platform-support.adoc
      * racy-git.adoc
      * reftable.adoc
      * remembering-renames.adoc
      * repository-version.adoc
      * rerere.adoc
      * scalar.adoc
      * send-pack-pipeline.adoc
      * shallow.adoc
      * sparse-checkout.adoc
      * sparse-index.adoc
      * trivial-merge.adoc
      * unambiguous-types.adoc
      * unit-tests.adoc
    * .gitignore
    * BreakingChanges.adoc
    * CodingGuidelines
    * DecisionMaking.adoc
    * Makefile
    * MyFirstContribution.adoc
    * MyFirstObjectWalk.adoc
    * ReviewingGuidelines.adoc
    * SubmittingPatches
    * ToolsForGit.adoc
    * asciidoc.conf.in
    * asciidoctor-extensions.rb.in
    * blame-options.adoc
    * build-docdep.perl
    * cat-texi.perl
    * cmd-list.sh
    * config.adoc
    * date-formats.adoc
    * diff-algorithm-option.adoc
    * diff-context-options.adoc
    * diff-format.adoc
    * diff-generate-patch.adoc
    * diff-options.adoc
    * doc-diff
    * docbook-xsl.css
    * docbook.xsl
    * docinfo-html.in
    * everyday.adoco
    * fetch-options.adoc
    * fix-texi.sh
    * for-each-ref-options.adoc
    * format-patch-caveats.adoc
    * format-patch-end-of-commit-message.adoc
    * fsck-msgids.adoc
    * generate-mergetool-list.sh
    * git-add.adoc
    * git-am.adoc
    * git-annotate.adoc
    * git-apply.adoc
    * git-archimport.adoc
    * git-archive.adoc
    * git-backfill.adoc
    * git-bisect-lk2009.adoc
    * git-bisect.adoc
    * git-blame.adoc
    * git-branch.adoc
    * git-bugreport.adoc
    * git-bundle.adoc
    * git-cat-file.adoc
    * git-check-attr.adoc
    * git-check-ignore.adoc
    * git-check-mailmap.adoc
    * git-check-ref-format.adoc
    * git-checkout-index.adoc
    * git-checkout.adoc
    * git-cherry-pick.adoc
    * git-cherry.adoc
    * git-citool.adoc
    * git-clean.adoc
    * git-clone.adoc
    * git-column.adoc
    * git-commit-graph.adoc
    * git-commit-tree.adoc
    * git-commit.adoc
    * git-config.adoc
    * git-count-objects.adoc
    * git-credential-cache--daemon.adoc
    * git-credential-cache.adoc
    * git-credential-store.adoc
    * git-credential.adoc
    * git-cvsexportcommit.adoc
    * git-cvsimport.adoc
    * git-cvsserver.adoc
    * git-daemon.adoc
    * git-describe.adoc
    * git-diagnose.adoc
    * git-diff-files.adoc
    * git-diff-index.adoc
    * git-diff-pairs.adoc
    * git-diff-tree.adoc
    * git-diff.adoc
    * git-difftool.adoc
    * git-fast-export.adoc
    * git-fast-import.adoc
    * git-fetch-pack.adoc
    * git-fetch.adoc
    * git-filter-branch.adoc
    * git-fmt-merge-msg.adoc
    * git-for-each-ref.adoc
    * git-for-each-repo.adoc
    * git-format-patch.adoc
    * git-fsck-objects.adoc
    * git-fsck.adoc
    * git-fsmonitor--daemon.adoc
    * git-gc.adoc
    * git-get-tar-commit-id.adoc
    * git-grep.adoc
    * git-gui.adoc
    * git-hash-object.adoc
    * git-help.adoc
    * git-history.adoc
    * git-hook.adoc
    * git-http-backend.adoc
    * git-http-fetch.adoc
    * git-http-push.adoc
    * git-imap-send.adoc
    * git-index-pack.adoc
    * git-init-db.adoc
    * git-init.adoc
    * git-instaweb.adoc
    * git-interpret-trailers.adoc
    * git-last-modified.adoc
    * git-log.adoc
    * git-ls-files.adoc
    * git-ls-remote.adoc
    * git-ls-tree.adoc
    * git-mailinfo.adoc
    * git-mailsplit.adoc
    * git-maintenance.adoc
    * git-merge-base.adoc
    * git-merge-file.adoc
    * git-merge-index.adoc
    * git-merge-one-file.adoc
    * git-merge-tree.adoc
    * git-merge.adoc
    * git-mergetool--lib.adoc
    * git-mergetool.adoc
    * git-mktag.adoc
    * git-mktree.adoc
    * git-multi-pack-index.adoc
    * git-mv.adoc
    * git-name-rev.adoc
    * git-notes.adoc
    * git-p4.adoc
    * git-pack-objects.adoc
    * git-pack-redundant.adoc
    * git-pack-refs.adoc
    * git-patch-id.adoc
    * git-prune-packed.adoc
    * git-prune.adoc
    * git-pull.adoc
    * git-push.adoc
    * git-quiltimport.adoc
    * git-range-diff.adoc
    * git-read-tree.adoc
    * git-rebase.adoc
    * git-receive-pack.adoc
    * git-reflog.adoc
    * git-refs.adoc
    * git-remote-ext.adoc
    * git-remote-fd.adoc
    * git-remote-helpers.adoco
    * git-remote.adoc
    * git-repack.adoc
    * git-replace.adoc
    * git-replay.adoc
    * git-repo.adoc
    * git-request-pull.adoc
    * git-rerere.adoc
    * git-reset.adoc
    * git-restore.adoc
    * git-rev-list.adoc
    * git-rev-parse.adoc
    * git-revert.adoc
    * git-rm.adoc
    * git-send-email.adoc
    * git-send-pack.adoc
    * git-sh-i18n--envsubst.adoc
    * git-sh-i18n.adoc
    * git-sh-setup.adoc
    * git-shell.adoc
    * git-shortlog.adoc
    * git-show-branch.adoc
    * git-show-index.adoc
    * git-show-ref.adoc
    * git-show.adoc
    * git-sparse-checkout.adoc
    * git-stage.adoc
    * git-stash.adoc
    * git-status.adoc
    * git-stripspace.adoc
    * git-submodule.adoc
    * git-svn.adoc
    * git-switch.adoc
    * git-symbolic-ref.adoc
    * git-tag.adoc
    * git-tools.adoc
    * git-unpack-file.adoc
    * git-unpack-objects.adoc
    * git-update-index.adoc
    * git-update-ref.adoc
    * git-update-server-info.adoc
    * git-upload-archive.adoc
    * git-upload-pack.adoc
    * git-var.adoc
    * git-verify-commit.adoc
    * git-verify-pack.adoc
    * git-verify-tag.adoc
    * git-version.adoc
    * git-web--browse.adoc
    * git-whatchanged.adoc
    * git-worktree.adoc
    * git-write-tree.adoc
    * git.adoc
    * gitattributes.adoc
    * gitcli.adoc
    * gitcore-tutorial.adoc
    * gitcredentials.adoc
    * gitcvs-migration.adoc
    * gitdatamodel.adoc
    * gitdiffcore.adoc
    * giteveryday.adoc
    * gitfaq.adoc
    * gitformat-bundle.adoc
    * gitformat-chunk.adoc
    * gitformat-commit-graph.adoc
    * gitformat-index.adoc
    * gitformat-loose.adoc
    * gitformat-pack.adoc
    * gitformat-signature.adoc
    * gitglossary.adoc
    * githooks.adoc
    * gitignore.adoc
    * gitk.adoc
    * gitmailmap.adoc
    * gitmodules.adoc
    * gitnamespaces.adoc
    * gitpacking.adoc
    * gitprotocol-capabilities.adoc
    * gitprotocol-common.adoc
    * gitprotocol-http.adoc
    * gitprotocol-pack.adoc
    * gitprotocol-v2.adoc
    * gitremote-helpers.adoc
    * gitrepository-layout.adoc
    * gitrevisions.adoc
    * gitsubmodules.adoc
    * gittutorial-2.adoc
    * gittutorial.adoc
    * gitweb.adoc
    * gitweb.conf.adoc
    * gitworkflows.adoc
    * glossary-content.adoc
    * i18n.adoc
    * install-doc-quick.sh
    * install-webdoc.sh
    * line-range-format.adoc
    * line-range-options.adoc
    * lint-delimited-sections.perl
    * lint-documentation-style.perl
    * lint-fsck-msgids.perl
    * lint-gitlink.perl
    * lint-man-end-blurb.perl
    * lint-man-section-order.perl
    * lint-manpages.sh
    * manpage-bold-literal.xsl
    * manpage-normal.xsl
    * manpage.xsl
    * merge-options.adoc
    * merge-strategies.adoc
    * meson.build
    * object-format-disclaimer.adoc
    * pack-refs-options.adoc
    * pretty-formats.adoc
    * pretty-options.adoc
    * pull-fetch-param.adoc
    * ref-reachability-filters.adoc
    * ref-storage-format.adoc
    * rerere-options.adoc
    * rev-list-description.adoc
    * rev-list-options.adoc
    * revisions.adoc
    * scalar.adoc
    * sequencer.adoc
    * signoff-option.adoc
    * texi.xsl
    * trace2-target-values.adoc
    * transfer-data-leaks.adoc
    * urls-remotes.adoc
    * urls.adoc
    * user-manual.adoc
  * bin-wrappers
  * block-sha1
  * builtin
  * ci
  * compat
  * compiler-tricks
  * contrib
  * ewah
  * git-gui
  * gitk-git
  * gitweb
  * mergetools
  * negotiator
  * odb
  * oss-fuzz
  * perl
  * po
  * refs
  * reftable
  * sha1
  * sha1collisiondetection
  * sha1dc
  * sha256
  * src
  * subprojects
  * t
  * templates
  * trace2
  * xdiff
  * .cirrus.yml
  * .clang-format
  * .editorconfig
  * .gitattributes
  * .gitignore
  * .gitlab-ci.yml
  * .gitmodules
  * .mailmap
  * .tsan-suppressions
  * CODE_OF_CONDUCT.md
  * COPYING
  * Cargo.toml
  * GIT-BUILD-OPTIONS.in
  * GIT-VERSION-FILE.in
  * GIT-VERSION-GEN
  * INSTALL
  * LGPL-2.1
  * Makefile
  * README.md
  * RelNotes
  * SECURITY.md
  * abspath.c
  * abspath.h
  * aclocal.m4
  * add-interactive.c
  * add-interactive.h
  * add-patch.c
  * advice.c
  * advice.h
  * alias.c
  * alias.h
  * alloc.c
  * alloc.h
  * apply.c
  * apply.h
  * archive-tar.c
  * archive-zip.c
  * archive.c
  * archive.h
  * attr.c
  * attr.h
  * banned.h
  * base85.c
  * base85.h
  * bisect.c
  * bisect.h
  * blame.c
  * blame.h
  * blob.c
  * blob.h
  * bloom.c
  * bloom.h
  * branch.c
  * branch.h
  * builtin.h
  * bundle-uri.c
  * bundle-uri.h
  * bundle.c
  * bundle.h
  * cache-tree.c
  * cache-tree.h
  * cbtree.c
  * cbtree.h
  * chdir-notify.c
  * chdir-notify.h
  * check-builtins.sh
  * checkout.c
  * checkout.h
  * chunk-format.c
  * chunk-format.h
  * color.c
  * color.h
  * column.c
  * column.h
  * combine-diff.c
  * command-list.txt
  * commit-graph.c
  * commit-graph.h
  * commit-reach.c
  * commit-reach.h
  * commit-slab-decl.h
  * commit-slab-impl.h
  * commit-slab.h
  * commit.c
  * commit.h
  * common-exit.c
  * common-init.c
  * common-init.h
  * common-main.c
  * config.c
  * config.h
  * config.mak.dev
  * config.mak.in
  * config.mak.uname
  * configure.ac
  * connect.c
  * connect.h
  * connected.c
  * connected.h
  * convert.c
  * convert.h
  * copy.c
  * copy.h
  * credential.c
  * credential.h
  * csum-file.c
  * csum-file.h
  * ctype.c
  * daemon.c
  * date.c
  * date.h
  * decorate.c
  * decorate.h
  * delta-islands.c
  * delta-islands.h
  * delta.h
  * detect-compiler
  * diagnose.c
  * diagnose.h
  * diff-delta.c
  * diff-lib.c
  * diff-merges.c
  * diff-merges.h
  * diff-no-index.c
  * diff.c
  * diff.h
  * diffcore-break.c
  * diffcore-delta.c
  * diffcore-order.c
  * diffcore-pickaxe.c
  * diffcore-rename.c
  * diffcore-rotate.c
  * diffcore.h
  * dir-iterator.c
  * dir-iterator.h
  * dir.c
  * dir.h
  * editor.c
  * editor.h
  * entry.c
  * entry.h
  * environment.c
  * environment.h
  * exec-cmd.c
  * exec-cmd.h
  * fetch-negotiator.c
  * fetch-negotiator.h
  * fetch-pack.c
  * fetch-pack.h
  * fmt-merge-msg.c
  * fmt-merge-msg.h
  * for-each-ref.h
  * fsck.c
  * fsck.h
  * fsmonitor--daemon.h
  * fsmonitor-ipc.c
  * fsmonitor-ipc.h
  * fsmonitor-ll.h
  * fsmonitor-path-utils.h
  * fsmonitor-settings.c
  * fsmonitor-settings.h
  * fsmonitor.c
  * fsmonitor.h
  * generate-cmdlist.sh
  * generate-configlist.sh
  * generate-hooklist.sh
  * generate-perl.sh
  * generate-python.sh
  * generate-script.sh
  * gettext.c
  * gettext.h
  * git-archimport.perl
  * git-compat-util.h
  * git-curl-compat.h
  * git-cvsexportcommit.perl
  * git-cvsimport.perl
  * git-cvsserver.perl
  * git-difftool--helper.sh
  * git-filter-branch.sh
  * git-instaweb.sh
  * git-merge-octopus.sh
  * git-merge-one-file.sh
  * git-merge-resolve.sh
  * git-mergetool--lib.sh
  * git-mergetool.sh
  * git-p4.py
  * git-quiltimport.sh
  * git-request-pull.sh
  * git-send-email.perl
  * git-sh-i18n.sh
  * git-sh-setup.sh
  * git-submodule.sh
  * git-svn.perl
  * git-web--browse.sh
  * git-zlib.c
  * git-zlib.h
  * git.c
  * git.rc.in
  * gpg-interface.c
  * gpg-interface.h
  * graph.c
  * graph.h
  * grep.c
  * grep.h
  * hash-lookup.c
  * hash-lookup.h
  * hash.c
  * hash.h
  * hashmap.c
  * hashmap.h
  * help.c
  * help.h
  * hex-ll.c
  * hex-ll.h
  * hex.c
  * hex.h
  * hook.c
  * hook.h
  * http-backend.c
  * http-fetch.c
  * http-push.c
  * http-walker.c
  * http.c
  * http.h
  * ident.c
  * ident.h
  * imap-send.c
  * iterator.h
  * json-writer.c
  * json-writer.h
  * khash.h
  * kwset.c
  * kwset.h
  * levenshtein.c
  * levenshtein.h
  * line-log.c
  * line-log.h
  * line-range.c
  * line-range.h
  * linear-assignment.c
  * linear-assignment.h
  * list-objects-filter-options.c
  * list-objects-filter-options.h
  * list-objects-filter.c
  * list-objects-filter.h
  * list-objects.c
  * list-objects.h
  * list.h
  * lockfile.c
  * lockfile.h
  * log-tree.c
  * log-tree.h
  * loose.c
  * loose.h
  * ls-refs.c
  * ls-refs.h
  * mailinfo.c
  * mailinfo.h
  * mailmap.c
  * mailmap.h
  * match-trees.c
  * match-trees.h
  * mem-pool.c
  * mem-pool.h
  * merge-blobs.c
  * merge-blobs.h
  * merge-ll.c
  * merge-ll.h
  * merge-ort-wrappers.c
  * merge-ort-wrappers.h
  * merge-ort.c
  * merge-ort.h
  * merge.c
  * merge.h
  * mergesort.h
  * meson.build
  * meson_options.txt
  * midx-write.c
  * midx.c
  * midx.h
  * name-hash.c
  * name-hash.h
  * notes-cache.c
  * notes-cache.h
  * notes-merge.c
  * notes-merge.h
  * notes-utils.c
  * notes-utils.h
  * notes.c
  * notes.h
  * object-file-convert.c
  * object-file-convert.h
  * object-file.c
  * object-file.h
  * object-name.c
  * object-name.h
  * object.c
  * object.h
  * odb.c
  * odb.h
  * oid-array.c
  * oid-array.h
  * oidmap.c
  * oidmap.h
  * oidset.c
  * oidset.h
  * oidtree.c
  * oidtree.h
  * pack-bitmap-write.c
  * pack-bitmap.c
  * pack-bitmap.h
  * pack-check.c
  * pack-mtimes.c
  * pack-mtimes.h
  * pack-objects.c
  * pack-objects.h
  * pack-refs.c
  * pack-refs.h
  * pack-revindex.c
  * pack-revindex.h
  * pack-write.c
  * pack.h
  * packfile.c
  * packfile.h
  * pager.c
  * pager.h
  * parallel-checkout.c
  * parallel-checkout.h
  * parse-options-cb.c
  * parse-options.c
  * parse-options.h
  * parse.c
  * parse.h
  * patch-delta.c
  * patch-ids.c
  * patch-ids.h
  * path-walk.c
  * path-walk.h
  * path.c
  * path.h
  * pathspec.c
  * pathspec.h
  * pkt-line.c
  * pkt-line.h
  * preload-index.c
  * preload-index.h
  * pretty.c
  * pretty.h
  * prio-queue.c
  * prio-queue.h
  * progress.c
  * progress.h
  * promisor-remote.c
  * promisor-remote.h
  * prompt.c
  * prompt.h
  * protocol-caps.c
  * protocol-caps.h
  * protocol.c
  * protocol.h
  * prune-packed.c
  * prune-packed.h
  * pseudo-merge.c
  * pseudo-merge.h
  * quote.c
  * quote.h
  * range-diff.c
  * range-diff.h
  * reachable.c
  * reachable.h
  * read-cache-ll.h
  * read-cache.c
  * read-cache.h
  * rebase-interactive.c
  * rebase-interactive.h
  * rebase.c
  * rebase.h
  * ref-filter.c
  * ref-filter.h
  * reflog-walk.c
  * reflog-walk.h
  * reflog.c
  * reflog.h
  * refs.c
  * refs.h
  * refspec.c
  * refspec.h
  * remote-curl.c
  * remote.c
  * remote.h
  * repack-cruft.c
  * repack-filtered.c
  * repack-geometry.c
  * repack-midx.c
  * repack-promisor.c
  * repack.c
  * repack.h
  * replace-object.c
  * replace-object.h
  * replay.c
  * replay.h
  * repo-settings.c
  * repo-settings.h
  * repository.c
  * repository.h
  * rerere.c
  * rerere.h
  * reset.c
  * reset.h
  * resolve-undo.c
  * resolve-undo.h
  * revision.c
  * revision.h
  * run-command.c
  * run-command.h
  * sane-ctype.h
  * scalar.c
  * send-pack.c
  * send-pack.h
  * sequencer.c
  * sequencer.h
  * serve.c
  * serve.h
  * server-info.c
  * server-info.h
  * setup.c
  * setup.h
  * sh-i18n--envsubst.c
  * sha1dc_git.c
  * sha1dc_git.h
  * shallow.c
  * shallow.h
  * shared.mak
  * shell.c
  * shortlog.h
  * sideband.c
  * sideband.h
  * sigchain.c
  * sigchain.h
  * simple-ipc.h
  * sparse-index.c
  * sparse-index.h
  * split-index.c
  * split-index.h
  * stable-qsort.c
  * statinfo.c
  * statinfo.h
  * strbuf.c
  * strbuf.h
  * string-list.c
  * string-list.h
  * strmap.c
  * strmap.h
  * strvec.c
  * strvec.h
  * sub-process.c
  * sub-process.h
  * submodule-config.c
  * submodule-config.h
  * submodule.c
  * submodule.h
  * symlinks.c
  * symlinks.h
  * tag.c
  * tag.h
  * tar.h
  * tempfile.c
  * tempfile.h
  * thread-utils.c
  * thread-utils.h
  * tmp-objdir.c
  * tmp-objdir.h
  * trace.c
  * trace.h
  * trace2.c
  * trace2.h
  * trailer.c
  * trailer.h
  * transport-helper.c
  * transport-internal.h
  * transport.c
  * transport.h
  * tree-diff.c
  * tree-walk.c
  * tree-walk.h
  * tree.c
  * tree.h
  * unicode-width.h
  * unimplemented.sh
  * unix-socket.c
  * unix-socket.h
  * unix-stream-server.c
  * unix-stream-server.h
  * unpack-trees.c
  * unpack-trees.h
  * upload-pack.c
  * upload-pack.h
  * url.c
  * url.h
  * urlmatch.c
  * urlmatch.h
  * usage.c
  * userdiff.c
  * userdiff.h
  * utf8.c
  * utf8.h
  * varint.c
  * varint.h
  * version-def.h.in
  * version.c
  * version.h
  * versioncmp.c
  * versioncmp.h
  * walker.c
  * walker.h
  * wildmatch.c
  * wildmatch.h
  * worktree.c
  * worktree.h
  * wrapper.c
  * wrapper.h
  * write-or-die.c
  * write-or-die.h
  * ws.c
  * ws.h
  * wt-status.c
  * wt-status.h
  * xdiff-interface.c
  * xdiff-interface.h


## Breadcrumbs
  1. [git](https://github.com/git/git/tree/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5)
  2. /[Documentation](https://github.com/git/git/tree/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation)


/
# technical
/
Copy path
## Directory actions
## More options
More options
## Directory actions
## More options
More options
## Latest commit
[![gitster](https://avatars.githubusercontent.com/u/54884?v=4&size=40)](https://github.com/gitster)[gitster](https://github.com/git/git/commits?author=gitster)
[Merge branch 'en/xdiff-cleanup-2'](https://github.com/git/git/commit/0c6707687f818fa43dca7c9381c55e611ba6c51e)
Open commit details
Dec 4, 2025
[0c67076](https://github.com/git/git/commit/0c6707687f818fa43dca7c9381c55e611ba6c51e) · Dec 4, 2025
## History
[History](https://github.com/git/git/commits/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical)
Open commit details
[](https://github.com/git/git/commits/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical)History
## Breadcrumbs
  1. [git](https://github.com/git/git/tree/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5)
  2. /[Documentation](https://github.com/git/git/tree/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation)


/
# technical
/
Top
## Folders and files
Name | Name | Last commit message | Last commit date
---|---|---|---
### parent directory
[](https://github.com/git/git/tree/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation)
[.gitignore](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/.gitignore ".gitignore") | [.gitignore](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/.gitignore ".gitignore") | [doc: update gitignore for .adoc extension](https://github.com/git/git/commit/89cdbffa8619b0f5e87bacf12dfa400259511b1e "doc: update gitignore for .adoc extension

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

Instead, in a future commit, we're going to move to using the more
common ".adoc" extension for these files, which many editors
intrinsically recognize as an AsciiDoc file.  To avoid contributors
accidentally checking in generated files, ignore the new extension for
generated files in the documentation .gitignore files.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[api-error-handling.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-error-handling.adoc "api-error-handling.adoc") | [api-error-handling.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-error-handling.adoc "api-error-handling.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[api-index-skel.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-index-skel.adoc "api-index-skel.adoc") | [api-index-skel.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-index-skel.adoc "api-index-skel.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[api-index.sh](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-index.sh "api-index.sh") | [api-index.sh](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-index.sh "api-index.sh") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[api-merge.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-merge.adoc "api-merge.adoc") | [api-merge.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-merge.adoc "api-merge.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[api-parse-options.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-parse-options.adoc "api-parse-options.adoc") | [api-parse-options.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-parse-options.adoc "api-parse-options.adoc") | [parse-options: rename `OPT_MAGNITUDE()` to `OPT_UNSIGNED()`](https://github.com/git/git/commit/785c17df7817df8512d2cb92cfc079ef0b4de27c "parse-options: rename `OPT_MAGNITUDE\(\)` to `OPT_UNSIGNED\(\)`

With the preceding commit, `OPT_INTEGER\(\)` has learned to support unit
factors. Consequently, the major differencen between `OPT_INTEGER\(\)` and
`OPT_MAGNITUDE\(\)` isn't the support of unit factors anymore, as both of
them do support them now. Instead, the difference is that one handles
signed and the other handles unsigned integers.

Adapt the name of `OPT_MAGNITUDE\(\)` accordingly by renaming it to
`OPT_UNSIGNED\(\)`.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Apr 17, 2025
[api-path-walk.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-path-walk.adoc "api-path-walk.adoc") | [api-path-walk.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-path-walk.adoc "api-path-walk.adoc") | [doc: check for absence of multiple terms in each entry of desc list](https://github.com/git/git/commit/ed260220948595b1311d4639dbfc20f02c807fac "doc: check for absence of multiple terms in each entry of desc list

For simplifying automated translation of the documentation, it is better to
only present one term in each entry of a description list of options. This
is because most of these terms can automatically be marked as
notranslatable.

Also, due to portability issues, the script generate-configlist.sh can no
longer insert newlines in the output. However, the result is that it no
longer correctly handles multiple terms in a single entry of definition
lists.

As a result, we now check that these entries do not exist in the
documentation.

Reviewed-by: Collin Funk <collin.funk1@gmail.com>
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Aug 11, 2025
[api-simple-ipc.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-simple-ipc.adoc "api-simple-ipc.adoc") | [api-simple-ipc.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-simple-ipc.adoc "api-simple-ipc.adoc") | [doc: *.txt -> *.adoc fixes](https://github.com/git/git/commit/97350e18e2fc2e753e34df4ee8c1107457aa0a91 "doc: *.txt -> *.adoc fixes

Update a few more instances of Documentation/*.txt files which have been
renamed to *.adoc.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Mar 3, 2025
[api-trace2.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-trace2.adoc "api-trace2.adoc") | [api-trace2.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/api-trace2.adoc "api-trace2.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[bitmap-format.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/bitmap-format.adoc "bitmap-format.adoc") | [bitmap-format.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/bitmap-format.adoc "bitmap-format.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[build-systems.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/build-systems.adoc "build-systems.adoc") | [build-systems.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/build-systems.adoc "build-systems.adoc") | [doc: update references to renamed AsciiDoc files](https://github.com/git/git/commit/3717a5775a7ba9e5f5b2794171ab205c0a177ef8 "doc: update references to renamed AsciiDoc files

The .txt extensions were changed to .adoc in 1f010d6 \(doc: use .adoc
extension for AsciiDoc files, 2025-01-20\). References to the renamed
files were not updated yet.

Signed-off-by: Jouke Witteveen <j.witteveen@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jun 6, 2025
[bundle-uri.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/bundle-uri.adoc "bundle-uri.adoc") | [bundle-uri.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/bundle-uri.adoc "bundle-uri.adoc") | [bundle-uri: copy all bundle references ino the refs/bundle space](https://github.com/git/git/commit/c858c6442b53fc9b7e79923546668fe38fe2c58d "bundle-uri: copy all bundle references ino the refs/bundle space

When downloading bundles via the bundle-uri functionality, we only copy the
references from refs/heads into the refs/bundle space. I'm not sure why this
refspec is hardcoded to be so limited, but it makes the ref negotiation on
the subsequent fetch suboptimal, since it won't use objects that are
referenced outside of the current heads of the bundled repository.

This change to copy everything in refs/ in the bundle to refs/bundles/
significantly helps the subsequent fetch, since nearly all the references
are now included in the negotiation.

The update to the bundle-uri unbundling refspec puts all the heads from a
bundle file into refs/bundle/heads instead of directly into refs/bundle/ so
the tests also need to be updated to look in the new heirarchy.

Signed-off-by: Scott Chacon <schacon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Apr 25, 2025
[commit-graph.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/commit-graph.adoc "commit-graph.adoc") | [commit-graph.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/commit-graph.adoc "commit-graph.adoc") | [doc: commit-graph.adoc: fix up some formatting](https://github.com/git/git/commit/b770ed9545edf4919ea39d6fdd54fca402d28930 "doc: commit-graph.adoc: fix up some formatting

The formatting markup syntax used in this document \(markdown?\) is not
interpreted correctly by asciidoc or asciidoctor. The main problem is
the use of a '## ' prefix markup for some sub-headings, along with the
use of '```' code markup and some missing literal blocks.

In order to improve the \(html\) document formatting:

  - replace the '## ' prefix sub-title syntax with the '~~' underlining
    syntax for the relevant sub-headings.
  - replace the '```' code markup, which causes asciidoc\(tor\) to simply
    remove the marked up text, with a literal block '----' markup.
  - the second ascii diagram, in the 'Merging commit-graph files'
    section, is not rendered correctly by asciidoctor \(asciidoc is fine\)
    so enclose it in a '....' block.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Oct 16, 2025
[directory-rename-detection.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/directory-rename-detection.adoc "directory-rename-detection.adoc") | [directory-rename-detection.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/directory-rename-detection.adoc "directory-rename-detection.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[hash-function-transition.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/hash-function-transition.adoc "hash-function-transition.adoc") | [hash-function-transition.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/hash-function-transition.adoc "hash-function-transition.adoc") | [docs: reflect actual double signature for tags](https://github.com/git/git/commit/d477892b30b25333badb829190eb349fb671458c "docs: reflect actual double signature for tags

The documentation for the hash function transition reflects the original
design where the SHA-256 signature would always be placed in a header.
However, due to a missed patch in Git 2.29, we shipped SHA-256 support
such that the signature for the current algorithm is always an in-body
signature and the opposite algorithm is always in a header.  Since the
documentation is inaccurate, update it to reflect the correct
information.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Oct 9, 2025
[large-object-promisors.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/large-object-promisors.adoc "large-object-promisors.adoc") | [large-object-promisors.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/large-object-promisors.adoc "large-object-promisors.adoc") | [doc: add large-object-promisors.adoc to the docs build](https://github.com/git/git/commit/1c1fc86d5557fbbf5ac6ccbaddd824e24fb2b91d "doc: add large-object-promisors.adoc to the docs build

Commit 5040f9f164 \("doc: add technical design doc for large object
promisors", 2025-02-18\) added the large object promisors document
as a technical document \(with a '.txt' extension\). The merge commit
2c6fd30198 \("Merge branch 'cc/lop-remote'", 2025-03-05\) seems to
have renamed the file with an '.adoc' extension.

Despite the '.adoc' extension, this document was not being formatted
by asciidoc\(tor\) as part of the docs build. In order to do so, add
the document to the make and meson build files.

Having added the document to the build, asciidoc and asciidoctor find
\(slightly different\) problems with the syntax of the input document.

The first set of warnings \(only issued by asciidoc\) relate to some
'section title out of sequence: expected level 3, got level 4'. This
document uses 'setext' style of section headers, using a series of
underline characters, where the character used denotes the level of
the title. From document title to level 5 \(see \[1\]\), these characters
are =, -, ~, ^, +. This does not seem to fit the error message, which
implies that those characters denote levels 0 -> 4. Replacing the headings
underlined with '+' by the '^' character eliminates these warnings.

The second set of warnings \(only issued by asciidoctor\) relate to some
headings which seem to use both arabic and roman numerals as part of
a single 'list' sequence. This elicited either 'unterminated listing
block' or \(for example\) 'list item index: expected I, got II' warnings.
In order not to mix arabic and roman numerals, remove the numeral from
the '0\) Non goals' heading.  Similarly, the remaining roman numeral
entries had the '\)' removed and turned into regular headings with I, II,
III ... at the beginning.

\[1\] https://asciidoctor.org/docs/asciidoc-recommended-practices/

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Oct 16, 2025
[long-running-process-protocol.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/long-running-process-protocol.adoc "long-running-process-protocol.adoc") | [long-running-process-protocol.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/long-running-process-protocol.adoc "long-running-process-protocol.adoc") | [doc: check well-formedness of delimited sections](https://github.com/git/git/commit/63d33eb7f6ba315c3ecdda63295d9f915d184fcd "doc: check well-formedness of delimited sections

Having an empty line before each delimited sections is not required by
asciidoc, but it is a safety measure that prevents generating malformed
asciidoc when generating translated documentation.

When a delimited section appears just after a paragraph, the asciidoc
processor checks that the length of the delimited section header is
different from the length of the paragraph. If it is not, the asciidoc
processor will generate a title. In the original English documentation, this
is not a problem because the authors always check the output of the asciidoc
processor and fix the length of the delimited section header if it turns out
to be the same as the paragraph length. However, this is not the case for
translations, where the authors have no way to check the length of the
delimited section header or the output of the asciidoc processor. This can
lead to a section title that is not intended.

Indeed, this test also checks that titles are correctly formed, that is,
the length of the underline is equal to the length of the title \(otherwise
it would not be a title but a section header\).

Finally, this test checks that the delimited section are terminated within
the same file.

Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Aug 11, 2025
[meson.build](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/meson.build "meson.build") | [meson.build](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/meson.build "meson.build") | [Merge branch 'en/xdiff-cleanup-2'](https://github.com/git/git/commit/0c6707687f818fa43dca7c9381c55e611ba6c51e "Merge branch 'en/xdiff-cleanup-2'

Code clean-up.

* en/xdiff-cleanup-2:
  xdiff: rename rindex -> reference_index
  xdiff: change rindex from long to size_t in xdfile_t
  xdiff: make xdfile_t.nreff a size_t instead of long
  xdiff: make xdfile_t.nrec a size_t instead of long
  xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
  xdiff: use unambiguous types in xdl_hash_record\(\)
  xdiff: use size_t for xrecord_t.size
  xdiff: make xrecord_t.ptr a uint8_t instead of char
  xdiff: use ptrdiff_t for dstart/dend
  doc: define unambiguous type mappings across C and Rust") | Dec 4, 2025
[multi-pack-index.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/multi-pack-index.adoc "multi-pack-index.adoc") | [multi-pack-index.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/multi-pack-index.adoc "multi-pack-index.adoc") | [Documentation: describe incremental MIDX bitmaps](https://github.com/git/git/commit/4887bdd4c7bd97e3eeccfc113fd97605b1a3d9ba "Documentation: describe incremental MIDX bitmaps

Prepare to implement support for reachability bitmaps for the new
incremental multi-pack index \(MIDX\) feature over the following commits.

This commit begins by first describing the relevant format and usage
details for incremental MIDX bitmaps.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Mar 21, 2025
[pack-heuristics.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/pack-heuristics.adoc "pack-heuristics.adoc") | [pack-heuristics.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/pack-heuristics.adoc "pack-heuristics.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[packfile-uri.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/packfile-uri.adoc "packfile-uri.adoc") | [packfile-uri.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/packfile-uri.adoc "packfile-uri.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[parallel-checkout.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/parallel-checkout.adoc "parallel-checkout.adoc") | [parallel-checkout.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/parallel-checkout.adoc "parallel-checkout.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[partial-clone.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/partial-clone.adoc "partial-clone.adoc") | [partial-clone.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/partial-clone.adoc "partial-clone.adoc") | [technical/partial-clone: update reference to rev-list-options.adoc](https://github.com/git/git/commit/59d92809088f28b06b0cd102dd166ba8b3144fc7 "technical/partial-clone: update reference to rev-list-options.adoc

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Mar 3, 2025
[platform-support.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/platform-support.adoc "platform-support.adoc") | [platform-support.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/platform-support.adoc "platform-support.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[racy-git.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/racy-git.adoc "racy-git.adoc") | [racy-git.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/racy-git.adoc "racy-git.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[reftable.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/reftable.adoc "reftable.adoc") | [reftable.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/reftable.adoc "reftable.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[remembering-renames.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/remembering-renames.adoc "remembering-renames.adoc") | [remembering-renames.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/remembering-renames.adoc "remembering-renames.adoc") | [doc: remembering-renames.adoc: fix asciidoc warnings](https://github.com/git/git/commit/4fa0e4d02cc624f2286b661d5c8c17a75515e66c "doc: remembering-renames.adoc: fix asciidoc warnings

Both asciidoc and ascidoctor issue warnings about 'list item index:
expected n got n-1' for n=1->9 on lines 13, 15, 17, 20, 23, 25, 29,
31 and 33. In asciidoc, numbered lists must start at one, whereas this
file has a list starting at zero. Also, asciidoc and asciidoctor warn
about 'section title out of sequence: expected level 1, got level 2'
on line 38. \(asciidoc only complains about the first instance of this,
while asciidoctor complains about them all, on lines 94, 141, 142,
184, 185, 257, 288, 289, 290, 397, 424, 485, 486 and 487\). These
warnings stem from the section titles not being correctly nested within
a document/chapter title.

In order to address the first set of warnings, simply renumber the list
from one to nine, rather than zero to eight. This also requires altering
the text which refers to the section numbers, including other section
titles.

In order to address the second set of warnings, change the section title
syntax from '=== title ===' to '== title ==', effectively reducing the
nesting level of the title by one. Also, some of the titles are given
over multiple lines \(they are very long\), with an title '===' prefix
on each line. This leads to them being treated as separate sections
with no body text \(as you can see from the line numbers given for the
asciidoctor warnings, above\). So, for these titles, turn them into a
single \(long\) line of text.

In addition to the warnings, address some other formatting issues:

  - the ascii branch diagrams didn't format correctly on asciidoctor
    so include them in a literal block.
  - several blocks of text were intended to be formatted 'as is' but
    were not included in a literal block.
  - in section 8, format the \(A\)->\(D\) in the text description as a
    literal with `` marks, since \(C\) is rendered as a copyright
    symbol in html otherwise.
  - in section 9, a sub-list of two items is not formatted as such.
    change the '*' introducer to '**' to correct the sub-list format.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Oct 16, 2025
[repository-version.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/repository-version.adoc "repository-version.adoc") | [repository-version.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/repository-version.adoc "repository-version.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[rerere.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/rerere.adoc "rerere.adoc") | [rerere.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/rerere.adoc "rerere.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[scalar.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/scalar.adoc "scalar.adoc") | [scalar.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/scalar.adoc "scalar.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[send-pack-pipeline.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/send-pack-pipeline.adoc "send-pack-pipeline.adoc") | [send-pack-pipeline.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/send-pack-pipeline.adoc "send-pack-pipeline.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[shallow.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/shallow.adoc "shallow.adoc") | [shallow.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/shallow.adoc "shallow.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[sparse-checkout.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/sparse-checkout.adoc "sparse-checkout.adoc") | [sparse-checkout.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/sparse-checkout.adoc "sparse-checkout.adoc") | [doc: sparse-checkout.adoc: fix asciidoc warnings](https://github.com/git/git/commit/45e8b7c2d44043f4328c9aa4da31671df2546a79 "doc: sparse-checkout.adoc: fix asciidoc warnings

Both asciidoc and asciidoctor issue warnings about 'list item index:
expected n got n-1' for n=1->7 on lines 928, 931, 951, 974, 980, 1033
and 1049. In asciidoc, numbered lists must start at one, whereas this
file has a list starting at zero. Also, asciidoc and asciidoctor warn
about 'section title out of sequence: expected level 1, got level 2'
on line 17. \(asciidoc only complains about the first instance of this,
while asciidoctor complains about them all, on lines 95, 258, 303, 316,
545, 612, 752, 824, 895, 923 and 1053\). These warnings stem from the
section titles not being correctly nested within a document/chapter
title.

In order to address the first set of warnings, simply renumber the list
from one to seven, rather than zero to six. Fortunately, this does not
require altering additional text, since the enumeration of 'Known Bugs'
is not referred to anywhere else in the document.

In order to address the second set of warnings, change the section title
syntax from '=== title ===' to '== title ==', effectively reducing the
nesting level of the title by one. Also, some apparent \(sub-\)titles are
not marked up with sub-title syntax, so add some '=== ' prefix\(s\) to the
relevant headings.

In addition to the warnings, address some other formatting issues:

  - the use of heavily nested unordered lists is not reflected in the
    output \(making the file totally unreadable\) because each level of
    nesting requires a different syntax. \(i.e. replace '*' with '**'
    for the second level, '*' with '***' for the third level, etc.\)
  - make use of literal blocks and manual indentation to get asciidoc
    and asciidoctor to display even remotely similar output.
  - make use of labelled lists, in some places, to get a similar looking
    output to the input, for both asciidoc and asciidoctor.
  - replace the trailing space in: `git grep ${SEARCH_TERM} OLDREV `
    otherwise the entire line in which that appears is removed from
    the output.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Oct 16, 2025
[sparse-index.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/sparse-index.adoc "sparse-index.adoc") | [sparse-index.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/sparse-index.adoc "sparse-index.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[trivial-merge.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/trivial-merge.adoc "trivial-merge.adoc") | [trivial-merge.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/trivial-merge.adoc "trivial-merge.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
[unambiguous-types.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/unambiguous-types.adoc "unambiguous-types.adoc") | [unambiguous-types.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/unambiguous-types.adoc "unambiguous-types.adoc") | [doc: define unambiguous type mappings across C and Rust](https://github.com/git/git/commit/6971934d9bb4b8176b48658482862169a4582913 "doc: define unambiguous type mappings across C and Rust

Document other nuances when crossing the FFI boundary. Other language
mappings may be added in the future.

Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Nov 18, 2025
[unit-tests.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/unit-tests.adoc "unit-tests.adoc") | [unit-tests.adoc](https://github.com/git/git/blob/7b2bccb0d58d4f24705bf985de1f4612e4cf06e5/Documentation/technical/unit-tests.adoc "unit-tests.adoc") | [doc: use .adoc extension for AsciiDoc files](https://github.com/git/git/commit/1f010d6bdf756129db13d1367c888aa4153f6d87 "doc: use .adoc extension for AsciiDoc files

We presently use the ".txt" extension for our AsciiDoc files.  While not
wrong, most editors do not associate this extension with AsciiDoc,
meaning that contributors don't get automatic editor functionality that
could be useful, such as syntax highlighting and prose linting.

It is much more common to use the ".adoc" extension for AsciiDoc files,
since this helps editors automatically detect files and also allows
various forges to provide rich \(HTML-like\) rendering.  Let's do that
here, renaming all of the files and updating the includes where
relevant.  Adjust the various build scripts and makefiles to use the new
extension as well.

Note that this should not result in any user-visible changes to the
documentation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>") | Jan 21, 2025
View all files
## Footer
[ ](https://github.com) © 2026 GitHub, Inc.
### Footer navigation
  * [Terms](https://docs.github.com/site-policy/github-terms/github-terms-of-service)
  * [Privacy](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement)
  * [Security](https://github.com/security)
  * [Status](https://www.githubstatus.com/)
  * [Community](https://github.community/)
  * [Docs](https://docs.github.com/)
  * [Contact](https://support.github.com?tags=dotcom-footer)
  * Manage cookies
  * Do not share my personal information
