Go to file
Jeff King 9d78fb0eb6 midx: check consistency of fanout table
The commit-graph, midx, and pack idx on-disk formats all have oid fanout
tables which are fed to bsearch_hash(). If these tables do not increase
monotonically, then the binary search may not only produce bogus values,
it may cause out of bounds reads.

We fixed this for commit graphs in 4169d89645 (commit-graph: check
consistency of fanout table, 2023-10-09). That commit argued that we did
not need to do the same for midx and pack idx files, because they
already did this check. However, that is wrong. We _do_ check the fanout
table for pack idx files when we load them, but we only do so for midx
files when running "git multi-pack-index verify". So it is possible to
get an out-of-bounds read by running a normal command with a specially
crafted midx file.

Let's fix this using the same solution (and roughly the same test) we
did for the commit-graph in 4169d89645. This replaces the same check
from "multi-pack-index verify", because verify uses the same read
routines, we'd bail on reading the midx much sooner now. So let's make
sure to copy its verbose error message.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-11-09 19:07:52 +09:00
.github Merge branch 'jk/ci-retire-allow-ref' 2023-09-07 15:06:08 -07:00
Documentation The fifteenth batch 2023-10-04 13:29:09 -07:00
block-sha1
…
builtin Merge branch 'jk/commit-graph-verify-fix' 2023-10-04 13:28:53 -07:00
ci Merge branch 'jk/ci-retire-allow-ref' 2023-09-07 15:06:08 -07:00
compat Merge branch 'jk/fsmonitor-unused-parameter' 2023-09-29 09:04:14 -07:00
contrib completion: loosen and document the requirement around completing alias 2023-09-20 11:41:41 -07:00
ewah git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
git-gui Merge git-gui into ml/git-gui-exec-path-fix 2023-09-18 10:52:30 -07:00
gitk-git
…
gitweb
…
mergetools
…
negotiator negotiator/noop: mark unused callback parameters 2023-08-29 17:56:25 -07:00
oss-fuzz
…
perl
…
po Merge branch 'po-id' of github.com:bagasme/git-po 2023-08-21 07:05:38 +08:00
refs Merge branch 'tb/refs-exclusion-and-packed-refs' 2023-07-21 13:47:26 -07:00
reftable
…
sha1 avoid SHA-1 functions deprecated in OpenSSL 3+ 2023-08-01 08:34:56 -07:00
sha1collisiondetection@855827c583
…
sha1dc
…
sha256 Merge branch 'ew/hash-with-openssl-evp' 2023-08-09 16:18:15 -07:00
t midx: check consistency of fanout table 2023-11-09 19:07:52 +09:00
templates
…
trace2 trace2: mark unused config callback parameter 2023-08-29 17:56:25 -07:00
xdiff
…
.cirrus.yml
…
.clang-format
…
.editorconfig
…
.gitattributes
…
.gitignore gitignore: ignore clangd .cache directory 2023-08-04 10:56:51 -07:00
.gitmodules
…
.mailmap mailmap: change primary address for Glen Choo 2023-08-07 11:58:17 -07:00
.tsan-suppressions
…
CODE_OF_CONDUCT.md
…
COPYING
…
GIT-VERSION-GEN Start the 2.43 cycle 2023-08-24 09:32:34 -07:00
INSTALL
…
LGPL-2.1
…
Makefile Merge branch 'jc/update-index-show-index-version' 2023-09-20 10:45:16 -07:00
README.md
…
RelNotes Start the 2.43 cycle 2023-08-24 09:32:34 -07:00
SECURITY.md
…
abspath.c
…
abspath.h
…
aclocal.m4
…
add-interactive.c Merge branch 'jk/unused-post-2.42' 2023-09-07 15:06:07 -07:00
add-interactive.h
…
add-patch.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
advice.c advice: handle "rebase" in error_resolve_conflict() 2023-08-07 13:21:00 -07:00
advice.h
…
alias.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
alias.h
…
alloc.c
…
alloc.h git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
apply.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
apply.h
…
archive-tar.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
archive-zip.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
archive.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
archive.h
…
attr.c Merge branch 'sl/sparse-check-attr' 2023-08-29 13:51:43 -07:00
attr.h attr: expose and rename accessor functions 2023-06-27 11:31:06 -07:00
banned.h
…
base85.c
…
base85.h
…
bisect.c
…
bisect.h
…
blame.c blame: allow --contents to work with bare repo 2023-07-21 07:32:58 -07:00
blame.h
…
blob.c
…
blob.h
…
bloom.c commit-graph: detect out-of-order BIDX offsets 2023-10-09 15:55:02 -07:00
bloom.h
…
branch.c branch: error message checking out a branch in use 2023-08-08 18:27:30 -07:00
branch.h
…
builtin.h
…
bulk-checkin.c Merge branch 'ew/hash-with-openssl-evp' 2023-09-13 10:07:57 -07:00
bulk-checkin.h
…
bundle-uri.c bundle-uri: mark unused parameters in callbacks 2023-08-29 17:56:26 -07:00
bundle-uri.h
…
bundle.c Merge branch 'dk/bundle-i18n-more' 2023-07-25 12:05:24 -07:00
bundle.h
…
cache-tree.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
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: drop pair_chunk_unsafe() 2023-10-09 15:55:02 -07:00
chunk-format.h chunk-format: drop pair_chunk_unsafe() 2023-10-09 15:55:02 -07:00
color.c config: inline git_color_default_config 2023-06-28 14:06:38 -07:00
color.h config: inline git_color_default_config 2023-06-28 14:06:38 -07:00
column.c
…
column.h
…
combine-diff.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
command-list.txt
…
commit-graph.c commit-graph: handle overflow in chunk_size checks 2023-11-09 19:07:52 +09:00
commit-graph.h commit-graph: check bounds when accessing BDAT chunk 2023-10-09 15:55:01 -07:00
commit-reach.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
commit-reach.h
…
commit-slab-decl.h
…
commit-slab-impl.h
…
commit-slab.h
…
commit.c Merge branch 'rs/pack-objects-parseopt-fix' 2023-07-28 09:45:22 -07:00
commit.h
…
common-main.c
…
config.c add core.maxTreeDepth config 2023-08-31 15:51:07 -07:00
config.h config: pass source to config_parser_event_fn_t 2023-06-28 14:06:40 -07:00
config.mak.dev
…
config.mak.in
…
config.mak.uname win32: add a helper to run `git.exe` without a foreground window 2023-08-09 13:58:13 -07:00
configure.ac configure.ac: always save NO_ICONV to config.status 2023-07-19 10:07:55 -07:00
connect.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
connect.h
…
connected.c
…
connected.h
…
convert.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
convert.h
…
copy.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
copy.h
…
credential.c credential: mark unused parameter in urlmatch callback 2023-08-29 17:56:26 -07:00
credential.h
…
csum-file.c Merge branch 'ew/hash-with-openssl-evp' 2023-09-13 10:07:57 -07:00
csum-file.h
…
ctype.c kwset: move translation table from ctype 2023-07-05 11:41:18 -07:00
daemon.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
date.c
…
date.h
…
decorate.c
…
decorate.h
…
delta-islands.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
delta-islands.h
…
delta.h
…
detect-compiler
…
diagnose.c
…
diagnose.h
…
diff-delta.c
…
diff-lib.c Merge branch 'js/diff-cached-fsmonitor-fix' 2023-09-20 10:44:57 -07:00
diff-merges.c
…
diff-merges.h
…
diff-no-index.c Merge branch 'pw/diff-no-index-from-named-pipes' 2023-09-20 10:44:57 -07:00
diff.c diff --stat: add config option to limit filename width 2023-09-18 09:39:07 -07:00
diff.h diff: drop useless "status" parameter from diff_result_code() 2023-08-21 15:33:24 -07:00
diffcore-break.c
…
diffcore-delta.c
…
diffcore-order.c
…
diffcore-pickaxe.c
…
diffcore-rename.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
diffcore-rotate.c
…
diffcore.h
…
dir-iterator.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
dir-iterator.h
…
dir.c Merge branch 'jc/pathspec-match-with-common-prefix' 2023-07-17 11:30:43 -07:00
dir.h Merge branch 'cw/strbuf-cleanup' 2023-07-06 11:54:46 -07:00
editor.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
editor.h
…
entry.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
entry.h
…
environment.c lower core.maxTreeDepth default to 2048 2023-08-31 15:51:08 -07:00
environment.h add core.maxTreeDepth config 2023-08-31 15:51:07 -07:00
exec-cmd.c
…
exec-cmd.h
…
fetch-negotiator.c
…
fetch-negotiator.h
…
fetch-pack.c Merge branch 'ts/unpacklimit-config-fix' 2023-08-30 13:50:41 -07:00
fetch-pack.h
…
fmt-merge-msg.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
fmt-merge-msg.h config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
fsck.c fsck: detect very large tree pathnames 2023-08-31 15:51:07 -07:00
fsck.h fsck: detect very large tree pathnames 2023-08-31 15:51:07 -07:00
fsmonitor--daemon.h
…
fsmonitor-ipc.c fsmonitor: mark unused parameters in stub functions 2023-09-18 15:56:15 -07:00
fsmonitor-ipc.h
…
fsmonitor-ll.h
…
fsmonitor-path-utils.h
…
fsmonitor-settings.c fsmonitor: mark some maybe-unused parameters 2023-09-18 15:56:14 -07:00
fsmonitor-settings.h
…
fsmonitor.c
…
fsmonitor.h
…
generate-cmdlist.sh
…
generate-configlist.sh
…
generate-hooklist.sh
…
gettext.c
…
gettext.h
…
git-archimport.perl
…
git-compat-util.h Merge branch 'mp/rebase-label-length-limit' 2023-08-24 09:32:33 -07:00
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-send-email.perl: avoid printing undef when validating addresses 2023-09-18 12:04:30 -07:00
git-sh-i18n.sh
…
git-sh-setup.sh
…
git-submodule.sh
…
git-svn.perl git-svn: drop FakeTerm hack 2023-08-30 17:20:31 -07:00
git-web--browse.sh
…
git-zlib.c
…
git-zlib.h
…
git.c Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
git.rc
…
gpg-interface.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
gpg-interface.h
…
graph.c diff --stat: add config option to limit filename width 2023-09-18 09:39:07 -07:00
graph.h
…
grep.c grep: mark unused parmaeters in pcre fallbacks 2023-08-29 17:56:26 -07:00
grep.h config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
hash-ll.h Merge branch 'ew/hash-with-openssl-evp' 2023-08-09 16:18:15 -07:00
hash-lookup.c
…
hash-lookup.h
…
hash.h
…
hashmap.c
…
hashmap.h
…
help.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
help.h
…
hex.c hex: retire get_sha1_hex() 2023-07-24 16:11:23 -07:00
hex.h hex: retire get_sha1_hex() 2023-07-24 16:11:23 -07:00
hook.c
…
hook.h
…
http-backend.c Merge branch 'tb/refs-exclusion-and-packed-refs' 2023-07-21 13:47:26 -07:00
http-fetch.c
…
http-push.c http-push: mark unused parameter in xml callback 2023-07-13 17:23:59 -07:00
http-walker.c
…
http.c Merge branch 'jk/redact-h2h3-headers-fix' 2023-09-22 17:01:36 -07:00
http.h
…
ident.c Merge branch 'bc/ident-dot-is-no-longer-crud-letter' 2023-08-09 16:18:15 -07:00
ident.h config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
imap-send.c imap-send: mark unused parameters with NO_OPENSSL 2023-08-29 17:56:26 -07:00
iterator.h
…
json-writer.c
…
json-writer.h
…
khash.h
…
kwset.c kwset: move translation table from ctype 2023-07-05 11:41:18 -07:00
kwset.h kwset: move translation table from ctype 2023-07-05 11:41:18 -07:00
levenshtein.c
…
levenshtein.h
…
line-log.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
line-log.h
…
line-range.c
…
line-range.h
…
linear-assignment.c
…
linear-assignment.h
…
list-objects-filter-options.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
list-objects-filter-options.h
…
list-objects-filter.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
list-objects-filter.h
…
list-objects.c list-objects: respect max_allowed_tree_depth 2023-08-31 15:51:08 -07:00
list-objects.h
…
list.h
…
lockfile.c
…
lockfile.h
…
log-tree.c decorate: use commit color for HEAD arrow 2023-08-21 11:40:10 -07:00
log-tree.h pretty: add pointer and tag options to %(decorate) 2023-08-21 11:40:10 -07:00
ls-refs.c Merge branch 'tb/refs-exclusion-and-packed-refs' 2023-07-21 13:47:26 -07:00
ls-refs.h
…
mailinfo.c config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
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 branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
merge-ll.h
…
merge-ort-wrappers.c
…
merge-ort-wrappers.h
…
merge-ort.c merge-ort: lowercase a few error messages 2023-09-16 17:26:53 -07:00
merge-ort.h
…
merge-recursive.c merge-ort: lowercase a few error messages 2023-09-16 17:26:53 -07:00
merge-recursive.h
…
merge.c
…
merge.h
…
mergesort.h
…
midx.c midx: check consistency of fanout table 2023-11-09 19:07:52 +09:00
midx.h midx: check size of revindex chunk 2023-10-09 15:55:01 -07:00
name-hash.c
…
name-hash.h
…
notes-cache.c
…
notes-cache.h
…
notes-merge.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
notes-merge.h
…
notes-utils.c config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
notes-utils.h
…
notes.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
notes.h
…
object-file.c Merge branch 'jk/unused-parameter' 2023-07-25 12:05:24 -07:00
object-file.h
…
object-name.c Merge branch 'cw/strbuf-cleanup' 2023-07-06 11:54:46 -07:00
object-name.h
…
object-store-ll.h Merge branch 'tb/object-access-overflow-protection' 2023-07-25 12:05:23 -07:00
object-store.h packfile.c: prevent overflow in `load_idx()` 2023-07-14 09:31:34 -07:00
object.c Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
object.h
…
oid-array.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
oid-array.h
…
oidmap.c
…
oidmap.h
…
oidset.c
…
oidset.h
…
oidtree.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
oidtree.h
…
pack-bitmap-write.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
pack-bitmap.c pack-bitmap: mark unused parameters in show_object callback 2023-08-29 17:56:24 -07:00
pack-bitmap.h
…
pack-check.c
…
pack-mtimes.c
…
pack-mtimes.h
…
pack-objects.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
pack-objects.h
…
pack-revindex.c midx: check size of revindex chunk 2023-10-09 15:55:01 -07:00
pack-revindex.h
…
pack-write.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
pack.h
…
packfile.c Merge branch 'jc/retire-get-sha1-hex' 2023-08-04 10:52:30 -07:00
packfile.h
…
pager.c config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
pager.h
…
parallel-checkout.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
parallel-checkout.h
…
parse-options-cb.c parse-options: mark unused parameters in noop callback 2023-09-05 14:48:17 -07:00
parse-options.c parse-options: allow omitting option help text 2023-08-28 08:20:20 -07:00
parse-options.h fetch: reject --no-ipv[46] 2023-07-18 14:47:30 -07:00
patch-delta.c
…
patch-ids.c
…
patch-ids.h
…
path.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
path.h
…
pathspec.c
…
pathspec.h
…
pkt-line.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
pkt-line.h pkt-line: add size parameter to packet_length() 2023-07-07 15:30:16 -07:00
preload-index.c
…
preload-index.h
…
pretty.c pretty: add pointer and tag options to %(decorate) 2023-08-21 11:40:10 -07:00
pretty.h
…
prio-queue.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
prio-queue.h
…
progress.c
…
progress.h
…
promisor-remote.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
promisor-remote.h
…
prompt.c
…
prompt.h
…
protocol-caps.c
…
protocol-caps.h
…
protocol.c
…
protocol.h
…
prune-packed.c
…
prune-packed.h
…
quote.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
quote.h
…
range-diff.c Merge branch 'kh/range-diff-notes' 2023-09-29 09:04:15 -07:00
range-diff.h
…
reachable.c Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
reachable.h
…
read-cache-ll.h
…
read-cache.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
read-cache.h
…
rebase-interactive.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
rebase-interactive.h
…
rebase.c
…
rebase.h
…
ref-filter.c ref-filter: add mailmap support 2023-09-25 14:52:34 -07:00
ref-filter.h builtin/for-each-ref.c: add `--exclude` option 2023-07-10 14:48:55 -07:00
reflog-walk.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
reflog-walk.h
…
reflog.c
…
reflog.h
…
refs.c Merge branch 'jk/unused-parameter' 2023-07-25 12:05:24 -07:00
refs.h Merge branch 'tb/refs-exclusion-and-packed-refs' 2023-07-21 13:47:26 -07:00
refspec.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
refspec.h
…
remote-curl.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
remote.c Merge branch 'ah/advise-force-pushing' 2023-07-25 12:05:23 -07:00
remote.h wt-status: don't show divergence advice when committing 2023-07-13 09:14:58 -07:00
replace-object.c Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
replace-object.h Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
repo-settings.c
…
repository.c
…
repository.h Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
rerere.c Merge branch 'jc/unresolve-removal' 2023-10-02 11:20:00 -07:00
rerere.h
…
reset.c
…
reset.h
…
resolve-undo.c Merge branch 'jc/unresolve-removal' 2023-10-02 11:20:00 -07:00
resolve-undo.h checkout: allow "checkout -m path" to unmerge removed paths 2023-07-31 16:16:44 -07:00
revision.c Merge branch 'ps/revision-cmdline-stdin-not' 2023-10-04 13:28:52 -07:00
revision.h range-diff: treat notes like `log` 2023-09-19 14:40:19 -07:00
run-command.c Merge branch 'ma/locate-in-path-for-windows' 2023-08-09 16:18:16 -07:00
run-command.h
…
sane-ctype.h sane-ctype.h: create header for sane-ctype macros 2023-07-05 11:41:18 -07:00
scalar.c Merge branch 'ds/scalar-updates' 2023-08-29 13:51:44 -07:00
send-pack.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
send-pack.h
…
sequencer.c Merge branch 'ob/sequencer-remove-dead-code' 2023-09-20 10:44:58 -07:00
sequencer.h
…
serve.c
…
serve.h
…
server-info.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
server-info.h
…
setup.c Merge branch 'ds/scalar-updates' 2023-08-29 13:51:44 -07:00
setup.h Merge branch 'ds/scalar-updates' 2023-08-29 13:51:44 -07:00
sh-i18n--envsubst.c
…
sha1dc_git.c
…
sha1dc_git.h
…
shallow.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
shallow.h
…
shared.mak
…
shell.c
…
shortlog.h
…
sideband.c
…
sideband.h
…
sigchain.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
sigchain.h
…
simple-ipc.h
…
sparse-index.c read_tree(): respect max_allowed_tree_depth 2023-08-31 15:51:08 -07:00
sparse-index.h
…
split-index.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
split-index.h
…
stable-qsort.c
…
statinfo.c
…
statinfo.h Merge branch 'en/header-split-cache-h-part-3' 2023-06-29 16:43:21 -07:00
strbuf.c Merge branch 'rs/strbuf-addftime-simplify' 2023-07-25 12:05:24 -07:00
strbuf.h Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
streaming.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
streaming.h
…
string-list.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
string-list.h
…
strmap.c
…
strmap.h
…
strvec.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
strvec.h
…
sub-process.c
…
sub-process.h
…
submodule-config.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
submodule-config.h config: pass kvi to die_bad_number() 2023-06-28 14:06:40 -07:00
submodule.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
submodule.h
…
symlinks.c
…
symlinks.h
…
tag.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
tag.h
…
tar.h
…
tempfile.c Merge branch 'cw/compat-util-header-cleanup' 2023-07-17 11:30:42 -07:00
tempfile.h
…
thread-utils.c
…
thread-utils.h
…
tmp-objdir.c
…
tmp-objdir.h
…
trace.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
trace.h
…
trace2.c wrapper: use trace2 counters to collect fsync stats 2023-07-20 11:52:53 -07:00
trace2.h Merge branch 'bb/use-trace2-counters-for-fsync-stats' 2023-08-02 09:37:23 -07:00
trailer.c trailer: split process_command_line_args into separate functions 2023-09-11 10:01:19 -07:00
trailer.h trailer: separate public from internal portion of trailer_iterator 2023-09-11 10:01:18 -07:00
transport-helper.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
transport-internal.h
…
transport.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
transport.h
…
tree-diff.c tree-diff: respect max_allowed_tree_depth 2023-08-31 15:51:08 -07:00
tree-walk.c traverse_trees(): respect max_allowed_tree_depth 2023-08-31 15:51:08 -07:00
tree-walk.h tree-walk: drop MAX_TRAVERSE_TREES macro 2023-08-31 15:51:07 -07:00
tree.c read_tree(): respect max_allowed_tree_depth 2023-08-31 15:51:08 -07:00
tree.h read_tree(): respect max_allowed_tree_depth 2023-08-31 15:51:08 -07:00
unicode-width.h unicode: update the width tables to Unicode 15.1 2023-09-25 16:17:28 -07:00
unimplemented.sh
…
unix-socket.c
…
unix-socket.h
…
unix-stream-server.c
…
unix-stream-server.h
…
unpack-trees.c tree-walk: reduce stack size for recursive functions 2023-08-31 15:51:07 -07:00
unpack-trees.h tree-walk: drop MAX_TRAVERSE_TREES macro 2023-08-31 15:51:07 -07:00
upload-pack.c Merge branch 'ds/upload-pack-error-sequence-fix' 2023-08-24 09:32:33 -07:00
upload-pack.h
…
url.c
…
url.h
…
urlmatch.c config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
urlmatch.h config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00
usage.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
userdiff.c git-compat-util: move alloc macros to git-compat-util.h 2023-07-05 11:42:31 -07:00
userdiff.h
…
utf8.c
…
utf8.h
…
varint.c
…
varint.h
…
version.c
…
version.h
…
versioncmp.c git-compat-util: move strbuf.c funcs to its header 2023-07-05 11:41:18 -07:00
versioncmp.h
…
walker.c
…
walker.h
…
wildmatch.c
…
wildmatch.h
…
worktree.c worktree: mark unused parameters in noop repair callback 2023-08-29 17:56:25 -07:00
worktree.h
…
wrap-for-bin.sh
…
wrapper.c maintenance: add get_random_minute() 2023-08-10 14:04:16 -07:00
wrapper.h maintenance: add get_random_minute() 2023-08-10 14:04:16 -07:00
write-or-die.c treewide: remove unnecessary includes for wrapper.h 2023-07-05 11:41:59 -07:00
write-or-die.h
…
ws.c
…
ws.h
…
wt-status.c Merge branch 'jk/tree-name-and-depth-limit' 2023-09-14 11:16:59 -07:00
wt-status.h
…
xdiff-interface.c Merge branch 'gc/config-context' 2023-07-06 11:54:48 -07:00
xdiff-interface.h config: add ctx arg to config_fn_t 2023-06-28 14:06:39 -07:00

README.md

Build status

Git - fast, scalable, distributed revision control system

Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.

Git is an Open Source project covered by the GNU General Public License version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

Many Git online resources are accessible from https://git-scm.com/ including full documentation and Git related tools.

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-<commandname>.txt for documentation of each command. If git has been correctly installed, then the tutorial can also be read with man gittutorial or git help tutorial, and the documentation of each command with man git-<commandname> or git help <commandname>.

CVS users may also want to read Documentation/gitcvs-migration.txt (man gitcvs-migration or git help cvs-migration if git is installed).

The user discussion and development of Git take place on the Git mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to git@vger.kernel.org (read Documentation/SubmittingPatches for instructions on patch submission and Documentation/CodingGuidelines).

Those wishing to help with error message, usage and informational message string translations (localization l10) should see po/README.md (a po file is a Portable Object file that holds the translations).

To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org (not the Git list). The mailing list archives are available at https://lore.kernel.org/git/, http://marc.info/?l=git and other archival sites.

Issues which are security relevant should be disclosed privately to the Git Security mailing list git-security@googlegroups.com.

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • "goddamn idiotic truckload of sh*t": when it breaks