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 f9e377adc0 clone: factor out dir_exists() helper
Two parts of git-clone's setup logic check whether a
directory exists, and they both call stat directly with the
same scratch "struct stat" buffer. Let's pull that into a
helper, which has a few advantages:

  - it makes the purpose of the stat calls more obvious

  - it makes it clear that we don't care about the
    information in "buf" remaining valid

  - if we later decide to make the check more robust (e.g.,
    complaining about non-directories), we can do it in one
    place

Note that we could just use file_exists() for this, which
has identical code. But we specifically care about
directories, so this future-proofs us against that function
later getting more picky about seeing actual files.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-01-03 13:33:05 -08:00
.github Configure Git contribution guidelines for github.com 2017-06-13 08:41:47 -07:00
block-sha1 sha1: provide another level of indirection for the SHA-1 functions 2015-11-05 10:35:11 -08:00
builtin clone: factor out dir_exists() helper 2018-01-03 13:33:05 -08:00
ci travis-ci: fix running P4 and Git LFS tests in Linux build jobs 2017-11-02 11:05:28 +09:00
compat Merge branch 'tz/fsf-address-update' into maint 2017-11-21 14:05:32 +09:00
contrib Merge branch 'tz/complete-branch-copy' into maint 2017-12-06 09:09:02 -08:00
Documentation Prepare for 2.15.2 2017-12-06 09:10:35 -08:00
ewah Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09:00
git-gui Merge branch 'tz/fsf-address-update' of ../git-gui into tz/fsf-address-update 2017-11-09 13:24:43 +09:00
gitk-git Merge git://ozlabs.org/~paulus/gitk 2017-01-18 10:27:59 -08:00
gitweb Merge branch 'js/gitweb-raw-blob-link-in-history' 2017-08-26 22:55:07 -07:00
mergetools mergetools/meld: improve compatibiilty with Meld on macOS X 2017-06-18 22:11:29 -07:00
perl Merge branch 'jc/perl-git-comment-typofix' into maint 2017-09-10 17:02:57 +09:00
po l10n: Update Catalan translation 2017-10-29 10:04:12 +08:00
ppc sha1: provide another level of indirection for the SHA-1 functions 2015-11-05 10:35:11 -08:00
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 t5600: modernize style 2018-01-03 13:33:03 -08:00
templates Merge branch 'ma/up-to-date' 2017-09-10 17:08:22 +09:00
vcs-svn Merge branch 'jn/vcs-svn-cleanup' into maint 2017-09-10 17:03:09 +09:00
xdiff Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09: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 rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
.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 build Git for the static analysis job 2017-11-02 11:05:30 +09: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 configure: use AC_LANG_PROGRAM consistently 2011-02-14 10:55:15 -08:00
advice.c Merge branch 'jk/warn-add-gitlink' 2017-06-24 14:28:41 -07:00
advice.h add: warn when adding an embedded repository 2017-06-15 09:10:44 -07:00
alias.c Merge branch 'js/alias-case-sensitivity' 2017-07-20 16:29:59 -07:00
alloc.c alloc: factor out commit index 2014-07-28 10:14:33 -07:00
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 prefix_length member from apply_state 2017-08-09 10:21:45 -07: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 Merge branch 'rs/archive-excluded-directory' 2017-09-25 15:24:07 +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: add detach function 2016-02-22 14:50:32 -08:00
argv-array.h argv-array: add detach function 2016-02-22 14:50:32 -08:00
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 base85.c: have SP around arithmetic operators 2013-10-16 10:27:26 -07:00
bisect.c bisect: fix memory leak when returning best element 2017-11-06 10:15:29 +09:00
bisect.h bisect: change calling-convention of find_bisection() 2017-11-06 10:15:29 +09:00
blame.c Merge branch 'js/blame-lib' 2017-07-31 13:05:15 -07: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 'nd/worktree-kill-parse-ref' into maint 2017-10-23 14:14:16 +09:00
branch.h branch: record creation of renamed branch in HEAD's log 2017-02-20 22:04:47 -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 cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
bundle.c leak_pending: use object_array_clear(), not free() 2017-09-24 10:05:57 +09:00
bundle.h bundle: convert to struct object_id 2017-05-02 10:46:41 +09:00
cache-tree.c cleanup: fix possible overflow errors in binary search 2017-10-10 08:57:24 +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 'jk/no-optional-locks' 2017-10-03 15:42:49 +09:00
check_bindir check_bindir: avoid "test <cond> -a/-o <cond>" 2014-06-09 14:47:06 -07:00
check-builtins.sh check-builtins: strip executable suffix $X when enumerating builtins 2015-02-05 12:03:27 -08:00
check-racy.c check-racy.c: use error_errno() 2016-05-09 12:29:08 -07:00
color.c Merge branch 'jk/ref-filter-colors-fix' 2017-10-18 10:19:08 +09: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 column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
combine-diff.c Merge branch 'bw/ls-files-sans-the-index' 2017-06-24 14:28:40 -07:00
command-list.txt relink: retire the command 2017-01-25 14:42:37 -08:00
commit-slab.h commit-slab.h: avoid -Wsign-compare warnings 2017-09-22 13:00:36 +09:00
commit.c reduce_heads: fix memory leaks 2017-11-08 11:34:00 +09:00
commit.h reduce_heads: fix memory leaks 2017-11-08 11:34:00 +09:00
common-main.c attr: use hashmap for attribute dictionary 2017-02-01 13:46:53 -08:00
config.c Merge branch 'sd/branch-copy' into maint 2017-12-06 09:09:01 -08:00
config.h Merge branch 'sd/branch-copy' 2017-10-03 15:42:48 +09:00
config.mak.in Merge branch 'jc/remove-export-from-config-mak-in' 2013-04-01 09:00:02 -07:00
config.mak.uname packed_ref_cache: keep the packed-refs file mmapped if possible 2017-09-25 18:02:45 +09:00
configure.ac Merge branch 'nd/fopen-errors' 2017-06-22 14:15:20 -07:00
connect.c connect: release strbuf on error return in git_connect() 2017-09-07 08:49:27 +09:00
connect.h connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
connected.c pack: move {,re}prepare_packed_git and approximate_object_count 2017-08-23 15:12:07 -07:00
connected.h check_connected: accept an env argument 2016-10-10 13:54:02 -07:00
convert.c Merge branch 'ma/ts-cleanups' into maint 2017-10-23 14:19:02 +09:00
convert.h Merge branch 'tb/apply-with-crlf' into maint 2017-09-10 17:02:55 +09:00
copy.c copy.c: use error_errno() 2016-05-09 12:29:08 -07:00
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 credential: let helpers tell us to quit 2014-12-04 10:11:12 -08:00
csum-file.c prefer "!=" when checking read_in_full() result 2017-09-27 15:45:24 +09:00
csum-file.h Merge branch 'jk/pack-bitmap' 2014-12-12 14:31:42 -08:00
ctype.c kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
daemon.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
date.c Merge branch 'ab/strbuf-addftime-tzname-boolify' 2017-07-06 18:14:47 -07:00
decorate.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
decorate.h
delta.h comments: fix misuses of "nor" 2014-03-31 15:29:27 -07:00
diff-delta.c Merge branch 'mk/diff-delta-avoid-large-offset' 2017-09-28 14:47:56 +09:00
diff-lib.c object_array: use object_array_clear(), not free() 2017-09-24 10:06:01 +09:00
diff-no-index.c diff: convert fill_filespec to struct object_id 2017-06-02 09:36:07 +09:00
diff.c Merge branch 'ao/diff-populate-filespec-lstat-errorpath-fix' into maint 2017-11-15 12:04:59 +09:00
diff.h diff: define block by number of alphanumeric chars 2017-08-16 11:44:00 -07:00
diffcore-break.c Merge branch 'tk/diffcore-delta-remove-unused' into maint 2016-11-29 13:28:03 -08:00
diffcore-delta.c Merge branch 'tk/diffcore-delta-remove-unused' 2016-11-17 13:45:22 -08:00
diffcore-order.c wildmatch: remove unused wildopts parameter 2017-06-23 18:27:07 -07:00
diffcore-pickaxe.c Merge branch 'js/regexec-buf' into maint 2017-03-28 13:52:24 -07:00
diffcore-rename.c progress: simplify "delayed" progress API 2017-08-19 14:01:34 -07:00
diffcore.h diff: convert fill_filespec to struct object_id 2017-06-02 09:36:07 +09:00
dir-iterator.c dir_iterator: new API for iterating over a directory tree 2016-06-20 11:38:21 -07:00
dir-iterator.h dir_iterator: new API for iterating over a directory tree 2016-06-20 11:38:21 -07:00
dir.c Merge branch 'js/submodule-in-excluded' into maint 2017-11-15 12:04:54 +09:00
dir.h Merge branch 'pc/dir-count-slashes' 2017-06-22 14:15:21 -07:00
editor.c editor.c: use error_errno() 2016-05-09 12:29:08 -07:00
entry.c Merge branch 'ls/filter-process-delayed' 2017-10-11 14:52:24 +09:00
environment.c Merge branch 'jk/no-optional-locks' 2017-10-03 15:42:49 +09:00
exec_cmd.c git_extract_argv0_path: do nothing without RUNTIME_PREFIX 2017-09-07 09:41:14 +09:00
exec_cmd.h common-main: stop munging argv[0] path 2016-11-29 11:01:48 -08:00
fast-import.c Merge branch 'jk/write-in-full-fix' into maint 2017-10-23 14:37:22 +09:00
fetch-pack.c oidmap: map with OID as key 2017-10-01 17:18:03 +09:00
fetch-pack.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
fmt-merge-msg.h fmt-merge-msg: use branch.$name.description 2011-10-07 10:11:47 -07:00
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
generate-cmdlist.sh generate-cmdlist: re-implement as shell script 2015-08-25 11:24:31 -07:00
gettext.c gettext: add is_utf8_locale() 2016-07-01 12:44:57 -07:00
gettext.h gettext: add is_utf8_locale() 2016-07-01 12:44:57 -07:00
git-add--interactive.perl Merge branch 'pw/unquote-path-in-git-pm' into maint 2017-07-31 13:51:05 -07:00
git-archimport.perl archimport: use safe_pipe_capture for user input 2017-09-12 11:08:15 +09:00
git-bisect.sh i18n: unmark die messages for translation 2016-06-17 15:46:10 -07:00
git-compat-util.h Merge branch 'rj/no-sign-compare' 2017-09-29 11:23:42 +09:00
git-cvsexportcommit.perl git-cvsexportcommit: use a lowercase "usage:" string 2013-02-24 13:31:07 -08:00
git-cvsimport.perl cvsimport: shell-quote variable used in backticks 2017-09-12 11:10:22 +09: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 difftool: always honor fatal error exit codes 2016-08-15 15:24:05 -07:00
git-filter-branch.sh Merge branch 'dg/filter-branch-filter-order-doc' 2017-10-19 14:45:45 +09:00
git-instaweb.sh git-instaweb: use @SHELL_PATH@ instead of /bin/sh 2015-03-10 15:10:35 -07:00
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 mergetool: honor mergetool.$tool.trustExitCode for built-in tools 2016-11-29 10:54:03 -08:00
git-mergetool.sh mergetool: fix running in subdir when rerere enabled 2017-01-10 13:22:51 -08:00
git-p4.py treewide: correct several "up-to-date" to "up to date" 2017-08-23 12:17:22 -07:00
git-parse-remote.sh i18n: git-parse-remote.sh: mark strings for translation 2016-04-19 12:07:49 -07:00
git-quiltimport.sh git-quiltimport: add commandline option --series <file> 2015-09-01 11:10:07 -07:00
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 'ad/rebase-i-serie-typofix' into maint 2017-11-21 14:05:32 +09:00
git-rebase--merge.sh Merge branch 'em/newer-freebsd-shells-are-fine-with-returns' into maint 2016-07-06 13:06:41 -07:00
git-rebase.sh Merge branch 'tz/redirect-fix' into maint 2017-12-06 09:09:04 -08:00
git-remote-testgit.sh transport-helper: do not request symbolic refs to remote helpers 2015-01-21 22:46:59 -08:00
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 send-email: don't use Mail::Address, even if available 2017-08-24 14:40:17 -07:00
git-sh-i18n.sh i18n: rebase-interactive: mark here-doc strings for translation 2016-06-17 15:45:48 -07:00
git-sh-setup.sh Merge branch 'va/i18n-even-more' 2016-12-27 00:11:45 -08:00
git-stash.sh Merge branch 'mf/no-dashed-subcommands' into maint 2017-09-10 17:02:56 +09:00
git-submodule.sh Merge branch 'sb/submodule-parallel-update' 2017-08-23 14:13:14 -07:00
git-svn.perl git svn: fix authentication with 'branch' 2017-03-07 21:29:03 +00:00
GIT-VERSION-GEN Start preparation for 2.15.1 2017-11-15 12:05:22 +09:00
git-web--browse.sh git-web--browse.sh: use the $( ... ) construct for command substitution 2014-04-23 15:17:02 -07:00
git.c Merge branch 'jk/no-optional-locks' 2017-10-03 15:42:49 +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 graph: add support for --line-prefix on all graph-aware output 2016-08-31 18:07:09 -07:00
grep.c Merge branch 'ab/pcre-v2' into maint 2017-11-21 14:05:30 +09:00
grep.h Merge branch 'ab/pcre-v2' into maint 2017-11-21 14:05:30 +09:00
hash.h sha1dc: build git plumbing code more explicitly 2017-08-16 14:43:59 -07:00
hashmap.c hashmap: add API to disable item counting when threaded 2017-09-07 09:42:02 +09:00
hashmap.h hashmap: add API to disable item counting when threaded 2017-09-07 09:42:02 +09:00
help.c Merge branch 'mb/reword-autocomplete-message' into maint 2017-07-10 13:59:04 -07:00
help.h help: add help_unknown_ref() 2013-05-08 15:31:54 -07:00
hex.c Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ 2017-03-26 22:08:21 -07: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 Merge branch 'tg/memfixes' 2017-10-07 16:27:54 +09:00
http-walker.c pack: move find_sha1_pack() 2017-08-23 15:12:07 -07:00
http.c curl_trace(): eliminate switch fallthrough 2017-09-22 12:49:55 +09: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 Merge branch 'rs/imap-send-next-arg-fix' into maint 2017-11-27 10:57:00 +09:00
INSTALL git-imap-send: use libcurl for implementation 2014-11-10 09:17:27 -08:00
iterator.h refs: introduce an iterator interface 2016-06-20 11:38:20 -07:00
khash.h convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
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 convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
levenshtein.h Typofixes outside documentation area 2010-02-03 21:28:17 -08:00
LGPL-2.1 provide a copy of the LGPLv2.1 2011-05-19 18:23:17 -07:00
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 use SWAP macro 2017-01-30 14:17:00 -08:00
line-range.h line-range: teach -L/RE/ to search relative to anchor point 2013-08-06 14:36:34 -07:00
list-objects.c Convert lookup_tree to struct object_id 2017-05-08 15:12:57 +09:00
list-objects.h list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07: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 merge-recursive --patience 2010-08-26 09:20:03 -07:00
lockfile.c tempfile: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
lockfile.h lockfile: update lifetime requirements in documentation 2017-09-06 17:19:54 +09:00
log-tree.c log: handle broken HEAD in decoration check 2017-10-21 21:29:37 +09:00
log-tree.h pretty: use fmt_output_email_subject() 2017-03-01 15:09:17 -08:00
mailinfo.c Merge branch 'rs/mailinfo-qp-decode-fix' into maint 2017-10-18 14:19:03 +09:00
mailinfo.h mailinfo: handle in-body header continuations 2016-09-21 10:23:11 -07:00
mailmap.c Convert remaining callers of get_sha1 to get_oid. 2017-07-17 13:54:51 -07:00
mailmap.h mailmap: simplify map_user() interface 2013-01-10 12:33:08 -08:00
Makefile Merge branch 'js/mingw-full-version-in-resources' into maint 2017-11-15 12:05:03 +09:00
match-trees.c match-trees: convert several leaf functions to use struct object_id 2016-04-25 14:26:29 -07:00
merge-blobs.c Merge branch 'jk/no-diff-emit-common' into maint 2016-03-10 11:13:42 -08:00
merge-blobs.h Which merge_file() function do you mean? 2012-12-09 23:05:27 -08:00
merge-recursive.c merge-recursive: handle addition of submodule on our side of history 2017-11-15 12:42:34 +09:00
merge-recursive.h merge-recursive: change current file dir string_lists to hashmap 2017-09-08 10:36:16 +09:00
merge.c tree: convert parse_tree_indirect to struct object_id 2017-05-08 15:12:58 +09:00
mergesort.c mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
mergesort.h mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
mru.c add generic most-recently-used list 2016-07-29 11:05:07 -07:00
mru.h add generic most-recently-used list 2016-07-29 11:05:07 -07:00
name-hash.c hashmap: add API to disable item counting when threaded 2017-09-07 09:42:02 +09:00
notes-cache.c notes: convert some accessor functions to struct object_id 2017-06-02 09:36:06 +09:00
notes-cache.h notes-cache: convert to struct object_id 2017-05-08 15:12:57 +09:00
notes-merge.c notes-merge: drop dead zero-write code 2017-09-26 12:55:59 +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 Merge branch 'bw/config-h' 2017-06-24 14:28:41 -07:00
notes-utils.h builtin/notes: convert to struct object_id 2017-06-02 09:36:06 +09:00
notes.c Merge branch 'mh/notes-cleanup' 2017-09-19 10:47:52 +09:00
notes.h notes: convert some accessor functions to struct object_id 2017-06-02 09:36:06 +09:00
object.c object_array: add and use object_array_pop() 2017-09-24 10:06:04 +09:00
object.h object_array: add and use object_array_pop() 2017-09-24 10:06:04 +09:00
oidmap.c oidmap: map with OID as key 2017-10-01 17:18:03 +09:00
oidmap.h oidmap: map with OID as key 2017-10-01 17:18:03 +09:00
oidset.c oidmap: map with OID as key 2017-10-01 17:18:03 +09:00
oidset.h oidmap: map with OID as key 2017-10-01 17:18:03 +09: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 Merge branch 'ma/leakplugs' 2017-09-29 11:23:43 +09:00
pack-bitmap.h pack-bitmap.c: make pack_bitmap_filename() static 2015-01-15 11:04:10 -08: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-objects: enforce --depth limit in reused deltas 2017-01-27 16:24:44 -08:00
pack-revindex.c use SWAP macro 2017-01-30 14:17:00 -08:00
pack-revindex.h pack-revindex: store entries directly in packed_git 2015-12-21 14:36:28 -08:00
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 compat: helper for detecting unsigned overflow 2011-02-10 13:47:56 -08:00
patch-ids.c patch-ids.c: drop hashmap_cmp_fn cast 2017-07-05 13:53:12 -07: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: add repo_worktree_path and strbuf_repo_worktree_path 2017-06-23 18:24:34 -07:00
pathspec.c pathspec doc: parse_pathspec does not maintain references to args 2017-09-21 14:05:00 +09:00
pathspec.h pathspec doc: parse_pathspec does not maintain references to args 2017-09-21 14:05:00 +09:00
pkt-line.c Merge branch 'jk/write-in-full-fix' into maint 2017-10-23 14:37:22 +09:00
pkt-line.h sub-process: refactor handshake to common function 2017-07-26 13:00:40 -07:00
preload-index.c preload-index: avoid lstat for skip-worktree items 2017-02-10 14:44:18 -08:00
pretty.c pretty.c: delimit "%(trailers)" arguments with "," 2017-10-02 09:22:52 +09: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 progress: simplify "delayed" progress API 2017-08-19 14:01:34 -07:00
progress.h progress: simplify "delayed" progress API 2017-08-19 14:01:34 -07:00
prompt.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
prompt.h prompt.c: remove git_getpass() nobody uses 2015-01-15 11:02:06 -08:00
quote.c consistently use "fallthrough" comments in switches 2017-09-22 12:49:57 +09:00
quote.h Merge branch 'nd/icase' into maint 2016-07-28 11:26:03 -07:00
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 'jk/fallthrough' 2017-09-28 14:47:53 +09:00
README.md README: create HTTP/HTTPS links from URLs in Markdown 2017-03-01 14:45:45 -08:00
ref-filter.c Merge branch 'tb/show-trailers-in-ref-filter' 2017-10-11 14:52:22 +09:00
ref-filter.h ref-filter: consult want_color() before emitting colors 2017-07-13 12:42:51 -07:00
reflog-walk.c refs: pass NULL to resolve_refdup() if hash is not needed 2017-10-01 17:27:14 +09:00
reflog-walk.h reflog-walk: apply --since/--until to reflog dates 2017-07-09 10:00:48 -07:00
refs.c Merge branch 'jk/write-in-full-fix' into maint 2017-10-23 14:37:22 +09:00
refs.h Merge branch 'sd/branch-copy' 2017-10-03 15:42:48 +09:00
RelNotes Prepare for 2.15.2 2017-12-06 09:10:35 -08:00
remote-curl.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
remote-testsvn.c Merge branch 'ab/free-and-null' 2017-06-24 14:28:41 -07:00
remote.c refs: pass NULL to resolve_ref_unsafe() if hash is not needed 2017-09-24 10:18:21 +09:00
remote.h remote: convert struct push_cas to struct object_id 2017-07-17 13:54:38 -07:00
replace_object.c register_replace_ref(): rewrite to take an object_id argument 2015-05-25 12:19:35 -07:00
repository.c repository: use FREE_AND_NULL 2017-10-02 13:15:59 +09:00
repository.h repo_read_index: don't discard the index 2017-07-18 13:32:25 -07:00
rerere.c Merge branch 'jk/write-in-full-fix' 2017-09-25 15:24:06 +09:00
rerere.h Merge branch 'jc/rerere-multi' 2016-04-25 15:17:15 -07:00
resolve-undo.c cache: convert struct cache_entry to use struct object_id 2016-09-07 12:59:42 -07:00
resolve-undo.h convert unmerge_cache to take struct pathspec 2013-07-15 10:56:08 -07:00
revision.c Merge branch 'rj/no-sign-compare' 2017-09-29 11:23:42 +09:00
revision.h Merge branch 'ma/leakplugs' 2017-09-29 11:23:43 +09:00
run-command.c run-command: use ALLOC_ARRAY 2017-10-03 08:42:57 +09:00
run-command.h run-command: expose is_executable function 2017-04-25 18:45:29 -07:00
send-pack.c consistently use "fallthrough" comments in switches 2017-09-22 12:49:57 +09:00
send-pack.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
sequencer.c Merge branch 'pw/sequencer-recover-from-unlockable-index' into maint 2017-12-06 09:09:03 -08:00
sequencer.h rebase -i: rearrange fixup/squash lines using the rebase--helper 2017-07-27 15:35:06 -07: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 'js/early-config' into maint 2017-11-15 12:05:01 +09: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 'jk/info-alternates-fix' into maint 2017-11-21 14:05:31 +09:00
sha1_name.c Merge branch 'jc/check-ref-format-oor' into maint 2017-11-15 12:04:57 +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 shortlog: group by committer information 2016-12-15 16:19:13 -08:00
show-index.c common-main: call git_setup_gettext() 2016-07-01 15:09:10 -07:00
sideband.c Merge branch 'lf/recv-sideband-cleanup' into maint 2016-08-08 14:21:41 -07:00
sideband.h sideband.c: make send_sideband() return void 2016-06-16 11:40:19 -07:00
sigchain.c sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
sigchain.h sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
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 'rs/strbuf-getwholeline-fix' into maint 2017-10-18 14:18:58 +09:00
strbuf.h Merge branch 'ma/ts-cleanups' into maint 2017-10-23 14:19:02 +09:00
streaming.c Merge branch 'jk/write-in-full-fix' 2017-09-25 15:24:06 +09:00
streaming.h streaming: make stream_blob_to_fd take struct object_id 2016-09-07 12:59:42 -07:00
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 Merge branch 'bw/grep-recurse-submodules' 2017-08-22 10:29:01 -07:00
submodule.c Merge branch 'sb/submodule-diff-header-fix' 2017-10-03 15:42:49 +09:00
submodule.h Merge branch 'hn/typofix' 2017-09-28 14:47:52 +09:00
symlinks.c symlinks: remove PATH_MAX limitation 2014-07-07 11:22:42 -07:00
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: auto-allocate tempfiles on heap 2017-09-06 17:19:54 +09:00
thread-utils.c thread-utils.c: detect CPU count on older BSD-like systems 2015-03-10 15:13:28 -07:00
thread-utils.h pack-objects: set number of threads before checking and warning 2014-10-13 12:53:46 -07:00
tmp-objdir.c tmp-objdir: quote paths we add to alternates 2016-12-12 15:10:46 -08:00
tmp-objdir.h tmp-objdir: introduce API for temporary object directories 2016-10-10 13:54:02 -07:00
trace.c Replace Free Software Foundation address in license notices 2017-11-09 13:21:21 +09:00
trace.h pkt-line: support tracing verbatim pack contents 2015-06-16 13:24:22 -07: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 'jk/write-in-full-fix' into maint 2017-10-23 14:37:22 +09:00
transport.c refs: pass NULL to resolve_refdup() if hash is not needed 2017-10-01 17:27:14 +09:00
transport.h for_each_alternate_ref: pass name/oid instead of ref struct 2017-02-08 15:39:55 -08:00
tree-diff.c tree-walk: convert fill_tree_descriptor() to object_id 2017-08-14 12:38:54 -07:00
tree-walk.c Merge branch 'rj/no-sign-compare' 2017-09-29 11:23:42 +09: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 unimplemented.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
unix-socket.c Merge branch 'rs/strbuf-getcwd' 2014-09-02 13:28:44 -07:00
unix-socket.h credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
unpack-trees.c Merge branch 'ls/convert-filter-progress' 2017-09-10 17:08:22 +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 'ma/leakplugs' 2017-09-29 11:23:43 +09:00
url.c introduce hex2chr() for converting two hexadecimal digits to a character 2016-09-07 10:42:46 -07:00
url.h url: decode buffers that are not NUL-terminated 2011-07-20 11:38:34 -07:00
urlmatch.c urlmatch: use hex2chr() in append_normalized_escapes() 2017-07-09 09:43:01 -07:00
urlmatch.h urlmatch: include host in urlmatch ranking 2017-02-01 13:22:46 -08:00
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 diff: clarify textconv interface 2016-02-22 10:40:35 -08:00
utf8.c cleanup: fix possible overflow errors in binary search 2017-10-10 08:57:24 +09:00
utf8.h typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
varint.c cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
varint.h cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
version.c include agent identifier in capability string 2012-08-03 13:03:34 -07:00
version.h include agent identifier in capability string 2012-08-03 13:03:34 -07:00
versioncmp.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
walker.c object: convert parse_object* to take struct object_id 2017-05-08 15:12:58 +09:00
walker.h walker: let walker_say take arbitrary formats 2016-07-08 10:11:23 -07:00
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 'nd/worktree-kill-parse-ref' into maint 2017-10-23 14:14:16 +09:00
worktree.h revision.c: --all adds HEAD from all worktrees 2017-08-24 14:56:43 -07:00
wrap-for-bin.sh wrap-for-bin.sh: regenerate bin-wrappers when switching branches 2016-05-10 13:23:34 -07:00
wrapper.c wrapper.c: consistently quote filenames in error messages 2017-11-06 11:53:14 +09:00
write_or_die.c run-command: move check_pipe() from write_or_die to run_command 2016-10-17 11:36:49 -07:00
ws.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
wt-status.c Merge branch 'bw/rebase-i-ignored-submodule-fix' into maint 2017-11-21 14:05:29 +09:00
wt-status.h Merge branch 'ks/status-initial-commit' 2017-06-30 13:45:22 -07: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 zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw} 2015-03-05 15:46:03 -08:00

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