git-commit-vandalism/Documentation
Jonathan Nieder 35e6c47404 reftable: file format documentation
Shawn Pearce explains:

Some repositories contain a lot of references (e.g. android at 866k,
rails at 31k). The reftable format provides:

- Near constant time lookup for any single reference, even when the
  repository is cold and not in process or kernel cache.
- Near constant time verification if a SHA-1 is referred to by at least
  one reference (for allow-tip-sha1-in-want).
- Efficient lookup of an entire namespace, such as `refs/tags/`.
- Support atomic push `O(size_of_update)` operations.
- Combine reflog storage with ref storage.

This file format spec was originally written in July, 2017 by Shawn
Pearce.  Some refinements since then were made by Shawn and by Han-Wen
Nienhuys based on experiences implementing and experimenting with the
format.  (All of this was in the context of our work at Google and
Google is happy to contribute the result to the Git project.)

Imported from JGit[1]'s current version (c217d33ff,
"Documentation/technical/reftable: improve repo layout", 2020-02-04)
of Documentation/technical/reftable.md and converted to asciidoc by
running

  pandoc -t asciidoc -f markdown reftable.md >reftable.txt

using pandoc 2.2.1.  The result required the following additional
minor changes:

- removed the [TOC] directive to add a table of contents, since
  asciidoc does not support it
- replaced git-scm.com/docs links with linkgit: directives that link
  to other pages within Git's documentation

[1] https://eclipse.googlesource.com/jgit/jgit

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-06-09 13:48:17 -07:00
..
config Merge branch 'dl/merge-autostash' 2020-04-29 16:15:27 -07:00
howto update how-to-maintain-git 2020-03-09 07:57:57 -07:00
RelNotes The sixth batch 2020-05-01 13:40:00 -07:00
technical reftable: file format documentation 2020-06-09 13:48:17 -07:00
.gitattributes
.gitignore Merge branch 'js/misc-doc-fixes' 2019-05-09 00:37:27 +09:00
asciidoc.conf Doc: drop support for docbook-xsl before 1.72.0 2020-03-29 09:25:38 -07:00
asciidoctor-extensions.rb Merge branch 'ma/user-manual-markup-update' 2019-10-06 12:25:16 +09:00
blame-options.txt blame: add config options for the output of ignored or unblamable lines 2019-05-16 11:36:23 +09:00
build-docdep.perl
cat-texi.perl
cmd-list.perl
CodingGuidelines Merge branch 'jc/allow-strlen-substitution-in-shell-scripts' 2020-04-22 13:42:48 -07:00
config.txt Merge branch 'mt/doc-worktree-ref' 2020-05-01 13:39:56 -07:00
date-formats.txt
diff-format.txt doc: indent multi-line items in list 2019-12-13 12:18:07 -08:00
diff-generate-patch.txt diff, log doc: small grammer, format, and language fixes 2019-09-17 12:14:06 -07:00
diff-options.txt diff-options.txt: avoid "regex" overload in example 2020-02-09 09:25:24 -08:00
doc-diff doc-diff: use single-colon rule in rendering Makefile 2020-02-18 13:53:30 -08:00
docbook-xsl.css
docbook.xsl
everyday.txto
fetch-options.txt Merge branch 'dr/doc-recurse-submodules' 2020-04-28 15:50:01 -07:00
fix-texi.perl
git-add.txt add: support the --pathspec-from-file option 2019-12-04 10:10:37 -08:00
git-am.txt Documentation: document am --no-gpg-sign 2020-04-03 11:37:22 -07:00
git-annotate.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-apply.txt Merge branch 'nd/diff-apply-ita' 2018-06-25 13:22:36 -07:00
git-archimport.txt git-archimport.1: specify what kind of Arch we're talking about 2018-09-21 09:28:58 -07:00
git-archive.txt
git-bisect-lk2009.txt Merge branch 'dl/lore-is-the-archive' 2019-12-06 15:09:24 -08:00
git-bisect.txt Documentation/git-bisect.txt: add --no-ff to merge command 2019-10-29 11:53:56 +09:00
git-blame.txt blame: add the ability to ignore commits and their changes 2019-05-16 11:36:23 +09:00
git-branch.txt Merge branch 'po/doc-branch' into maint 2019-07-29 12:38:16 -07:00
git-bugreport.txt bugreport: add compiler info 2020-04-16 15:23:42 -07:00
git-bundle.txt Merge branch 'po/bundle-doc-clonable' 2019-12-10 13:11:41 -08:00
git-cat-file.txt Merge branch 'dt/cat-file-batch-ambiguous' 2019-02-06 22:05:21 -08:00
git-check-attr.txt Documentation: fix a bunch of typos, both old and new 2019-11-07 13:42:00 +09:00
git-check-ignore.txt Merge branch 'en/check-ignore' into maint 2020-03-17 15:02:23 -07:00
git-check-mailmap.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-check-ref-format.txt doc: promote "git switch" 2019-04-02 13:57:00 +09:00
git-checkout-index.txt
git-checkout.txt doc: --recurse-submodules mostly applies to active submodules 2020-04-06 13:42:43 -07:00
git-cherry-pick.txt cherry-pick/revert: honour --no-gpg-sign in all case 2020-04-03 11:37:22 -07:00
git-cherry.txt
git-citool.txt
git-clean.txt Merge branch 'en/clean-nested-with-ignored' 2019-10-11 14:24:46 +09:00
git-clone.txt clone: document --filter options 2020-03-22 16:38:30 -07:00
git-column.txt git-column.txt: fix section header 2018-12-26 15:29:30 -08:00
git-commit-graph.txt Merge branch 'gs/commit-graph-path-filter' 2020-05-01 13:39:53 -07:00
git-commit-tree.txt Documentation: merge commit-tree --[no-]gpg-sign 2020-04-03 11:37:22 -07:00
git-commit.txt Documentation: reword commit --no-gpg-sign 2020-04-03 11:37:22 -07:00
git-config.txt config: add '--show-scope' to print the scope of a config value 2020-02-10 10:49:12 -08:00
git-count-objects.txt
git-credential-cache--daemon.txt
git-credential-cache.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-credential-store.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-credential.txt credential: move doc to credential.h 2019-11-18 15:21:29 +09:00
git-cvsexportcommit.txt
git-cvsimport.txt
git-cvsserver.txt Documentation: fix a bunch of typos, both old and new 2019-11-07 13:42:00 +09:00
git-daemon.txt doc: format pathnames and URLs as monospace. 2019-03-13 11:14:22 +09:00
git-describe.txt describe doc: remove '7-char' abbreviation reference 2019-04-08 17:24:51 +09:00
git-diff-files.txt
git-diff-index.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-diff-tree.txt Documentation/git-diff-tree.txt: fix formatting 2019-04-01 15:17:47 +09:00
git-diff.txt git-diff.txt: document return code of --no-index 2019-11-02 13:16:41 +09:00
git-difftool.txt difftool: fallback on merge.guitool 2019-05-13 23:11:59 +09:00
git-fast-export.txt Documentation: fix a bunch of typos, both old and new 2019-11-07 13:42:00 +09:00
git-fast-import.txt fast-import: add options for rewriting submodules 2020-02-28 09:53:41 -08:00
git-fetch-pack.txt Documentation: fix several one-character-off spelling errors 2018-04-09 14:15:02 +09:00
git-fetch.txt doc: typo: s/can not/cannot/ and s/is does/does/ 2019-08-05 10:05:24 -07:00
git-filter-branch.txt git-filter-branch.txt: wrap "maths" notation in backticks 2020-02-04 12:17:18 -08:00
git-fmt-merge-msg.txt config.txt: move fmt-merge-msg-config.txt to config/ 2018-10-29 10:17:01 +09:00
git-for-each-ref.txt ref-filter: add worktreepath atom 2019-05-07 13:45:53 +09:00
git-format-patch.txt format-patch: teach --no-encode-email-headers 2020-04-07 22:37:18 -07:00
git-fsck-objects.txt
git-fsck.txt Documentation/git-fsck.txt: include fsck.* config variables 2019-07-29 10:41:18 -07:00
git-gc.txt Recommend git-filter-repo instead of git-filter-branch 2019-09-05 13:01:48 -07:00
git-get-tar-commit-id.txt
git-grep.txt Merge branch 'mt/grep-cquote-path' 2020-04-28 15:50:09 -07:00
git-gui.txt Documentation: update the location of the git-gui repo 2019-10-06 09:45:02 +09:00
git-hash-object.txt hash-object doc: stop mentioning git-cvsimport 2019-05-28 10:47:42 -07:00
git-help.txt doc: format pathnames and URLs as monospace. 2019-03-13 11:14:22 +09:00
git-http-backend.txt Documentation: turn middle-of-line tabs into spaces 2019-03-07 09:25:32 +09:00
git-http-fetch.txt http-fetch: make -a standard behaviour 2018-04-24 10:55:02 +09:00
git-http-push.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-imap-send.txt git-imap-send.txt: move imap.* to a separate file 2018-10-29 10:17:02 +09:00
git-index-pack.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-init-db.txt
git-init.txt builtin/init-db: allow specifying hash algorithm on command line 2020-02-24 09:33:27 -08:00
git-instaweb.txt git-instaweb: add Python builtin http.server support 2019-01-28 10:57:44 -08:00
git-interpret-trailers.txt interpret-trailers.txt: start the desc line with a capital letter 2019-04-01 15:49:47 +09:00
git-log.txt Merge branch 'ds/log-exclude-decoration-config' 2020-04-28 15:50:08 -07:00
git-ls-files.txt doc: --recurse-submodules mostly applies to active submodules 2020-04-06 13:42:43 -07:00
git-ls-remote.txt Merge branch 'jc/doc-single-h-is-for-help' into maint 2020-03-17 15:02:24 -07:00
git-ls-tree.txt doc: format pathnames and URLs as monospace. 2019-03-13 11:14:22 +09:00
git-mailinfo.txt
git-mailsplit.txt
git-merge-base.txt git-merge-base.txt: render indentations correctly under Asciidoctor 2019-09-09 11:05:51 -07:00
git-merge-file.txt
git-merge-index.txt git-merge-index.txt: wrap shell listing in "----" 2019-09-09 11:05:52 -07:00
git-merge-one-file.txt
git-merge-tree.txt
git-merge.txt merge: teach --autostash option 2020-04-10 09:28:02 -07:00
git-mergetool--lib.txt mergetool: use get_merge_tool function 2019-05-13 23:11:59 +09:00
git-mergetool.txt mergetool: fallback to tool when guitool unavailable 2019-05-13 23:11:59 +09:00
git-mktag.txt
git-mktree.txt Documentation: normalize spelling of 'normalised' 2018-04-09 14:15:07 +09:00
git-multi-pack-index.txt multi-pack-index: add [--[no-]progress] option. 2019-10-23 12:05:06 +09:00
git-mv.txt
git-name-rev.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-notes.txt notes: fix minimum number of parameters to "copy" subcommand 2019-10-18 09:43:10 +09:00
git-p4.txt git-p4: add p4 submit hooks 2020-02-14 08:58:53 -08:00
git-pack-objects.txt config: set pack.useSparse=true by default 2020-03-20 14:22:31 -07:00
git-pack-redundant.txt
git-pack-refs.txt
git-parse-remote.txt
git-patch-id.txt
git-prune-packed.txt
git-prune.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-pull.txt Merge branch 'dl/merge-autostash' 2020-04-29 16:15:27 -07:00
git-push.txt doc: fix repeated words 2019-08-11 17:40:07 -07:00
git-quiltimport.txt git-quiltimport: add --keep-non-patch option 2019-01-07 15:29:34 -08:00
git-range-diff.txt Merge branch 'dl/range-diff-with-notes' 2019-12-05 12:52:44 -08:00
git-read-tree.txt doc: --recurse-submodules mostly applies to active submodules 2020-04-06 13:42:43 -07:00
git-rebase.txt Merge branch 'en/rebase-root-and-fork-point-are-incompatible' 2020-05-01 13:39:58 -07:00
git-receive-pack.txt git-receive-pack.txt: wrap shell [script] listing in "----" 2019-09-09 11:05:52 -07:00
git-reflog.txt reflog expire: cover reflog from all worktrees 2018-10-22 13:32:54 +09:00
git-remote-ext.txt Merge branch 'js/check-docs-exe' 2019-04-22 11:14:46 +09:00
git-remote-fd.txt docs: move gitremote-helpers into section 7 2019-04-01 14:00:53 +09:00
git-remote-helpers.txto docs: move gitremote-helpers into section 7 2019-04-01 14:00:53 +09:00
git-remote.txt doc: promote "git switch" 2019-04-02 13:57:00 +09:00
git-repack.txt doc: fix repeated words 2019-08-11 17:40:07 -07:00
git-replace.txt Recommend git-filter-repo instead of git-filter-branch 2019-09-05 13:01:48 -07:00
git-request-pull.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-rerere.txt Merge branch 'nd/switch-and-restore' 2019-07-09 15:25:44 -07:00
git-reset.txt doc: document --recurse-submodules for reset and restore 2020-04-06 13:42:43 -07:00
git-restore.txt doc: document --recurse-submodules for reset and restore 2020-04-06 13:42:43 -07:00
git-rev-list.txt git-rev-list.txt: prune options in synopsis 2019-10-06 09:45:19 +09:00
git-rev-parse.txt rev-parse: make --show-toplevel without a worktree an error 2019-11-20 10:19:58 +09:00
git-revert.txt cherry-pick/revert: honour --no-gpg-sign in all case 2020-04-03 11:37:22 -07:00
git-rm.txt rm: support the --pathspec-from-file option 2020-02-19 10:56:49 -08:00
git-send-email.txt Documentation: wrap config listings in "----" 2019-09-09 11:05:51 -07:00
git-send-pack.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-sh-i18n--envsubst.txt
git-sh-i18n.txt
git-sh-setup.txt
git-shell.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-shortlog.txt git-shortlog.txt: include commit limiting options 2019-11-10 15:13:23 +09:00
git-show-branch.txt Documentation/git-show-branch: avoid literal {apostrophe} 2019-04-10 12:05:03 +09:00
git-show-index.txt show-index: update documentation for index v2 2018-05-29 00:28:22 +09:00
git-show-ref.txt git-show-ref.txt: fix order of flags 2019-01-10 10:29:05 -08:00
git-show.txt Use proper syntax for replaceables in command docs 2018-05-25 17:16:47 +09:00
git-sparse-checkout.txt sparse-checkout: provide a new reapply subcommand 2020-03-27 11:33:31 -07:00
git-stage.txt
git-stash.txt stash push: support the --pathspec-from-file option 2020-02-19 10:56:49 -08:00
git-status.txt Documentation: wrap blocks with "--" 2019-09-09 11:05:51 -07:00
git-stripspace.txt
git-submodule.txt Merge branch 'es/recursive-single-branch-clone' 2020-03-05 10:43:03 -08:00
git-svn.txt git svn: stop using rebase --preserve-merges 2019-11-23 09:49:23 +09:00
git-switch.txt doc: --recurse-submodules mostly applies to active submodules 2020-04-06 13:42:43 -07:00
git-symbolic-ref.txt
git-tag.txt Documentation: fix a bunch of typos, both old and new 2019-11-07 13:42:00 +09:00
git-tools.txt
git-unpack-file.txt
git-unpack-objects.txt
git-update-index.txt doc: dissuade users from trying to ignore tracked files 2020-01-22 12:27:49 -08:00
git-update-ref.txt update-ref: implement interactive transaction handling 2020-04-02 11:09:49 -07:00
git-update-server-info.txt update-server-info: avoid needless overwrites 2019-05-15 14:07:37 +09:00
git-upload-archive.txt
git-upload-pack.txt doc: tidy asciidoc style 2019-01-23 11:37:29 -08:00
git-var.txt doc: keep first level section header in upper case 2018-05-02 17:03:33 +09:00
git-verify-commit.txt
git-verify-pack.txt
git-verify-tag.txt
git-web--browse.txt doc: format pathnames and URLs as monospace. 2019-03-13 11:14:22 +09:00
git-whatchanged.txt
git-worktree.txt doc: fix typos in man pages 2019-03-18 14:45:21 +09:00
git-write-tree.txt
git.txt builtin/init-db: add environment variable for new repo hash 2020-02-24 09:33:29 -08:00
gitattributes.txt Merge branch 'ln/userdiff-elixir' 2019-12-01 09:04:36 -08:00
gitcli.txt Merge branch 'jc/doc-single-h-is-for-help' into maint 2020-03-17 15:02:24 -07:00
gitcore-tutorial.txt doc/gitcore-tutorial: fix prose to match example command 2020-01-08 08:56:40 -08:00
gitcredentials.txt Merge branch 'bc/wildcard-credential' 2020-03-05 10:43:02 -08:00
gitcvs-migration.txt
gitdiffcore.txt log -G: ignore binary files 2018-12-26 14:59:37 -08:00
giteveryday.txt doc: promote "git restore" 2019-05-07 13:04:48 +09:00
gitfaq.txt docs: add a FAQ 2020-03-30 10:39:48 -07:00
gitglossary.txt
githooks.txt Merge branch 'bk/p4-pre-edit-changelist' 2020-04-22 13:42:43 -07:00
gitignore.txt Merge branch 'an/ignore-doc-update' into maint 2019-07-25 14:27:13 -07:00
gitk.txt doc: log, gitk: line-log arguments must exist in starting revision 2019-12-26 11:00:15 -08:00
gitmodules.txt Merge branch 'pb/submodule-doc-xref' 2019-12-25 11:21:59 -08:00
gitnamespaces.txt
gitremote-helpers.txt Merge branch 'bc/smart-http-atomic-push' 2019-10-23 14:43:11 +09:00
gitrepository-layout.txt Merge branch 'sg/dir-trie-fixes' 2019-11-10 18:02:14 +09:00
gitrevisions.txt push doc: correct lies about how push refspecs work 2018-08-31 14:04:06 -07:00
gitsubmodules.txt doc: list all commands affected by submodule.recurse 2020-04-06 13:42:43 -07:00
gittutorial-2.txt doc: promote "git restore" 2019-05-07 13:04:48 +09:00
gittutorial.txt doc: promote "git restore" 2019-05-07 13:04:48 +09:00
gitweb.conf.txt gitweb.conf.txt: switch pluses to backticks to help Asciidoctor 2019-09-09 11:05:52 -07:00
gitweb.txt doc: don't use git.kernel.org as example gitweb URL 2019-06-24 12:37:21 -07:00
gitworkflows.txt doc: promote "git switch" 2019-04-02 13:57:00 +09:00
glossary-content.txt doc: typo: s/can not/cannot/ and s/is does/does/ 2019-08-05 10:05:24 -07:00
howto-index.sh
i18n.txt
install-doc-quick.sh install-doc-quick: allow specifying what ref to install 2017-12-12 16:49:40 -08:00
install-webdoc.sh
line-range-format.txt
lint-gitlink.perl
mailmap.txt
Makefile reftable: file format documentation 2020-06-09 13:48:17 -07:00
manpage-base-url.xsl.in
manpage-bold-literal.xsl manpage-bold-literal.xsl: stop using git.docbook.backslash 2020-03-29 09:25:38 -07:00
manpage-normal.xsl manpage-normal.xsl: fold in manpage-base.xsl 2020-03-29 09:25:38 -07:00
manpage-quote-apos.xsl Quote ' as \(aq in manpages 2009-10-22 12:59:50 -07:00
manpage.xsl Documentation: fix build with Asciidoctor 2 2019-09-16 12:20:39 -07:00
merge-options.txt Merge branch 'dl/merge-autostash' 2020-04-29 16:15:27 -07:00
merge-strategies.txt merge-strategies: fix typo "reflected to" to "reflected in" 2019-11-11 11:04:46 +09:00
MyFirstContribution.txt MyFirstContribution: rephrase contact info 2020-02-14 09:36:56 -08:00
MyFirstObjectWalk.txt MyFirstObjectWalk: remove unnecessary conditional statement 2020-03-30 11:16:41 -07:00
pretty-formats.txt Documentation: explain "mboxrd" pretty format 2020-04-15 22:08:53 -07:00
pretty-options.txt Merge branch 'dl/pretty-reference' 2019-12-10 13:11:43 -08:00
pull-fetch-param.txt pull doc: refer to a specific section in 'fetch' doc 2020-04-05 15:00:03 -07:00
rev-list-options.txt revision: --show-pulls adds helpful merges 2020-04-10 09:58:55 -07:00
revisions.txt docs: fix minor glitch in illustration 2020-04-21 13:21:52 -07:00
sequencer.txt cherry-pick/revert: add --skip option 2019-07-02 12:08:08 -07:00
SubmittingPatches Merge branch 'dl/pretty-reference' 2019-12-10 13:11:43 -08:00
texi.xsl
trace2-target-values.txt docs: mention trace2 target-dir mode in git-config 2019-10-04 09:26:42 +09:00
transfer-data-leaks.txt
urls-remotes.txt
urls.txt Doc: Bundle file usage 2019-10-21 12:02:39 +09:00
user-manual.conf user-manual.conf: don't specify [listingblock] 2020-03-31 16:08:02 -07:00
user-manual.txt Merge branch 'dl/lore-is-the-archive' 2019-12-06 15:09:24 -08:00