Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Jeff King 7fa31b645f commit: drop uses of get_cached_commit_buffer()
The "--show-all" revision option shows UNINTERESTING
commits. Some of these commits may be unparsed when we try
to show them (since we may or may not need to walk their
parents to fulfill the request).

Commit 3131b71301 (Add "--show-all" revision walker flag for
debugging, 2008-02-09) resolved this by just skipping
pretty-printing for commits without their object contents
cached, saying:

  Because we now end up listing commits we may not even have been parsed
  at all "show_log" and "show_commit" need to protect against commits
  that don't have a commit buffer entry.

That was the easy fix to avoid the pretty-printer segfaulting,
but:

  1. It doesn't work for all formats. E.g., --oneline
     prints the oid for each such commit but not a trailing
     newline, leading to jumbled output.

  2. It only affects some commits, depending on whether we
     happened to parse them or not (so if they were at the
     tip of an UNINTERESTING starting point, or if we
     happened to traverse over them, you'd see more data).

  3. It unncessarily ties the decision to show the verbose
     header to whether the commit buffer was cached. That
     makes it harder to change the logic around caching
     (e.g., if we could traverse without actually loading
     the full commit objects).

These days it's safe to feed such a commit to the
pretty-print code. Since be5c9fb904 (logmsg_reencode: lazily
load missing commit buffers, 2013-01-26), we'll load it on
demand in such a case. So let's just always show the verbose
headers.

This does change the behavior of plumbing, but:

  a. The --show-all option was explicitly introduced as a
     debugging aid, and was never documented (and has rarely
     even been mentioned on the list by git devs).

  b. Avoiding the commits was already not deterministic due
     to (2) above. So the caller might have seen full
     headers for these commits anyway, and would need to be
     prepared for it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-02-22 12:12:16 -08:00
.github Configure Git contribution guidelines for github.com 2017-06-13 08:41:47 -07:00
block-sha1
builtin commit: drop uses of get_cached_commit_buffer() 2018-02-22 12:12:16 -08:00
ci travis-ci: check that all build artifacts are .gitignore-d 2018-01-03 13:29:19 -08:00
compat Merge branch 'bp/fsmonitor' 2017-11-21 14:07:50 +09:00
contrib Merge branch 'ra/prompt-eread-fix' 2017-12-28 14:08:45 -08:00
Documentation Git 2.16.2 2018-02-15 15:21:23 -08:00
ewah Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09:00
git-gui Merge branch 'js/misc-git-gui-stuff' of ../git-gui 2018-01-09 11:07:03 -08:00
gitk-git
gitweb Merge branch 'gc/gitweb-filetest-acl' 2017-11-06 14:24:30 +09:00
mergetools mergetools/meld: improve compatibiilty with Meld on macOS X 2017-06-18 22:11:29 -07:00
perl Git/Packet.pm: use 'if' instead of 'unless' 2017-11-22 16:23:55 +09:00
po l10n: de.po: translate 72 new messages 2018-01-15 07:47:30 +01:00
ppc
refs Merge branch 'mh/avoid-rewriting-packed-refs' into maint 2017-12-06 09:08:50 -08:00
sha1collisiondetection@19d97bf5af sha1dc: optionally use sha1collisiondetection as a submodule 2017-07-03 10:09:34 -07:00
sha1dc Merge branch 'ab/sha1dc-maint' 2017-07-06 18:14:44 -07:00
t Merge branch 'nd/add-i-ignore-submodules' into maint 2018-02-15 15:18:13 -08:00
templates fsmonitor: simplify determining the git worktree under Windows 2017-11-13 10:02:20 +09:00
vcs-svn Merge branch 'jn/vcs-svn-cleanup' into maint 2017-09-10 17:03:09 +09:00
xdiff Merge branch 'jt/diff-anchored-patience' 2017-12-19 11:33:56 -08:00
.clang-format clang-format: add a comment about the meaning/status of the 2017-10-02 13:17:48 +09:00
.gitattributes Fix build with core.autocrlf=true 2017-05-10 13:32:50 +09:00
.gitignore
.gitmodules sha1dc: optionally use sha1collisiondetection as a submodule 2017-07-03 10:09:34 -07:00
.mailmap mailmap: use Kaartic Sivaraam's new address 2017-11-03 23:00:07 +09:00
.travis.yml travis-ci: don't install default addon packages for the 32 bit Linux build 2017-12-27 12:14:39 -08:00
.tsan-suppressions ThreadSanitizer: add suppressions 2017-08-23 10:38:56 -07:00
abspath.c real_path: clarify return value ownership 2017-09-27 09:13:47 +09:00
aclocal.m4
advice.c Merge branch 'ls/editor-waiting-message' 2017-12-19 11:33:59 -08:00
advice.h Merge branch 'ls/editor-waiting-message' 2017-12-19 11:33:59 -08:00
alias.c Merge branch 'js/alias-case-sensitivity' 2017-07-20 16:29:59 -07:00
alloc.c
apply.c Merge branch 'rs/apply-inaccurate-eof-with-incomplete-line' into maint 2017-12-06 09:09:03 -08:00
apply.h apply: remove newfd from struct apply_state 2017-10-06 10:07:18 +09:00
archive-tar.c Merge branch 'bw/config-h' 2017-06-24 14:28:41 -07:00
archive-zip.c Merge branch 'bw/config-h' 2017-06-24 14:28:41 -07:00
archive.c refs: convert dwim_ref and expand_ref to struct object_id 2017-10-16 11:05:51 +09:00
archive.h timestamp_t: a new data type for timestamps 2017-04-27 13:07:39 +09:00
argv-array.c
argv-array.h
attr.c hashmap: add API to disable item counting when threaded 2017-09-07 09:42:02 +09:00
attr.h pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
base85.c
bisect.c Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
bisect.h Merge branch 'ma/bisect-leakfix' 2017-11-15 12:14:28 +09:00
blame.c Merge branch 'bw/diff-opt-impl-to-bitfields' 2017-11-09 14:31:27 +09:00
blame.h blame: move entry prepend to libgit 2017-05-25 13:08:23 +09:00
blob.c Convert lookup_blob to struct object_id 2017-05-08 15:12:57 +09:00
blob.h Convert lookup_blob to struct object_id 2017-05-08 15:12:57 +09:00
branch.c Merge branch 'ks/branch-cleanup' 2017-12-27 11:16:25 -08:00
branch.h Merge branch 'ks/branch-cleanup' 2017-12-27 11:16:25 -08:00
builtin.h git.c: provide setup_auto_pager() 2017-08-03 11:08:10 -07:00
bulk-checkin.c distinguish error versus short read from read_in_full() 2017-09-27 15:45:24 +09:00
bulk-checkin.h
bundle.c Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
bundle.h bundle: convert to struct object_id 2017-05-02 10:46:41 +09:00
cache-tree.c Merge branch 'ma/lockfile-fixes' 2017-11-06 13:11:21 +09:00
cache-tree.h Convert struct cache_tree to use struct object_id 2017-05-02 10:46:41 +09:00
cache.h Merge branch 'ew/empty-merge-with-dirty-index-maint' into ew/empty-merge-with-dirty-index 2017-12-22 12:48:38 -08:00
check_bindir
check-builtins.sh
check-racy.c
checkout.c checkout: factor out functions to new lib file 2017-11-27 09:48:06 +09:00
checkout.h checkout: factor out functions to new lib file 2017-11-27 09:48:06 +09:00
color.c refactor "dumb" terminal determination 2017-12-04 09:38:30 -08:00
color.h diff.c: add dimming to moved line detection 2017-06-30 13:59:42 -07:00
column.c column: do not include pager.c 2017-10-24 10:19:06 +09:00
column.h
combine-diff.c Merge branch 'bw/diff-opt-impl-to-bitfields' 2017-11-09 14:31:27 +09:00
command-list.txt
commit-slab.h commit-slab.h: avoid -Wsign-compare warnings 2017-09-22 13:00:36 +09:00
commit.c commit: remove unused function clear_commit_marks_for_object_array() 2017-12-28 13:50:05 -08:00
commit.h Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
common-main.c
config.c Merge branch 'hm/config-parse-expiry-date' 2017-12-06 09:23:37 -08:00
config.h Merge branch 'hm/config-parse-expiry-date' 2017-12-06 09:23:37 -08:00
config.mak.in
config.mak.uname packed_ref_cache: keep the packed-refs file mmapped if possible 2017-09-25 18:02:45 +09:00
configure.ac Makefile: NO_OPENSSL=1 should no longer imply BLK_SHA1=1 2017-12-28 11:55:56 -08:00
connect.c connect: correct style of C-style comment 2017-11-21 14:01:03 +09:00
connect.h
connected.c Convert check_connected to use struct object_id 2017-10-16 11:05:50 +09:00
connected.h Convert check_connected to use struct object_id 2017-10-16 11:05:50 +09:00
convert.c Merge branch 'tb/check-crlf-for-safe-crlf' 2017-12-27 11:16:21 -08:00
convert.h Merge branch 'tb/apply-with-crlf' into maint 2017-09-10 17:02:55 +09:00
copy.c
COPYING
credential-cache--daemon.c tempfile: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
credential-cache.c Merge branch 'dl/credential-cache-socket-in-xdg-cache' into maint 2017-08-23 14:33:45 -07:00
credential-store.c path.c: and an option to call real_path() in expand_user_path() 2017-04-14 23:51:38 -07:00
credential.c Merge branch 'ab/free-and-null' 2017-06-24 14:28:41 -07:00
credential.h
csum-file.c prefer "!=" when checking read_in_full() result 2017-09-27 15:45:24 +09:00
csum-file.h
ctype.c
daemon.c daemon: recognize hidden request arguments 2017-10-17 10:51:29 +09:00
date.c Merge branch 'ab/strbuf-addftime-tzname-boolify' 2017-07-06 18:14:47 -07:00
decorate.c decorate: clean up and document API 2017-12-08 09:16:27 -08:00
decorate.h decorate: clean up and document API 2017-12-08 09:16:27 -08:00
delta.h
diff-delta.c Merge branch 'mk/diff-delta-avoid-large-offset' 2017-09-28 14:47:56 +09:00
diff-lib.c Merge branch 'bc/hash-algo' 2017-12-13 13:28:54 -08:00
diff-no-index.c diff: make struct diff_flags members lowercase 2017-11-01 11:51:40 +09:00
diff.c Merge branch 'cc/skip-to-optional-val' 2017-12-28 14:08:46 -08:00
diff.h diff: support anchoring line(s) 2017-11-28 10:40:04 +09:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c wildmatch: remove unused wildopts parameter 2017-06-23 18:27:07 -07:00
diffcore-pickaxe.c diff: make struct diff_flags members lowercase 2017-11-01 11:51:40 +09:00
diffcore-rename.c diffcore-rename: make diff-tree -l0 mean -l<large> 2017-12-02 22:16:57 -08:00
diffcore.h diff: convert fill_filespec to struct object_id 2017-06-02 09:36:07 +09:00
dir-iterator.c
dir-iterator.h
dir.c Merge branch 'jh/object-filtering' 2017-12-27 11:16:21 -08:00
dir.h Merge branch 'jh/object-filtering' 2017-12-27 11:16:21 -08:00
editor.c launch_editor(): indicate that Git waits for user input 2017-12-07 10:10:19 -08:00
entry.c Merge branch 'bp/fsmonitor' 2017-11-21 14:07:50 +09:00
environment.c Merge branch 'ar/unconfuse-three-dots' 2017-12-19 11:33:58 -08:00
exec_cmd.c git_extract_argv0_path: do nothing without RUNTIME_PREFIX 2017-09-07 09:41:14 +09:00
exec_cmd.h
fast-import.c Merge branch 'jk/write-in-full-fix' into maint 2017-10-23 14:37:22 +09:00
fetch-pack.c Merge branch 'jk/fewer-pack-rescan' 2017-12-06 09:23:42 -08:00
fetch-pack.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
fmt-merge-msg.h
fsck.c Merge branch 'rs/fsck-null-return-from-lookup' 2017-10-11 14:52:23 +09:00
fsck.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
fsmonitor.c fsmonitor: store fsmonitor bitmap before splitting index 2017-11-10 14:05:01 +09:00
fsmonitor.h fsmonitor: store fsmonitor bitmap before splitting index 2017-11-10 14:05:01 +09:00
generate-cmdlist.sh generate-cmdlist: avoid non-deterministic output 2017-11-22 14:56:30 +09:00
gettext.c
gettext.h
git-add--interactive.perl add--interactive: ignore submodule changes except HEAD 2018-01-16 12:32:45 -08:00
git-archimport.perl archimport: use safe_pipe_capture for user input 2017-09-12 11:08:15 +09:00
git-bisect.sh Merge branch 'sb/bisect-run-empty' 2017-11-15 12:14:36 +09:00
git-compat-util.h git-compat-util: introduce skip_to_optional_arg() 2017-12-11 16:10:12 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl cvsimport: apply shell-quoting regex globally 2017-12-08 09:02:54 -08:00
git-cvsserver.perl cvsserver: use safe_pipe_capture for constant commands as well 2017-09-11 14:52:29 +09:00
git-difftool--helper.sh
git-filter-branch.sh Merge branch 'dg/filter-branch-filter-order-doc' 2017-10-19 14:45:45 +09:00
git-instaweb.sh
git-merge-octopus.sh Merge branch 'ma/up-to-date' 2017-09-10 17:08:22 +09:00
git-merge-one-file.sh scripts: use "git foo" not "git-foo" 2017-08-07 12:04:45 -07:00
git-merge-resolve.sh scripts: use "git foo" not "git-foo" 2017-08-07 12:04:45 -07:00
git-mergetool--lib.sh
git-mergetool.sh
git-p4.py git-p4: update multiple shelved change lists 2017-12-22 13:30:52 -08:00
git-parse-remote.sh
git-quiltimport.sh
git-rebase--am.sh rebase: use mboxrd format to avoid split errors 2017-11-18 12:30:16 +09:00
git-rebase--interactive.sh Merge branch 'js/fix-merge-arg-quoting-in-rebase-p' 2018-01-10 14:01:24 -08:00
git-rebase--merge.sh
git-rebase.sh rebase: rebasing can also be done when HEAD is detached 2017-12-19 10:02:47 -08:00
git-remote-testgit.sh
git-request-pull.sh request-pull: capitalise "Git" to make it a proper noun 2017-10-03 13:11:57 +09:00
git-send-email.perl git-send-email: honor $PATH for sendmail binary 2017-11-28 10:14:30 +09:00
git-sh-i18n.sh
git-sh-setup.sh
git-stash.sh Merge branch 'tg/stash-with-pathspec-fix' into maint 2018-02-15 15:18:13 -08:00
git-submodule.sh submodule: port submodule subcommand 'status' from shell to C 2017-10-07 17:52:35 +09:00
git-svn.perl Merge branch 'jm/svn-pushmergeinfo-fix' into maint 2018-02-15 15:18:11 -08:00
GIT-VERSION-GEN Git 2.16.2 2018-02-15 15:21:23 -08:00
git-web--browse.sh
git.c Merge branch 'ma/branch-list-paginate' 2017-11-28 13:41:50 +09:00
git.rc mingw: include the full version information in the resources 2017-11-01 13:43:52 +09:00
gpg-interface.c tempfile: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
gpg-interface.h gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
graph.c graph: use strbuf_addchars() to add spaces 2017-10-02 13:14:07 +09:00
graph.h
grep.c Merge branch 'ab/pcre2-grep' 2017-12-13 13:28:54 -08:00
grep.h Merge branch 'ab/pcre-v2' into maint 2017-11-21 14:05:30 +09:00
hash.h Add structure representing hash algorithm 2017-11-13 13:20:44 +09:00
hashmap.c hashmap: add API to disable item counting when threaded 2017-09-07 09:42:02 +09:00
hashmap.h hashmap: adjust documentation to reflect reality 2017-12-05 13:37:43 -08:00
help.c version --build-options: report commit, too, if possible 2017-12-14 22:53:04 -08:00
help.h
hex.c notes: move hex_to_bytes() to hex.c and export it 2017-11-01 10:35:35 +09:00
http-backend.c Merge branch 'rs/resolve-ref-optional-result' 2017-09-28 14:47:56 +09:00
http-fetch.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
http-push.c http-push: use hex_to_bytes() 2017-11-01 10:35:39 +09:00
http-walker.c pack: move find_sha1_pack() 2017-08-23 15:12:07 -07:00
http.c Merge branch 'rs/use-argv-array-in-child-process' 2018-01-05 13:28:10 -08:00
http.h http.postbuffer: allow full range of ssize_t values 2017-04-13 18:24:32 -07:00
ident.c Merge branch 'bw/config-h' 2017-06-24 14:28:41 -07:00
imap-send.c imap-send: URI encode server folder 2017-12-18 13:57:06 -08:00
INSTALL
iterator.h
khash.h
kwset.c Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09:00
kwset.h Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09:00
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c ALLOC_GROW: avoid -Wsign-compare warnings 2017-09-22 13:21:11 +09:00
line-log.h ALLOC_GROW: avoid -Wsign-compare warnings 2017-09-22 13:21:11 +09:00
line-range.c
line-range.h
list-objects-filter-options.c list-objects-filter-options: support --no-filter 2017-12-05 09:44:36 -08:00
list-objects-filter-options.h list-objects-filter-options: support --no-filter 2017-12-05 09:44:36 -08:00
list-objects-filter.c list-objects: filter objects in traverse_commit_list 2017-11-22 14:11:57 +09:00
list-objects-filter.h list-objects: filter objects in traverse_commit_list 2017-11-22 14:11:57 +09:00
list-objects.c Merge branch 'sb/describe-blob' 2017-12-28 14:08:50 -08:00
list-objects.h list-objects: filter objects in traverse_commit_list 2017-11-22 14:11:57 +09:00
list.h tempfile: use list.h for linked list 2017-09-06 17:19:54 +09:00
ll-merge.c avoid "write_in_full(fd, buf, len) != len" pattern 2017-09-14 15:17:59 +09:00
ll-merge.h
lockfile.c tempfile: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
lockfile.h lockfile: fix documentation on close_lock_file_gently() 2017-10-06 10:07:17 +09:00
log-tree.c commit: drop uses of get_cached_commit_buffer() 2018-02-22 12:12:16 -08:00
log-tree.h log: add option to choose which refs to decorate 2017-11-22 13:18:59 +09:00
mailinfo.c Merge branch 'rs/mailinfo-qp-decode-fix' into maint 2017-10-18 14:19:03 +09:00
mailinfo.h
mailmap.c Convert remaining callers of get_sha1 to get_oid. 2017-07-17 13:54:51 -07:00
mailmap.h
Makefile Merge branch 'ab/dc-sha1-loose-ends' 2018-01-09 14:32:53 -08:00
match-trees.c
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'jc/merge-symlink-ours-theirs' into maint 2018-02-15 15:18:12 -08:00
merge-recursive.h merge-recursive: change current file dir string_lists to hashmap 2017-09-08 10:36:16 +09:00
merge.c Merge branch 'ew/empty-merge-with-dirty-index-maint' into ew/empty-merge-with-dirty-index 2017-12-22 12:48:38 -08:00
mergesort.c
mergesort.h
mru.c
mru.h
name-hash.c hashmap: add API to disable item counting when threaded 2017-09-07 09:42:02 +09:00
notes-cache.c refs: convert read_ref and read_ref_full to object_id 2017-10-16 11:05:50 +09:00
notes-cache.h notes-cache: convert to struct object_id 2017-05-08 15:12:57 +09:00
notes-merge.c Switch empty tree and blob lookups to use hash abstraction 2017-11-13 13:20:44 +09:00
notes-merge.h notes-merge: convert notes_merge* to struct object_id 2017-06-05 11:23:58 +09:00
notes-utils.c refs: convert read_ref and read_ref_full to object_id 2017-10-16 11:05:50 +09:00
notes-utils.h builtin/notes: convert to struct object_id 2017-06-02 09:36:06 +09:00
notes.c Merge branch 'rs/hex-to-bytes-cleanup' 2017-11-09 14:31:27 +09:00
notes.h notes: convert some accessor functions to struct object_id 2017-06-02 09:36:06 +09:00
object.c object: add clear_commit_marks_all() 2017-12-28 13:50:05 -08:00
object.h Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
oidmap.c oidmap: map with OID as key 2017-10-01 17:18:03 +09:00
oidmap.h oidmap: add oidmap iterator methods 2017-11-22 14:11:56 +09:00
oidset.c oidset: add iterator methods to oidset 2017-11-22 14:11:56 +09:00
oidset.h oidset: don't return value from oidset_init 2018-01-08 15:24:35 -08:00
pack-bitmap-write.c pack-bitmap[-write]: use object_array_clear(), don't leak 2017-09-24 10:06:08 +09:00
pack-bitmap.c pack-bitmap: convert traverse_bitmap_commit_list to object_id 2017-10-16 11:05:51 +09:00
pack-bitmap.h pack-bitmap: convert traverse_bitmap_commit_list to object_id 2017-10-16 11:05:51 +09:00
pack-check.c pack: move open_pack_index(), parse_pack_index() 2017-08-23 15:12:06 -07:00
pack-objects.c pack: convert struct pack_idx_entry to struct object_id 2017-05-08 15:12:57 +09:00
pack-objects.h
pack-revindex.c
pack-revindex.h
pack-write.c avoid looking at errno for short read_in_full() returns 2017-09-27 15:45:24 +09:00
pack.h Convert the verify_pack callback to struct object_id 2017-05-08 15:12:57 +09:00
packfile.c cleanup: fix possible overflow errors in binary search 2017-10-10 08:57:24 +09:00
packfile.h pack: move for_each_packed_object() 2017-08-23 15:12:07 -07:00
pager.c Merge branch 'ma/parse-maybe-bool' 2017-08-22 10:29:03 -07:00
parse-options-cb.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
parse-options.c parse-options: only insert newline in help text if needed 2017-09-25 14:35:53 +09:00
parse-options.h ref-filter: add --no-contains option to tag/branch/for-each-ref 2017-03-24 12:15:26 -07:00
patch-delta.c
patch-ids.c diff: make struct diff_flags members lowercase 2017-11-01 11:51:40 +09:00
patch-ids.h patch-ids: convert to struct object_id 2017-06-02 09:36:07 +09:00
path.c Merge branch 'ao/path-use-xmalloc' 2017-10-28 10:18:40 +09:00
path.h path: document path functions 2017-12-13 11:14:25 -08:00
pathspec.c Merge branch 'ex/deprecate-empty-pathspec-as-match-all' 2017-11-06 13:11:29 +09:00
pathspec.h Merge branch 'bw/pathspec-match-submodule-boundary' 2017-12-19 11:33:56 -08:00
pkt-line.c Merge branch 'bw/protocol-v1' 2017-12-06 09:23:44 -08:00
pkt-line.h pkt-line: add packet_write function 2017-10-17 10:51:29 +09:00
preload-index.c fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files. 2017-10-01 17:23:01 +09:00
pretty.c log: add option to choose which refs to decorate 2017-11-22 13:18:59 +09:00
pretty.h format: create docs for pretty.h 2017-12-12 10:41:15 -08:00
prio-queue.c *.[ch] refactoring: make use of the FREE_AND_NULL() macro 2017-06-16 12:44:09 -07:00
prio-queue.h prio-queue: make output stable with respect to insertion 2014-07-15 11:02:54 -07:00
progress.c Merge branch 'en/rename-progress' 2017-12-19 11:33:55 -08:00
progress.h progress: fix progress meters when dealing with lots of work 2017-11-15 13:11:25 +09:00
prompt.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
prompt.h
protocol.c protocol: introduce protocol extension mechanisms 2017-10-17 10:51:29 +09:00
protocol.h protocol: introduce protocol extension mechanisms 2017-10-17 10:51:29 +09:00
quote.c consistently use "fallthrough" comments in switches 2017-09-22 12:49:57 +09:00
quote.h
reachable.c Merge branch 'nd/prune-in-worktree' 2017-09-19 10:47:53 +09:00
reachable.h timestamp_t: a new data type for timestamps 2017-04-27 13:07:39 +09:00
read-cache.c Merge branch 'tb/add-renormalize' 2017-11-27 11:06:37 +09:00
README.md
ref-filter.c Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
ref-filter.h ref-filter: consult want_color() before emitting colors 2017-07-13 12:42:51 -07:00
reflog-walk.c refs: convert dwim_log to struct object_id 2017-10-16 11:05:51 +09:00
reflog-walk.h reflog-walk: apply --since/--until to reflog dates 2017-07-09 10:00:48 -07:00
refs.c log: add option to choose which refs to decorate 2017-11-22 13:18:59 +09:00
refs.h log: add option to choose which refs to decorate 2017-11-22 13:18:59 +09:00
RelNotes Git 2.16.2 2018-02-15 15:21:23 -08:00
remote-curl.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
remote-testsvn.c refs: convert read_ref and read_ref_full to object_id 2017-10-16 11:05:50 +09:00
remote.c Merge branch 'js/for-each-ref-remote-name-and-ref' 2017-11-15 12:14:32 +09:00
remote.h for-each-ref: let upstream/push report the remote ref name 2017-11-08 10:18:23 +09:00
replace_object.c
repository.c repository: pre-initialize hash algo pointer 2018-01-19 14:23:32 -08:00
repository.h Integrate hash algorithm support with repo setup 2017-11-13 13:20:44 +09:00
rerere.c Merge branch 'jk/write-in-full-fix' 2017-09-25 15:24:06 +09:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
revision.h Merge branch 'rs/lose-leak-pending' into maint 2018-02-15 15:18:11 -08:00
run-command.c run-command: add hint when a hook is ignored 2017-10-10 13:21:46 +09:00
run-command.h run-command: expose is_executable function 2017-04-25 18:45:29 -07:00
send-pack.c send-pack: use internal argv_array of struct child_process 2017-12-22 13:33:53 -08:00
send-pack.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
sequencer.c sequencer: do not invent whitespace when transforming OIDs 2017-12-27 12:33:38 -08:00
sequencer.h rebase -i: learn to abbreviate command names 2017-12-05 10:20:51 -08:00
server-info.c pack: move {,re}prepare_packed_git and approximate_object_count 2017-08-23 15:12:07 -07:00
setup.c Merge branch 'sg/setup-doc-update' 2017-12-19 11:33:58 -08:00
sh-i18n--envsubst.c Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09:00
sha1_file.c Merge branch 'ds/for-each-file-in-obj-micro-optim' 2017-12-13 13:28:57 -08:00
sha1_name.c Merge branch 'jc/branch-name-sanity' 2017-11-28 13:41:49 +09:00
sha1-array.c coccinelle: make use of the "type" FREE_AND_NULL() rule 2017-06-16 12:44:03 -07:00
sha1-array.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
sha1-lookup.c cleanup: fix possible overflow errors in binary search 2017-10-10 08:57:24 +09:00
sha1-lookup.h sha1-lookup: remove sha1_entry_pos() from header file 2017-08-25 09:54:26 -07:00
sha1dc_git.c sha1dc: allow building with the external sha1dc library 2017-08-16 14:44:25 -07:00
sha1dc_git.h sha1dc: allow building with the external sha1dc library 2017-08-16 14:44:25 -07:00
shallow.c Merge branch 'ma/leakplugs' 2017-09-29 11:23:43 +09:00
shell.c shell: drop git-cvsserver support by default 2017-09-12 11:05:58 +09:00
shortlog.h
show-index.c
sideband.c refactor "dumb" terminal determination 2017-12-04 09:38:30 -08:00
sideband.h
sigchain.c sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
sigchain.h
split-index.c Merge branch 'ab/free-and-null' 2017-06-24 14:28:41 -07:00
split-index.h Revert "split-index: add and use unshare_split_index()" 2017-06-24 12:02:39 -07:00
strbuf.c Merge branch 'jd/fix-strbuf-add-urlencode-bytes' 2018-01-05 13:28:10 -08:00
strbuf.h strbuf: remove unused stripspace function alias 2017-12-05 08:50:15 -08:00
streaming.c Merge branch 'jk/write-in-full-fix' 2017-09-25 15:24:06 +09:00
streaming.h
string-list.c cleanup: fix possible overflow errors in binary search 2017-10-10 08:57:24 +09:00
string-list.h string-list.h: move documentation from Documentation/api/ into header 2017-09-27 09:14:34 +09:00
sub-process.c Merge branch 'cc/subprocess-handshake-missing-capabilities' into maint 2017-10-18 14:19:10 +09:00
sub-process.h Merge branch 'jt/subprocess-handshake' 2017-08-11 13:27:05 -07:00
submodule-config.c Merge branch 'bw/submodule-config-cleanup' 2017-08-26 22:55:08 -07:00
submodule-config.h implement fetching of moved submodules 2017-10-17 10:27:18 +09:00
submodule.c Merge branch 'bw/submodule-sans-cache-compat' 2017-12-27 11:16:28 -08:00
submodule.h submodule: convert get_next_submodule to not rely on the_index 2017-12-12 12:35:22 -08:00
symlinks.c
tag.c Merge branch 'rs/tag-null-pointer-arith-fix' 2017-10-05 13:48:20 +09:00
tag.h tag: convert gpg_verify_tag to use struct object_id 2017-07-13 12:02:48 -07:00
tar.h
tempfile.c tempfile: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
tempfile.h tempfile: fix documentation on delete_tempfile() 2017-10-06 10:07:18 +09:00
thread-utils.c
thread-utils.h
tmp-objdir.c
tmp-objdir.h
trace.c trace: improve performance while category is disabled 2017-12-06 09:43:02 -08:00
trace.h trace: improve performance while category is disabled 2017-12-06 09:43:02 -08:00
trailer.c tempfile: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
trailer.h Merge branch 'jk/trailers-parse' 2017-08-26 22:55:04 -07:00
transport-helper.c Merge branch 'jt/transport-hide-vtable' 2017-12-28 14:08:47 -08:00
transport-internal.h transport: make transport vtable more private 2017-12-14 14:28:04 -08:00
transport.c Merge branch 'jt/transport-hide-vtable' 2017-12-28 14:08:47 -08:00
transport.h transport: make transport vtable more private 2017-12-14 14:28:04 -08:00
tree-diff.c diff: make struct diff_flags members lowercase 2017-11-01 11:51:40 +09:00
tree-walk.c Merge branch 'bw/pathspec-match-submodule-boundary' 2017-12-19 11:33:56 -08:00
tree-walk.h tree-walk: convert fill_tree_descriptor() to object_id 2017-08-14 12:38:54 -07:00
tree.c Merge branch 'ab/free-and-null' 2017-06-24 14:28:41 -07:00
tree.h tree: convert read_tree to take an index parameter 2017-06-13 11:40:51 -07:00
unicode_width.h unicode: update the width tables to Unicode 10 2017-07-07 10:33:30 -07:00
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Merge branch 'bp/fsmonitor' 2017-11-21 14:07:50 +09:00
unpack-trees.h unpack-trees: check if we can perform the operation for submodules 2017-03-16 14:07:16 -07:00
upload-pack.c Merge branch 'bw/protocol-v1' 2017-12-06 09:23:44 -08:00
url.c
url.h
urlmatch.c urlmatch: use hex2chr() in append_normalized_escapes() 2017-07-09 09:43:01 -07:00
urlmatch.h
usage.c add UNLEAK annotation for reducing leak false positives 2017-09-08 15:43:17 +09:00
userdiff.c Merge branch 'ik/userdiff-html-h-element-fix' into maint 2017-10-18 14:19:02 +09:00
userdiff.h
utf8.c cleanup: fix possible overflow errors in binary search 2017-10-10 08:57:24 +09:00
utf8.h
varint.c
varint.h
version.c version --build-options: report commit, too, if possible 2017-12-14 22:53:04 -08:00
version.h version --build-options: report commit, too, if possible 2017-12-14 22:53:04 -08:00
versioncmp.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
walker.c refs: update ref transactions to use struct object_id 2017-10-16 11:05:50 +09:00
walker.h
wildmatch.c wildmatch: remove unused wildopts parameter 2017-06-23 18:27:07 -07:00
wildmatch.h wildmatch: remove unused wildopts parameter 2017-06-23 18:27:07 -07:00
worktree.c Merge branch 'bc/object-id' 2017-11-06 14:24:27 +09:00
worktree.h worktree: convert struct worktree to object_id 2017-10-16 11:05:51 +09:00
wrap-for-bin.sh
wrapper.c wrapper.c: consistently quote filenames in error messages 2017-11-06 11:53:14 +09:00
write_or_die.c
ws.c
wt-status.c Merge branch 'bw/rebase-i-ignored-submodule-fix' into maint 2017-11-21 14:05:29 +09:00
wt-status.h status: add option to show ignored files differently 2017-10-31 11:54:21 +09:00
xdiff-interface.c xdiff-interface: export comparing and hashing strings 2017-10-26 11:23:22 +09:00
xdiff-interface.h xdiff-interface: export comparing and hashing strings 2017-10-26 11:23:22 +09:00
zlib.c

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-.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://public-inbox.org/git/, http://marc.info/?l=git and other archival sites.

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