Go to file
Taylor Blau 7f514b7a5e midx: read `RIDX` chunk when present
When a MIDX contains the new `RIDX` chunk, ensure that the reverse index
is read from it instead of the on-disk .rev file. Since we need to
encode the object order in the MIDX itself for correctness reasons,
there is no point in storing the same data again outside of the MIDX.

So, this patch stops writing separate .rev files, and reads it out of
the MIDX itself. This is possible to do with relatively little new code,
since the format of the RIDX chunk is identical to the data in the .rev
file. In other words, we can implement this by pointing the
`revindex_data` field at the reverse index chunk of the MIDX instead of
the .rev file without any other changes.

Note that we have two knobs that are adjusted for the new tests:
GIT_TEST_MIDX_WRITE_REV and GIT_TEST_MIDX_READ_RIDX. The former controls
whether the MIDX .rev is written at all, and the latter controls whether
we read the MIDX's RIDX chunk.

Both are necessary to ensure that the test added at the beginning of
this series continues to work. This is because we always need to write
the RIDX chunk in the MIDX in order to change its checksum, but we want
to make sure reading the existing .rev file still works (since the RIDX
chunk takes precedence by default).

Arguably this isn't a very interesting mode to test, because the
precedence rules mean that we'll always read the RIDX chunk over the
.rev file. But it makes it impossible for a user to induce corruption in
their repository by adjusting the test knobs (since if we had an
either/or knob they could stop writing the RIDX chunk, allowing them to
tweak the MIDX's object order without changing its checksum).

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Reviewed-by: Derrick Stolee <dstolee@microsoft.com>
Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-01-27 12:07:53 -08:00
.github Merge branch 'ab/ci-updates' 2021-12-15 09:39:49 -08:00
Documentation midx.c: make changing the preferred pack safe 2022-01-27 12:07:52 -08:00
block-sha1
builtin Merge branch 'en/sparse-checkout-set' 2022-01-03 16:24:15 -08:00
ci Merge branch 'ab/ci-updates' 2021-12-15 09:39:49 -08:00
compat Merge branch 'hn/reftable' 2021-12-15 09:39:45 -08:00
contrib Merge branch 'es/test-chain-lint' 2022-01-03 16:24:15 -08:00
ewah
git-gui
gitk-git
gitweb
mergetools mergetools/xxdiff: prevent segfaults from stopping difftool 2021-10-13 11:04:04 -07:00
negotiator
perl tests: disable fsync everywhere 2021-10-29 10:22:40 -07:00
po l10n: pl: 2.34.0 round 3 2021-11-14 15:19:23 +01:00
ppc
refs Merge branch 'hn/allow-bogus-oid-in-ref-tests' 2021-12-15 09:39:54 -08:00
reftable reftable: add dump utility 2021-10-08 10:45:48 -07:00
sha1collisiondetection@855827c583
sha1dc
sha256
t midx: read `RIDX` chunk when present 2022-01-27 12:07:53 -08:00
templates
trace2 Merge branch 'ab/run-command' 2021-12-15 09:39:47 -08:00
xdiff Merge branch 'pw/xdiff-classify-record-in-histogram' 2021-12-21 15:03:14 -08:00
.cirrus.yml
.clang-format
.editorconfig
.gitattributes
.gitignore Merge branch 'js/retire-preserve-merges' 2021-10-18 15:47:56 -07:00
.gitmodules
.mailmap
.tsan-suppressions
CODE_OF_CONDUCT.md
COPYING
GIT-VERSION-GEN Git 2.34.1 2021-11-24 10:55:13 -08:00
INSTALL
LGPL-2.1
Makefile Merge branch 'js/scalar' 2021-12-21 15:03:17 -08:00
README.md CI: use shorter names that fit in UX tooltips 2021-11-23 16:51:53 -08:00
RelNotes Git 2.34.1 2021-11-24 10:55:13 -08:00
SECURITY.md
abspath.c
aclocal.m4
add-interactive.c
add-interactive.h
add-patch.c run-command API users: use strvec_pushv(), not argv assignment 2021-11-25 22:15:07 -08:00
advice.c Merge branch 'ds/add-rm-with-sparse-index' 2021-10-13 15:15:56 -07:00
advice.h Merge branch 'en/pull-conflicting-options' into maint 2021-10-12 13:51:36 -07:00
alias.c
alias.h
alloc.c
alloc.h
apply.c git-apply: add --allow-empty flag 2021-12-13 14:30:25 -08:00
apply.h git-apply: add --allow-empty flag 2021-12-13 14:30:25 -08:00
archive-tar.c run-command API users: use strvec_push(), not argv construction 2021-11-25 22:15:07 -08:00
archive-zip.c
archive.c
archive.h
attr.c
attr.h
banned.h
base85.c
bisect.c
bisect.h
blame.c
blame.h
blob.c
blob.h
bloom.c
bloom.h
branch.c branch: protect branches checked out in all worktrees 2021-12-01 22:18:25 -08:00
branch.h
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle.c
bundle.h
cache-tree.c Merge branch 'vd/sparse-reset' 2021-12-10 14:35:12 -08:00
cache-tree.h
cache.h Merge branch 'ew/test-wo-fsync' 2021-12-15 09:39:52 -08:00
cbtree.c cbtree: remove broken and unused cb_unlink 2021-12-07 15:18:35 -08:00
cbtree.h cbtree: remove broken and unused cb_unlink 2021-12-07 15:18:35 -08:00
chdir-notify.c
chdir-notify.h
check-builtins.sh
checkout.c
checkout.h
chunk-format.c
chunk-format.h
color.c color: allow colors to be prefixed with "reset" 2021-10-28 09:37:18 -07:00
color.h color: allow colors to be prefixed with "reset" 2021-10-28 09:37:18 -07:00
column.c
column.h
combine-diff.c
command-list.txt generate-cmdlist.sh: replace "grep' invocation with a shell version 2021-11-05 12:01:13 -07:00
commit-graph.c commit-graph: return if there is no git directory 2021-12-06 09:55:05 -08:00
commit-graph.h
commit-reach.c
commit-reach.h
commit-slab-decl.h
commit-slab-impl.h
commit-slab.h
commit.c ssh signing: make verify-commit consider key lifetime 2021-12-09 13:38:04 -08:00
commit.h
common-main.c common-main.c: call exit(), don't return 2021-12-07 12:29:57 -08:00
config.c config.c: don't leak memory in handle_path_include() 2021-10-21 16:26:45 -07:00
config.h Merge branch 'ab/retire-git-config-key-is-valid' 2021-10-11 10:21:47 -07:00
config.mak.dev config.mak.dev: specify -std=gnu99 for gcc/clang 2021-12-08 13:16:44 -08:00
config.mak.in
config.mak.uname Merge branch 'hn/reftable' 2021-12-15 09:39:45 -08:00
configure.ac Merge branch 'hn/reftable' 2021-12-15 09:39:45 -08:00
connect.c Merge branch 'ah/connect-parse-feature-v0-fix' into maint 2021-10-12 13:51:49 -07:00
connect.h
connected.c run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
connected.h
convert.c Merge branch 'mc/clean-smudge-with-llp64' 2021-11-29 15:41:51 -08:00
convert.h
copy.c
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c run-command API users: use strvec_push(), not argv construction 2021-11-25 22:15:07 -08:00
date.c strbuf_addftime(): handle "%s" manually 2021-11-04 12:38:09 -07:00
decorate.c
decorate.h
delta-islands.c
delta-islands.h
delta.h odb: guard against data loss checking out a huge file 2021-11-03 11:22:27 -07:00
detect-compiler
diff-delta.c
diff-lib.c Merge branch 'dd/diff-files-unmerged-fix' into maint 2021-10-12 13:51:40 -07:00
diff-merges.c
diff-merges.h
diff-no-index.c
diff.c run-command API users: use strvec_push(), not argv construction 2021-11-25 22:15:07 -08:00
diff.h
diffcore-break.c
diffcore-delta.c diffcore-delta.c: LLP64 compatibility, upcast unity for left shift 2021-12-01 14:48:10 -08:00
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore-rotate.c
diffcore.h
dir-iterator.c
dir-iterator.h
dir.c Merge branch 'ds/add-rm-with-sparse-index' into maint 2021-11-23 14:48:11 -08:00
dir.h
editor.c run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
entry.c Merge branch 'mc/clean-smudge-with-llp64' 2021-11-29 15:41:51 -08:00
entry.h Merge branch 'mc/clean-smudge-with-llp64' 2021-11-29 15:41:51 -08:00
environment.c Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
environment.h
exec-cmd.c
exec-cmd.h
fetch-negotiator.c
fetch-negotiator.h
fetch-pack.c Merge branch 'jk/fetch-pack-avoid-sigpipe-to-index-pack' 2021-12-10 14:35:12 -08:00
fetch-pack.h
fmt-merge-msg.c ssh signing: make fmt-merge-msg consider key lifetime 2021-12-09 13:38:04 -08:00
fmt-merge-msg.h
fsck.c
fsck.h
fsmonitor.c
fsmonitor.h
fuzz-commit-graph.c
fuzz-pack-headers.c
fuzz-pack-idx.c
generate-cmdlist.sh generate-cmdlist.sh: don't parse command-list.txt thrice 2021-11-05 12:01:13 -07:00
generate-configlist.sh
generate-hooklist.sh
gettext.c
gettext.h
git-add--interactive.perl add -p: avoid use of undefined $key when ReadKey -> EOF 2021-11-28 15:14:09 -08:00
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'cb/mingw-gmtime-r' 2021-12-10 14:35:15 -08:00
git-curl-compat.h
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl tests: disable fsync everywhere 2021-10-29 10:22:40 -07:00
git-difftool--helper.sh
git-filter-branch.sh git-sh-setup: remove "sane_grep", it's not needed anymore 2021-10-21 16:17:57 -07:00
git-instaweb.sh git-sh-setup: remove "sane_grep", it's not needed anymore 2021-10-21 16:17:57 -07:00
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 send-email docs: add format-patch options 2021-10-28 09:06:15 -07:00
git-sh-i18n.sh git-sh-i18n: remove unused eval_ngettext() 2021-10-21 16:04:29 -07:00
git-sh-setup.sh Merge branch 'ab/sh-retire-helper-functions' 2021-11-29 15:41:50 -08:00
git-submodule.sh
git-svn.perl
git-web--browse.sh
git.c Merge branch 'ld/sparse-diff-blame' 2021-12-21 15:03:17 -08:00
git.rc
gpg-interface.c Merge branch 'fs/ssh-signing-other-keytypes' 2021-12-21 15:03:16 -08:00
gpg-interface.h ssh signing: make verify-commit consider key lifetime 2021-12-09 13:38:04 -08:00
graph.c
graph.h
grep.c Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data" 2021-11-19 09:10:27 -08:00
grep.h Merge branch 'hm/paint-hits-in-log-grep' 2021-11-01 13:48:08 -07:00
hash-lookup.c
hash-lookup.h
hash.h
hashmap.c
hashmap.h
help.c
help.h
hex.c
hook.c
hook.h
http-backend.c run-command API users: use strvec_pushv(), not argv assignment 2021-11-25 22:15:07 -08:00
http-fetch.c http-fetch: redact url on die() message 2021-11-11 10:07:44 -08:00
http-push.c
http-walker.c
http.c run-command API users: use strvec_pushv(), not argv assignment 2021-11-25 22:15:07 -08:00
http.h
ident.c
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
ll-merge.c
ll-merge.h
lockfile.c
lockfile.h
log-tree.c ssh signing: make git log verify key lifetime 2021-12-09 13:38:04 -08:00
log-tree.h
ls-refs.c Merge branch 'jk/ref-paranoia' 2021-10-11 10:21:47 -07:00
ls-refs.h
mailinfo.c
mailinfo.h
mailmap.c Merge branch 'ab/mailmap-leakfix' into maint 2021-10-12 13:51:30 -07:00
mailmap.h
match-trees.c
mem-pool.c
mem-pool.h
merge-blobs.c
merge-blobs.h
merge-ort-wrappers.c
merge-ort-wrappers.h
merge-ort.c Merge branch 'jt/no-abuse-alternate-odb-for-submodules' 2021-10-25 16:06:56 -07:00
merge-ort.h
merge-recursive.c Merge branch 'jt/no-abuse-alternate-odb-for-submodules' 2021-10-25 16:06:56 -07:00
merge-recursive.h
merge.c
mergesort.c mergesort: avoid left shift overflow 2021-11-18 12:42:06 -08:00
mergesort.h
midx.c midx: read `RIDX` chunk when present 2022-01-27 12:07:53 -08:00
midx.h midx: read `RIDX` chunk when present 2022-01-27 12:07:53 -08:00
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes-utils.c
notes-utils.h
notes.c
notes.h
object-file.c Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
object-name.c
object-store.h Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
object.c Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
object.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 Merge branch 'jk/test-bitmap-fix' 2021-12-10 14:35:08 -08:00
pack-bitmap.h Merge branch 'tb/repack-write-midx' 2021-10-18 15:47:57 -07:00
pack-check.c Merge branch 'ab/fsck-unexpected-type' 2021-10-25 16:06:56 -07:00
pack-objects.c
pack-objects.h
pack-revindex.c midx: read `RIDX` chunk when present 2022-01-27 12:07:53 -08:00
pack-revindex.h
pack-write.c Merge branch 'tb/pack-finalize-ordering' into maint 2021-10-12 13:51:46 -07:00
pack.h
packfile.c Merge branch 'tb/pack-revindex-on-disk-cleanup' 2021-12-15 09:39:50 -08:00
packfile.h Merge branch 'tb/pack-revindex-on-disk-cleanup' 2021-12-15 09:39:50 -08:00
pager.c pager: fix crash when pager program doesn't exist 2021-11-24 16:14:10 -08:00
parallel-checkout.c Merge branch 'mc/clean-smudge-with-llp64' 2021-11-29 15:41:51 -08:00
parallel-checkout.h
parse-options-cb.c
parse-options.c Merge branch 'ab/parse-options-cleanup' 2021-12-15 09:39:54 -08:00
parse-options.h Merge branch 'ab/parse-options-cleanup' 2021-11-09 13:19:06 -08:00
patch-delta.c
patch-ids.c
patch-ids.h
path.c
path.h
pathspec.c
pathspec.h pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>) 2021-12-07 12:31:17 -08:00
pkt-line.c fetch-pack: redact packfile urls in traces 2021-11-11 10:07:43 -08:00
pkt-line.h fetch-pack: redact packfile urls in traces 2021-11-11 10:07:43 -08:00
preload-index.c
pretty.c Merge branch 'es/pretty-describe-more' 2021-12-15 09:39:48 -08:00
pretty.h
prio-queue.c
prio-queue.h
progress.c
progress.h
promisor-remote.c
promisor-remote.h
prompt.c run-command API users: use strvec_push(), not argv construction 2021-11-25 22:15:07 -08:00
prompt.h
protocol-caps.c
protocol-caps.h
protocol.c
protocol.h
prune-packed.c
prune-packed.h
quote.c
quote.h
range-diff.c Merge branch 'rs/range-diff-avoid-segfault-with-I' into maint 2021-10-12 13:51:45 -07:00
range-diff.h
reachable.c
reachable.h
read-cache.c Merge branch 'vd/sparse-reset' 2021-12-10 14:35:12 -08:00
rebase-interactive.c
rebase-interactive.h
rebase.c
rebase.h
ref-filter.c Merge branch 'jc/fix-ref-sorting-parse' 2021-11-29 15:41:47 -08:00
ref-filter.h for-each-ref: delay parsing of --sort=<atom> options 2021-10-20 14:33:07 -07:00
reflog-walk.c
reflog-walk.h
refs.c Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
refs.h Merge branch 'hn/allow-bogus-oid-in-ref-tests' 2021-12-15 09:39:54 -08:00
refspec.c
refspec.h
remote-curl.c run-command API users: use strvec_pushv(), not argv assignment 2021-11-25 22:15:07 -08:00
remote.c Merge branch 'gc/remote-with-fewer-static-global-variables' 2021-12-10 14:35:02 -08:00
remote.h remote: die if branch is not found in repository 2021-11-18 22:31:19 -08:00
replace-object.c
replace-object.h
repo-settings.c repo-settings: prepare_repo_settings only in git repos 2021-12-06 09:55:06 -08:00
repository.c Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
repository.h Merge branch 'ns/tmp-objdir' 2022-01-03 16:24:15 -08:00
rerere.c
rerere.h
reset.c
reset.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'jc/c99-var-decl-in-for-loop' 2021-12-21 15:03:15 -08:00
revision.h Merge branch 'jt/add-submodule-odb-clean-up' 2021-10-06 13:40:11 -07:00
run-command.c Merge branch 'ab/run-command' 2021-12-15 09:39:47 -08:00
run-command.h run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
send-pack.c Merge branch 'fs/ssh-signing' 2021-10-25 16:06:58 -07:00
send-pack.h
sequencer.c Merge branch 'en/rebase-x-wo-git-dir-env' 2021-12-21 15:03:15 -08:00
sequencer.h Merge branch 'js/retire-preserve-merges' 2021-10-18 15:47:56 -07:00
serve.c
serve.h
server-info.c
setup.c
sh-i18n--envsubst.c
sha1dc_git.c
sha1dc_git.h
shallow.c
shallow.h
shell.c
shortlog.h
sideband.c
sideband.h
sigchain.c
sigchain.h
simple-ipc.h Merge branch 'jh/builtin-fsmonitor-part1' 2021-10-13 15:15:58 -07:00
sparse-index.c sparse-index: add ensure_correct_sparsity function 2021-11-24 16:32:38 -08:00
sparse-index.h sparse-index: add ensure_correct_sparsity function 2021-11-24 16:32:38 -08:00
split-index.c
split-index.h
stable-qsort.c
strbuf.c strbuf_addftime(): handle "%s" manually 2021-11-04 12:38:09 -07:00
strbuf.h strbuf.h: use BUG(...) not die("BUG: ...") 2021-12-07 12:31:16 -08:00
streaming.c
streaming.h
string-list.c
string-list.h
strmap.c
strmap.h
strvec.c
strvec.h
sub-process.c run-command API: remove "argv" member, always use "args" 2021-11-25 22:15:07 -08:00
sub-process.h
submodule-config.c
submodule-config.h
submodule.c Merge branch 'jt/no-abuse-alternate-odb-for-submodules' 2021-10-25 16:06:56 -07:00
submodule.h
symlinks.c
tag.c ssh signing: make verify-tag consider key lifetime 2021-12-09 13:38:04 -08:00
tag.h
tar.h
tempfile.c
tempfile.h
thread-utils.c
thread-utils.h
tmp-objdir.c tmp-objdir: new API for creating temporary writable databases 2021-12-08 14:06:36 -08:00
tmp-objdir.h tmp-objdir: new API for creating temporary writable databases 2021-12-08 14:06:36 -08:00
trace.c
trace.h
trace2.c
trace2.h Merge branch 'jh/builtin-fsmonitor-part1' 2021-10-13 15:15:58 -07:00
trailer.c run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
trailer.h
transport-helper.c Merge branch 'jk/http-push-status-fix' 2021-10-29 15:43:12 -07:00
transport-internal.h
transport.c run-command API users: use strvec_push(), not argv construction 2021-11-25 22:15:07 -08:00
transport.h
tree-diff.c pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>) 2021-12-07 12:31:17 -08:00
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 Merge branch 'ds/sparse-deep-pattern-checkout-fix' 2021-12-15 09:39:50 -08:00
unpack-trees.h
upload-pack.c run-command API users: use strvec_pushl(), not argv construction 2021-11-25 22:15:07 -08:00
upload-pack.h
url.c
url.h
urlmatch.c urlmatch: add underscore to URL_HOST_CHARS 2021-10-12 18:29:25 -07:00
urlmatch.h
usage.c
userdiff.c userdiff-cpp: back out the digit-separators in numbers 2021-10-25 08:47:44 -07:00
userdiff.h
utf8.c
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c
walker.h
wildmatch.c
wildmatch.h
worktree.c worktree: simplify find_shared_symref() memory ownership model 2021-12-01 22:18:25 -08:00
worktree.h worktree: simplify find_shared_symref() memory ownership model 2021-12-01 22:18:25 -08:00
wrap-for-bin.sh
wrapper.c wrapper: remove xunsetenv() 2021-10-29 14:59:29 -07:00
write-or-die.c Merge branch 'ew/test-wo-fsync' 2021-12-15 09:39:52 -08:00
ws.c
wt-status.c status: print stash info with --porcelain=v2 --show-stash 2021-10-21 17:24:30 -07:00
wt-status.h
xdiff-interface.c xdiff: implement a zealous diff3, or "zdiff3" 2021-12-01 14:45:58 -08:00
xdiff-interface.h
zlib.c

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). To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org. 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