Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
SZEDER Gábor ca4e3ca029 diffcore: fix iteration order of identical files during rename detection
If the two paths 'dir/A/file' and 'dir/B/file' have identical content
and the parent directory is renamed, e.g. 'git mv dir other-dir', then
diffcore reports the following exact renames:

    renamed:    dir/B/file -> other-dir/A/file
    renamed:    dir/A/file -> other-dir/B/file

While technically not wrong, this is confusing not only for the user,
but also for git commands that make decisions based on rename
information, e.g. 'git log --follow other-dir/A/file' follows
'dir/B/file' past the rename.

This behavior is a side effect of commit v2.0.0-rc4~8^2~14
(diffcore-rename.c: simplify finding exact renames, 2013-11-14): the
hashmap storing sources returns entries from the same bucket, i.e.
sources matching the current destination, in LIFO order.  Thus the
iteration first examines 'other-dir/A/file' and 'dir/B/file' and, upon
finding identical content and basename, reports an exact rename.

Other hashmap users are apparently happy with the current iteration
order over the entries of a bucket.  Changing the iteration order
would risk upsetting other hashmap users and would increase the memory
footprint of each bucket by a pointer to the tail element.

Fill the hashmap with source entries in reverse order to restore the
original exact rename detection behavior.

Reported-by: Bill Okara <billokara@gmail.com>
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-30 13:46:04 -07:00
block-sha1
builtin list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
compat Merge branch 'dm/compat-s-ifmt-for-zos' 2014-12-22 12:27:16 -08:00
contrib Merge branch 'sg/completion-commit-cleanup' into maint 2015-08-03 10:41:33 -07:00
Documentation Git 2.4.11 2016-03-17 11:23:05 -07:00
ewah Merge branch 'es/osx-header-pollutes-mask-macro' into maint 2015-07-15 11:41:24 -07:00
git-gui git-gui 0.20.0 2015-04-18 18:35:48 -07:00
gitk-git Merge branch 'master' of git://ozlabs.org/~paulus/gitk 2015-03-24 16:10:37 -07:00
gitweb gitweb: hack around CGI's list-context param() handling 2014-11-18 11:23:10 -08:00
mergetools mergetools: stop setting $status in merge_cmd() 2014-11-21 11:27:53 -08:00
perl Merge branch 'ew/svn-maint-fixes' into maint 2015-03-06 14:57:55 -08:00
po l10n: de.po: translation fix for fall-back to 3way merge 2015-06-12 20:40:04 +02:00
ppc
t diffcore: fix iteration order of identical files during rename detection 2016-03-30 13:46:04 -07:00
templates pre-push.sample: remove unnecessary and misleading IFS=' ' 2014-12-22 10:27:42 -08:00
vcs-svn
xdiff git-merge-file: do not add LF at EOF while applying unrelated change 2014-06-30 14:07:58 -07:00
.gitattributes
.gitignore Merge branch 'cc/interpret-trailers' 2014-10-20 12:25:32 -07:00
.mailmap Update mailmap to spell out "Alexander Kuleshov" 2015-03-27 12:58:18 -07:00
abspath.c abspath: convert absolute_path() to strbuf 2014-08-26 11:06:06 -07:00
aclocal.m4
advice.c standardize usage info string format 2015-01-14 09:32:04 -08:00
advice.h
alias.c alias.c: replace git_config() with git_config_get_string() 2014-08-07 13:33:29 -07:00
alloc.c alloc: factor out commit index 2014-07-28 10:14:33 -07:00
archive-tar.c Revert "archive: honor tar.umask even for pax headers" 2014-10-20 12:04:46 -07:00
archive-zip.c Merge branch 'rs/zip-text' 2015-03-17 16:01:27 -07:00
archive.c standardize usage info string format 2015-01-14 09:32:04 -08:00
archive.h
argv-array.c argv-array: drop "detach" code 2014-05-15 09:49:12 -07:00
argv-array.h argv-array: drop "detach" code 2014-05-15 09:49:12 -07:00
attr.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
attr.h
base85.c
bisect.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
bisect.h Move print_commit_list to libgit.a 2012-10-29 03:08:30 -04:00
blob.c add object_as_type helper for casting objects 2014-07-28 10:14:33 -07:00
blob.h
branch.c ref_transaction_update(): remove "have_old" parameter 2015-02-17 11:22:50 -08:00
branch.h
builtin.h trailer: add interpret-trailers command 2014-10-13 13:55:27 -07:00
bulk-checkin.c Merge branch 'rs/deflate-init-cleanup' into maint 2015-03-23 11:23:38 -07:00
bulk-checkin.h cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
bundle.c bundle.c: fix memory leak 2015-03-10 20:53:52 -07:00
bundle.h
cache-tree.c Merge branch 'jk/cache-tree-protect-from-broken-libgit2' 2014-11-06 10:51:35 -08:00
cache-tree.h Merge branch 'dt/cache-tree-repair' 2014-09-11 10:33:32 -07:00
cache.h Merge branch 'jk/index-pack-reduce-recheck' into maint 2015-07-27 12:21:38 -07: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
color.c parse_color: fix return value for numeric color values 0-8 2015-01-20 15:56:03 -08:00
color.h parse_color: recognize "no$foo" to clear the $foo attribute 2014-11-20 12:42:55 -08:00
column.c use child_process_init() to initialize struct child_process variables 2014-10-28 14:56:17 -07:00
column.h column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
combine-diff.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
command-list.txt Documentation: add documentation for 'git interpret-trailers' 2014-10-13 13:59:49 -07:00
commit-slab.h use REALLOC_ARRAY for changing the allocation size of arrays 2014-09-18 09:13:42 -07:00
commit.c Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
commit.h Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
config.c config.c: fix writing config files on Windows network shares 2015-06-30 11:01:59 -07:00
config.mak.in
config.mak.uname configure: support HAVE_BSD_SYSCTL option 2015-03-10 15:13:25 -07:00
configure.ac configure: support HAVE_BSD_SYSCTL option 2015-03-10 15:13:25 -07:00
connect.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
connect.h
connected.c run-command: introduce CHILD_PROCESS_INIT 2014-08-20 09:53:37 -07:00
connected.h
convert.c Merge branch 'sp/stream-clean-filter' 2014-10-08 13:05:32 -07:00
convert.h convert: stream from fd to required clean filter to reduce used address space 2014-08-28 10:25:15 -07:00
copy.c copy_fd(): do not close the input file descriptor 2014-08-28 10:25:14 -07:00
COPYING
credential-cache--daemon.c credential-cache: close stderr in daemon process 2014-09-16 11:11:58 -07:00
credential-cache.c run-command: introduce CHILD_PROCESS_INIT 2014-08-20 09:53:37 -07:00
credential-store.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
credential.c Merge branch 'jk/credential-quit' 2014-12-22 12:27:20 -08:00
credential.h credential: let helpers tell us to quit 2014-12-04 10:11:12 -08:00
csum-file.c sha1fd_check: die when we cannot open the file 2015-03-19 13:35:15 -07: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 daemon: unbreak NO_IPV6 build regression 2015-05-05 11:03:24 -07:00
date.c Merge branch 'jc/epochtime-wo-tz' into maint-2.3 2015-05-11 14:33:58 -07:00
decorate.c hashmap: factor out getting a hash code from a SHA1 2014-07-07 13:56:24 -07:00
decorate.h
delta.h
diff-delta.c
diff-lib.c run_diff_files(): clarify computation of sha1 validity 2015-02-04 14:27:01 -08:00
diff-no-index.c diff-no-index: align D/F handling with that of normal Git 2015-03-26 14:08:43 -07:00
diff.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
diff.h tree-diff: catch integer overflow in combine_diff_path allocation 2016-03-16 10:41:02 -07:00
diffcore-break.c diff -B -M: fix output for "copy and then rewrite" case 2014-10-23 16:17:09 -07:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c react to errors in xdi_diff 2015-09-28 14:57:10 -07:00
diffcore-rename.c diffcore: fix iteration order of identical files during rename detection 2016-03-30 13:46:04 -07:00
diffcore.h diff --stat: mark any file larger than core.bigfilethreshold binary 2014-08-18 10:16:45 -07:00
dir.c Merge branch 'rs/janitorial' into maint 2015-06-16 14:33:47 -07:00
dir.h Merge branch 'jc/report-path-error-to-dir' into maint 2015-03-31 14:53:08 -07:00
editor.c run-command: introduce CHILD_PROCESS_INIT 2014-08-20 09:53:37 -07:00
entry.c read-cache: mark updated entries for split index 2014-06-13 11:49:40 -07:00
environment.c refs: introduce a "ref paranoia" flag 2015-03-20 12:40:49 -07:00
exec_cmd.c Merge branch 'jk/git-no-more-argv0-path-munging' into maint 2015-05-26 13:49:18 -07:00
exec_cmd.h system_path(): always return free'able memory to the caller 2014-11-30 16:39:47 -08:00
fast-import.c Merge branch 'rs/deflate-init-cleanup' into maint 2015-03-23 11:23:38 -07:00
fetch-pack.c Merge branch 'me/fetch-into-shallow-safety' into maint 2015-07-15 11:41:20 -07:00
fetch-pack.h
fmt-merge-msg.h
fsck.c Merge branch 'jc/fsck-retire-require-eoh' into maint 2015-07-27 12:21:46 -07:00
fsck.h fsck_object(): allow passing object data separately from the object itself 2014-09-10 13:54:21 -07:00
generate-cmdlist.sh
gettext.c gettext.c: move get_preferred_languages() from http.c 2015-02-26 14:09:20 -08:00
gettext.h Merge branch 'ye/http-accept-language' 2015-03-06 15:02:25 -08:00
git-add--interactive.perl Merge branch 'ak/add-i-empty-candidates' into maint 2015-02-24 22:10:42 -08:00
git-am.sh Merge branch 'pt/am-abort-fix' into maint 2015-08-03 10:41:32 -07:00
git-archimport.perl
git-bisect.sh standardize usage info string format 2015-01-14 09:32:04 -08:00
git-compat-util.h add helpers for detecting size_t overflow 2016-03-16 10:41:02 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh difftool--helper: add explicit exit statement 2014-11-21 11:27:53 -08:00
git-difftool.perl Merge branch 'da/difftool' 2014-10-29 10:09:35 -07:00
git-filter-branch.sh filter-branch: avoid passing commit message through sed 2015-04-29 10:01:04 -07: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
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh mergetool--lib: remove use of $status global 2014-11-21 11:27:53 -08:00
git-mergetool.sh mergetool: simplify conditionals 2014-11-21 11:27:53 -08:00
git-p4.py Merge branch 'ld/p4-submit-hint' 2015-02-11 13:39:44 -08:00
git-parse-remote.sh
git-pull.sh Merge branch 'pt/pull-tags-error-diag' into maint 2015-06-25 11:02:12 -07:00
git-quiltimport.sh
git-rebase--am.sh rebase: return non-zero error code if format-patch fails 2015-07-08 15:36:42 -07:00
git-rebase--interactive.sh Merge branch 'js/rebase-i-clean-up-upon-continue-to-skip' into maint 2015-08-03 10:41:34 -07:00
git-rebase--merge.sh Merge branch 'bc/fix-rebase-merge-skip' into maint 2014-07-16 11:16:16 -07:00
git-rebase.sh Merge branch 'jk/rebase-quiet-noop' into maint 2015-05-26 13:49:23 -07:00
git-relink.perl
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 Merge branch 'lt/request-pull' 2014-05-19 10:35:36 -07:00
git-send-email.perl Merge branch 'km/send-email-getopt-long-workarounds' 2015-03-03 14:37:03 -08:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'dw/shell-basename-dashdash-before-stripping-leading-dash-from-login' 2014-12-22 12:26:48 -08:00
git-stash.sh Merge branch 'jk/stash-require-clean-index' into maint 2015-06-25 23:03:27 -07:00
git-submodule.sh submodule: allow only certain protocols for submodule fetches 2015-09-23 11:35:48 -07:00
git-svn.perl git-svn: lazy load some modules 2015-02-26 20:19:21 +00:00
GIT-VERSION-GEN Git 2.4.11 2016-03-17 11:23:05 -07: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 'ak/git-done-help-cleanup' into maint 2015-03-23 11:23:35 -07:00
git.rc
git.spec.in
gpg-interface.c Merge branch 'jc/push-cert' 2014-10-08 13:05:25 -07:00
gpg-interface.h gpg-interface: move parse_signature() to where it should be 2014-09-15 13:23:20 -07:00
graph.c Merge branch 'rs/graph-simplify' 2014-09-29 12:36:11 -07:00
graph.h
grep.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
grep.h grep: add color.grep.matchcontext and color.grep.matchselected 2014-10-28 10:33:50 -07:00
hashmap.c hashmap: add string interning API 2014-07-07 13:56:38 -07:00
hashmap.h hashmap: add string interning API 2014-07-07 13:56:38 -07:00
help.c Merge branch 'sb/help-unknown-command-sort-fix' 2014-09-26 14:39:49 -07:00
help.h
hex.c Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long' into maint 2015-03-05 13:12:55 -08:00
http-backend.c http-backend: spool ref negotiation requests to buffer 2015-05-25 20:43:18 -07:00
http-fetch.c
http-push.c http-push: stop using name_path 2016-03-16 10:41:02 -07:00
http-walker.c http-walker: simplify process_alternates_response() using strbuf 2014-09-02 10:57:14 -07:00
http.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
http.h http.c: make finish_active_slot() and handle_curl_result() static 2015-01-15 11:00:52 -08:00
ident.c Merge branch 'jk/commit-author-parsing' 2014-09-19 11:38:33 -07:00
imap-send.c imap-send: use cURL automatically when NO_OPENSSL defined 2015-03-10 15:19:05 -07:00
INSTALL git-imap-send: use libcurl for implementation 2014-11-10 09:17:27 -08:00
khash.h use REALLOC_ARRAY for changing the allocation size of arrays 2014-09-18 09:13:42 -07:00
kwset.c kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
kwset.h kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
line-log.h line-log.c: make line_log_data_init() static 2015-01-15 11:05:47 -08:00
line-range.c
line-range.h
list-objects.c list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
list-objects.h list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
ll-merge.c xdiff: reject files larger than ~1GB 2015-09-28 14:57:23 -07:00
ll-merge.h
lockfile.c lockfile.c: store absolute path 2014-11-03 11:00:28 -08:00
lockfile.h lockfile: remove unable_to_lock_error 2014-10-15 10:47:27 -07:00
log-tree.c log: do not shorten decoration names too early 2015-05-13 12:40:57 -07:00
log-tree.h Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
mailmap.c mailmap: use higher level string list functions 2014-12-04 15:10:21 -08:00
mailmap.h
Makefile Merge branch 'jk/make-fix-dependencies' into maint 2015-06-25 11:02:16 -07:00
match-trees.c use xstrfmt to replace xmalloc + sprintf 2014-06-19 15:20:54 -07:00
merge-blobs.c merge-blobs.c: fix a memleak 2015-03-23 11:12:58 -07:00
merge-blobs.h
merge-recursive.c use file_exists() to check if a file exists in the worktree 2015-05-20 13:49:10 -07:00
merge-recursive.h
merge.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
mergesort.c
mergesort.h
name-hash.c hashmap: add simplified hashmap_get_from_hash() API 2014-07-07 13:56:35 -07:00
notes-cache.c Merge branch 'jk/commit-buffer-length' 2014-07-02 12:53:02 -07:00
notes-cache.h
notes-merge.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
notes-merge.h
notes-utils.c use strbuf_complete_line() for adding a newline if needed 2014-12-12 11:23:45 -08:00
notes-utils.h commit_tree: take a pointer/len pair rather than a const strbuf 2014-06-12 10:29:41 -07:00
notes.c Sync with 2.2.3 2015-09-04 10:29:28 -07:00
notes.h
object.c Merge branch 'jk/type-from-string-gently' into maint 2015-05-13 14:05:54 -07:00
object.h drop add_object_array_with_mode 2014-10-19 15:28:30 -07:00
pack-bitmap-write.c list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
pack-bitmap.c list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
pack-bitmap.h pack-bitmap.c: make pack_bitmap_filename() static 2015-01-15 11:04:10 -08:00
pack-check.c
pack-objects.c use REALLOC_ARRAY for changing the allocation size of arrays 2014-09-18 09:13:42 -07:00
pack-objects.h pack-objects: implement bitmap writing 2013-12-30 12:19:22 -08:00
pack-revindex.c pack-revindex.c: rearrange xcalloc arguments 2014-05-27 14:02:45 -07:00
pack-revindex.h
pack-write.c pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt() 2014-09-02 10:37:24 -07:00
pack.h
pager.c Merge branch 'jc/unexport-git-pager-in-use-in-pager' into maint 2015-07-27 12:21:44 -07:00
parse-options-cb.c
parse-options.c Merge branch 'jc/parseopt-verify-short-name' 2014-09-19 11:38:38 -07:00
parse-options.h Merge branch 'iu/fix-parse-options-h-comment' into maint 2015-04-21 12:12:20 -07:00
patch-delta.c
patch-ids.c
patch-ids.h
path.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
pathspec.c Merge branch 'maint' 2014-07-21 12:35:39 -07:00
pathspec.h
pkt-line.c pkt-line: allow writing of LARGE_PACKET_MAX buffers 2014-12-10 13:09:21 -08:00
pkt-line.h
preload-index.c cache.h: rename cache_def_free to cache_def_clear 2014-07-13 10:12:37 -07:00
pretty.c Merge branch 'rs/simple-cleanups' into maint 2015-03-06 14:57:57 -08:00
prio-queue.c prio-queue: make output stable with respect to insertion 2014-07-15 11:02:54 -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 performance measurement by using getnanotime() 2014-07-13 21:25:21 -07:00
progress.h
prompt.c prompt.c: remove git_getpass() nobody uses 2015-01-15 11:02:06 -08:00
prompt.h prompt.c: remove git_getpass() nobody uses 2015-01-15 11:02:06 -08:00
quote.c ls-tree: remove path filtering logic in show_tree 2014-12-01 11:32:34 -08:00
quote.h ls-tree: remove path filtering logic in show_tree 2014-12-01 11:32:34 -08:00
reachable.c list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
reachable.h pack-objects: match prune logic for discarding objects 2014-10-16 10:10:43 -07:00
read-cache.c Merge branch 'jk/diagnose-config-mmap-failure' into maint 2015-06-25 11:02:11 -07:00
README doc: add 'everyday' to 'git help' 2014-10-10 16:02:26 -07:00
reflog-walk.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
reflog-walk.h stylefix: asterisks stick to the variable, not the type 2014-09-02 11:33:32 -07:00
refs.c Merge branch 'mh/reporting-broken-refs-from-for-each-ref' into maint 2015-08-03 10:41:31 -07:00
refs.h refs.h: remove duplication in function docstrings 2015-02-17 11:25:18 -08:00
RelNotes Git 2.4.11 2016-03-17 11:23:05 -07:00
remote-curl.c Merge branch 'rs/deflate-init-cleanup' into maint 2015-03-23 11:23:38 -07:00
remote-testsvn.c run-command: introduce CHILD_PROCESS_INIT 2014-08-20 09:53:37 -07:00
remote.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
remote.h Merge branch 'jc/unused-symbols' 2015-02-11 13:44:07 -08:00
replace_object.c
rerere.c Merge branch 'jk/rerere-forget-check-enabled' into maint 2015-06-05 12:00:25 -07:00
rerere.h rerere.h: mark string for translation 2014-09-15 11:29:46 -07:00
resolve-undo.c resolve-undo: be specific what part of the index has changed 2014-06-13 11:49:38 -07:00
resolve-undo.h
revision.c list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
revision.h list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
run-command.c Merge branch 'jk/run-command-capture' 2015-03-25 12:54:27 -07:00
run-command.h run-command: introduce capture_command helper 2015-03-22 21:38:31 -07:00
send-pack.c Merge branch 'jc/push-cert' into maint 2015-04-27 12:23:50 -07:00
send-pack.h send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
sequencer.c Merge branch 'mg/sequencer-commit-messages-always-verbatim' 2015-03-17 16:01:32 -07:00
sequencer.h Merge branch 'jc/conflict-hint' into cc/interpret-trailers-more 2014-11-10 09:56:39 -08:00
server-info.c update-server-info: create info/* with mode 0666 2015-01-06 13:46:52 -08:00
setup.c setup_git_directory: delay core.bare/core.worktree errors 2015-05-29 09:27:27 -07:00
sh-i18n--envsubst.c use REALLOC_ARRAY for changing the allocation size of arrays 2014-09-18 09:13:42 -07:00
sha1_file.c Sync with 2.3.9 2015-09-04 10:34:19 -07:00
sha1_name.c use file_exists() to check if a file exists in the worktree 2015-05-20 13:49:10 -07:00
sha1-array.c
sha1-array.h
sha1-lookup.c sha1-lookup: handle duplicates in sha1_pos() 2014-10-01 13:32:19 -07:00
sha1-lookup.h
shallow.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
shell.c use xstrfmt to replace xmalloc + strcpy/strcat 2014-06-19 15:20:54 -07:00
shortlog.h
show-index.c
sideband.c sideband.c: do not use ANSI control sequence on non-terminal 2014-06-02 11:02:27 -07:00
sideband.h pkt-line: move LARGE_PACKET_MAX definition from sideband 2013-02-20 13:42:22 -08:00
sigchain.c cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
sigchain.h
split-index.c update-index: new options to enable/disable split index mode 2014-06-13 11:49:41 -07:00
split-index.h split-index: the reading part 2014-06-13 11:49:40 -07:00
strbuf.c strbuf: strbuf_read_file() should return ssize_t 2015-07-03 18:25:02 -07:00
strbuf.h strbuf: strbuf_read_file() should return ssize_t 2015-07-03 18:25:02 -07:00
streaming.c Merge branch 'sb/plug-streaming-leak' 2015-04-14 11:49:09 -07:00
streaming.h
string-list.c Merge branch 'sb/string-list' 2014-12-22 12:27:30 -08:00
string-list.h Merge branch 'sb/string-list' 2014-12-22 12:27:30 -08:00
submodule.c use file_exists() to check if a file exists in the worktree 2015-05-20 13:49:10 -07:00
submodule.h
symlinks.c symlinks: remove PATH_MAX limitation 2014-07-07 11:22:42 -07:00
tag.c gpg-interface: move parse_signature() to where it should be 2014-09-15 13:23:20 -07:00
tag.h gpg-interface: move parse_signature() to where it should be 2014-09-15 13:23:20 -07:00
tar.h
test-chmtime.c
test-config.c add tests for git_config_get_string_const() 2014-08-07 11:41:20 -07:00
test-ctype.c
test-date.c date: use strbufs in date-formatting functions 2014-08-27 10:32:56 -07:00
test-delta.c
test-dump-cache-tree.c Merge branch 'dt/cache-tree-repair' 2014-09-11 10:33:32 -07:00
test-dump-split-index.c t1700: new tests for split-index mode 2014-06-13 11:49:42 -07:00
test-genrandom.c
test-hashmap.c Merge branch 'js/test-hashmap-squelch-gcc' 2014-12-22 12:27:46 -08:00
test-index-version.c
test-line-buffer.c
test-match-trees.c
test-mergesort.c
test-mktemp.c
test-parse-options.c
test-path-utils.c
test-prio-queue.c
test-read-cache.c
test-regex.c cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
test-revision-walking.c
test-run-command.c run-command: introduce CHILD_PROCESS_INIT 2014-08-20 09:53:37 -07:00
test-scrap-cache-tree.c lockfile.h: extract new header file for the functions in lockfile.c 2014-10-01 13:56:14 -07:00
test-sha1-array.c sha1-array: add test-sha1-array and basic tests 2014-10-01 13:32:10 -07:00
test-sha1.c
test-sha1.sh
test-sigchain.c cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
test-string-list.c
test-subprocess.c run-command: introduce CHILD_PROCESS_INIT 2014-08-20 09:53:37 -07:00
test-svn-fe.c
test-urlmatch-normalization.c builtin/config.c: compilation fix 2013-08-09 09:20:38 -07:00
test-wildmatch.c
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
trace.c configure.ac: check for clock_gettime and CLOCK_MONOTONIC 2015-01-09 15:33:39 -08:00
trace.h git: add performance tracing for git's main() function to debug scripts 2014-07-13 21:25:21 -07:00
trailer.c trailer: use capture_command 2015-03-22 21:39:18 -07:00
trailer.h trailer: put all the processing together and print 2014-10-13 13:55:27 -07:00
transport-helper.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
transport.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
transport.h Sync with 2.3.10 2015-09-28 15:28:31 -07:00
tree-diff.c tree-diff: catch integer overflow in combine_diff_path allocation 2016-03-16 10:41:02 -07:00
tree-walk.c cleanup duplicate name_compare() functions 2014-06-20 10:12:14 -07:00
tree-walk.h
tree.c Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
tree.h Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
unicode_width.h Update of unicode_width.h to Unicode Version 7.0 2014-06-18 10:53:45 -07:00
unimplemented.sh
unix-socket.c Merge branch 'rs/strbuf-getcwd' 2014-09-02 13:28:44 -07:00
unix-socket.h
unpack-trees.c Sync with 2.2.3 2015-09-04 10:29:28 -07:00
unpack-trees.h
update_unicode.sh update_unicode.sh: delete the command group 2014-12-22 10:03:37 -08:00
upload-pack.c Merge branch 'jk/smart-http-hide-refs' into maint 2015-03-27 13:00:21 -07:00
url.c use strbuf_addch for adding single characters 2014-07-10 14:06:46 -07:00
url.h
urlmatch.c urlmatch.c: make match_urls() static 2015-01-15 11:05:48 -08:00
urlmatch.h urlmatch.c: make match_urls() static 2015-01-15 11:05:48 -08:00
usage.c
userdiff.c do not include the same header twice 2015-02-13 13:16:12 -08:00
userdiff.h
utf8.c utf8-bom: introduce skip_utf8_bom() helper 2015-04-16 11:35:06 -07:00
utf8.h Merge branch 'es/utf8-stupid-compiler-workaround' into maint 2015-07-15 11:41:23 -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
version.h
versioncmp.c versionsort: support reorder prerelease suffixes 2015-02-27 13:38:22 -08:00
walker.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
walker.h
wildmatch.c
wildmatch.h
wrap-for-bin.sh
wrapper.c Merge branch 'jc/max-io-size-and-ssize-max' 2015-02-25 15:40:13 -08:00
write_or_die.c refs: write packed_refs file using stdio 2014-09-10 10:58:32 -07:00
ws.c
wt-status.c Merge branch 'sg/commit-cleanup-scissors' into maint 2015-08-03 10:41:30 -07:00
wt-status.h wt-status: refactor detached HEAD analysis 2015-03-06 11:52:35 -08:00
xdiff-interface.c xdiff: reject files larger than ~1GB 2015-09-28 14:57:23 -07:00
xdiff-interface.h xdiff: reject files larger than ~1GB 2015-09-28 14:57:23 -07:00
zlib.c zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw} 2015-03-05 15:46:03 -08:00

////////////////////////////////////////////////////////////////

	Git - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, 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

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.

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).

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

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 http://news.gmane.org/gmane.comp.version-control.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.