1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-01 23:07:55 +01:00
Find a file
Nguyễn Thái Ngọc Duy c041d54a74 cache-tree.c: fix i-t-a entry skipping directory updates sometimes
Commit 3cf773e (cache-tree: fix writing cache-tree when CE_REMOVE is
present - 2012-12-16) skips i-t-a entries when building trees objects
from the index. Unfortunately it may skip too much.

The code in question checks if an entry is an i-t-a one, then no tree
entry will be written. But it does not take into account that
directories can also be written with the same code. Suppose we have
this in the index.

    a-file
    subdir/file1
    subdir/file2
    subdir/file3
    the-last-file

We write an entry for a-file as normal and move on to subdir/file1,
where we realize the entry name for this level is simply just
"subdir", write down an entry for "subdir" then jump three items ahead
to the-last-file.

That is what happens normally when the first file in subdir is not an
i-t-a entry. If subdir/file1 is an i-t-a, because of the broken
condition in this code, we still think "subdir" is an i-t-a file and
not writing "subdir" down and jump to the-last-file. The result tree
now only has two items: a-file and the-last-file. subdir should be
there too (even though it only records two sub-entries, file2 and
file3).

If the i-t-a entry is subdir/file2 or subdir/file3, this is not a
problem because we jump over them anyway. Which may explain why the
bug is hidden for nearly four years.

Fix it by making sure we only skip i-t-a entries when the entry in
question is actual an index entry, not a directory.

Reported-by: Yuri Kanivetsky <yuri.kanivetsky@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-07-18 13:45:33 -07:00
block-sha1
builtin Merge branch 'ar/diff-args-osx-precompose' into maint 2016-06-06 14:27:35 -07:00
ci travis-ci: build documentation 2016-05-10 11:19:07 -07:00
compat Merge branch 'kb/msys2-tty' into maint 2016-06-06 14:27:38 -07:00
contrib git-multimail: update to release 1.3.1 2016-05-13 12:54:06 -07:00
Documentation Git 2.9 2016-06-13 10:42:13 -07:00
ewah ewah: convert to REALLOC_ARRAY, etc 2016-02-22 14:51:09 -08:00
git-gui git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
gitk-git Merge branch 'master' of git://ozlabs.org/~paulus/gitk 2016-03-20 18:05:10 -07:00
gitweb Merge branch 'sk/gitweb-highlight-encoding' into HEAD 2016-05-18 14:40:10 -07:00
mergetools mergetools: add support for ExamDiff 2016-04-04 09:15:14 -07:00
perl Merge branch 'lp/typofixes' 2016-05-17 14:38:20 -07:00
po l10n: ko.po: Update Korean translation 2016-06-12 01:25:58 +09:00
ppc
refs Merge branch 'dt/pre-refs-backend' 2016-04-25 15:17:15 -07:00
t cache-tree.c: fix i-t-a entry skipping directory updates sometimes 2016-07-18 13:45:33 -07:00
templates Merge branch 'ma/update-hooks-sample-typofix' into maint 2016-03-10 11:13:50 -08:00
vcs-svn vcs-svn: use error_errno() 2016-05-09 12:29:08 -07:00
xdiff Merge branch 'jk/diff-compact-heuristic' 2016-05-06 14:45:46 -07:00
.gitattributes
.gitignore test helpers: move test-* to t/helper/ subdirectory 2016-04-15 10:12:19 -07:00
.mailmap .mailmap: update to my shorter email address 2016-05-02 13:29:42 -07:00
.travis.yml Merge branch 'ls/travis-build-doc' into maint 2016-05-26 13:17:25 -07:00
abspath.c Windows: shorten code by re-using convert_slashes() 2016-04-04 18:03:02 -07:00
aclocal.m4
advice.c
advice.h
alias.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
alloc.c
archive-tar.c archive-tar: convert snprintf to xsnprintf 2016-05-26 10:44:26 -07:00
archive-zip.c
archive.c use st_add and st_mult for allocation size computation 2016-02-22 14:51:09 -08:00
archive.h
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 Merge branch 'ss/exc-flag-is-a-collection-of-bits' into maint 2016-04-14 18:37:15 -07:00
attr.h
base85.c
bisect.c bisect.c: use die_errno() and warning_errno() 2016-05-09 12:29:08 -07:00
bisect.h
blob.c
blob.h
branch.c worktree.c: check whether branch is rebased in another worktree 2016-04-22 14:09:38 -07:00
branch.h worktree.c: check whether branch is rebased in another worktree 2016-04-22 14:09:38 -07:00
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle.c bundle: don't leak an fd in case of early return 2016-04-01 10:33:18 -07:00
bundle.h
cache-tree.c cache-tree.c: fix i-t-a entry skipping directory updates sometimes 2016-07-18 13:45:33 -07:00
cache-tree.h
cache.h Merge branch 'js/windows-dotgit' into maint 2016-05-26 13:17:23 -07:00
check-builtins.sh
check-racy.c check-racy.c: use error_errno() 2016-05-09 12:29:08 -07:00
check_bindir
color.c
color.h
column.c use xmallocz to avoid size arithmetic 2016-02-22 14:51:09 -08:00
column.h
combine-diff.c combine-diff.c: use error_errno() 2016-05-09 12:29:08 -07:00
command-list.txt
commit-slab.h
commit.c use st_add and st_mult for allocation size computation 2016-02-22 14:51:09 -08:00
commit.h pretty: allow tweaking tabwidth in --expand-tabs 2016-03-30 12:52:26 -07:00
config.c Merge branch 'tb/core-eol-fix' into maint 2016-06-06 14:27:36 -07:00
config.mak.in
config.mak.uname mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*) 2016-05-26 13:12:02 -07:00
configure.ac Merge branch 'ky/imap-send-openssl-1.1.0' into maint 2016-05-06 14:53:24 -07:00
connect.c Merge branch 'cn/deprecate-ssh-git-url' 2016-03-16 13:16:40 -07:00
connect.h connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
connected.c connected.c: use error_errno() 2016-05-09 12:29:08 -07:00
connected.h
convert.c convert.c: ident + core.autocrlf didn't work 2016-04-25 12:12:03 -07:00
convert.h ls-files: add eol diagnostics 2016-01-18 19:48:43 -08:00
copy.c copy.c: use error_errno() 2016-05-09 12:29:08 -07:00
COPYING
credential-cache--daemon.c Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
credential-cache.c credential-cache, send_request: close fd when done 2016-04-01 10:33:18 -07:00
credential-store.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
credential.c credential: let empty credential specs reset helper list 2016-02-26 10:58:14 -08:00
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c Merge branch 'jk/tighten-alloc' 2016-02-26 13:37:16 -08:00
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c
diff-no-index.c diff-no-index.c: use error_errno() 2016-05-09 12:29:08 -07:00
diff.c Merge branch 'jk/diff-compact-heuristic' 2016-06-10 15:26:06 -07:00
diff.h Merge branch 'mm/diff-renames-default' 2016-04-03 10:29:22 -07:00
diffcore-break.c
diffcore-delta.c use st_add and st_mult for allocation size computation 2016-02-22 14:51:09 -08:00
diffcore-order.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
diffcore-pickaxe.c
diffcore-rename.c Merge branch 'sg/diff-multiple-identical-renames' into maint 2016-04-29 14:15:55 -07:00
diffcore.h
dir.c Merge branch 'nd/worktree-various-heads' 2016-05-23 14:54:29 -07:00
dir.h Merge branch 'nd/worktree-various-heads' 2016-05-23 14:54:29 -07:00
editor.c editor.c: use error_errno() 2016-05-09 12:29:08 -07:00
entry.c entry.c: use error_errno() 2016-05-09 12:29:08 -07:00
environment.c Merge branch 'js/windows-dotgit' into maint 2016-05-26 13:17:23 -07:00
exec_cmd.c Merge branch 'ak/extract-argv0-last-dir-sep' into maint 2016-03-10 11:13:47 -08:00
exec_cmd.h prepare_{git,shell}_cmd: use argv_array 2016-02-22 14:51:09 -08:00
fast-import.c Merge branch 'fc/fast-import-broken-marks-file' 2016-05-31 12:40:53 -07:00
fetch-pack.c fetch-pack: isolate sigpipe in demuxer thread 2016-04-20 13:33:56 -07:00
fetch-pack.h
fmt-merge-msg.h
fsck.c Merge branch 'jc/fsck-nul-in-commit' 2016-05-17 14:38:34 -07:00
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl add--interactive: allow custom diff highlighting programs 2016-02-28 10:53:54 -08:00
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
git-difftool--helper.sh difftool/mergetool: make the form of yes/no questions consistent 2016-04-25 15:15:17 -07:00
git-difftool.perl difftool: handle unmerged files in dir-diff mode 2016-05-16 14:53:05 -07:00
git-filter-branch.sh Merge branch 'jk/filter-branch-no-index' into maint 2016-02-05 14:54:13 -08:00
git-instaweb.sh
git-merge-octopus.sh merge-octopus: abort if index does not match HEAD 2016-04-12 18:39:43 -07:00
git-merge-one-file.sh Merge branch 'jk/no-diff-emit-common' into maint 2016-03-10 11:13:42 -08:00
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'nf/mergetool-prompt' 2016-05-03 14:08:17 -07:00
git-mergetool.sh Merge branch 'nf/mergetool-prompt' into HEAD 2016-05-18 14:40:07 -07:00
git-p4.py Merge branch 'ls/p4-lfs' 2016-05-10 13:40:29 -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-rebase--am.sh
git-rebase--interactive.sh Merge branch 'js/rebase-i-dedup-call-to-rerere' 2016-06-03 14:38:01 -07:00
git-rebase--merge.sh git-rebase--merge: don't include absent parent as a base 2016-04-24 12:05:08 -07:00
git-rebase.sh Merge branch 'jc/commit-tree-ignore-commit-gpgsign' 2016-05-13 13:18:27 -07:00
git-relink.perl
git-remote-testgit.sh
git-request-pull.sh
git-send-email.perl Merge branch 'jd/send-email-to-whom' into HEAD 2016-05-18 14:40:07 -07:00
git-sh-i18n.sh
git-sh-setup.sh sane_grep: pass "-a" if grep accepts it 2016-03-10 15:35:43 -08:00
git-stash.sh always quote shell arguments to test -z/-n 2016-05-14 10:37:29 -07:00
git-submodule.sh submodule: remove bashism from shell script 2016-06-01 11:32:53 -07:00
git-svn.perl git-svn: fix URL canonicalization during init w/ SVN 1.7+ 2016-03-16 20:16:23 +00:00
GIT-VERSION-GEN Git 2.9 2016-06-13 10:42:13 -07:00
git-web--browse.sh
git.c Merge branch 'ak/git-strip-extension-from-dashed-command' into maint 2016-03-10 11:13:48 -08:00
git.rc
gpg-interface.c Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
gpg-interface.h
graph.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
graph.h
grep.c grep.c: use error_errno() 2016-05-09 12:29:08 -07:00
grep.h
hashmap.c convert trivial cases to FLEX_ARRAY macros 2016-02-22 14:51:09 -08:00
hashmap.h
help.c convert trivial cases to FLEX_ARRAY macros 2016-02-22 14:51:09 -08:00
help.h
hex.c
http-backend.c show_head_ref(): check the result of resolve_ref_namespace() 2016-04-10 11:35:39 -07:00
http-fetch.c
http-push.c Merge branch 'bc/object-id' 2016-05-06 14:45:44 -07:00
http-walker.c
http.c Merge branch 'bn/http-cookiefile-config' into maint 2016-05-31 14:08:28 -07:00
http.h http: support sending custom HTTP headers 2016-04-27 14:02:33 -07:00
ident.c Merge branch 'da/user-useconfigonly' into HEAD 2016-05-18 14:40:05 -07:00
imap-send.c Merge branch 'ky/imap-send-openssl-1.1.0' into maint 2016-05-06 14:53:24 -07:00
INSTALL
khash.h convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
kwset.c
kwset.h
levenshtein.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
levenshtein.h
LGPL-2.1
line-log.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
line-log.h
line-range.c
line-range.h
list-objects.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
list-objects.h list-objects: pass full pathname to callbacks 2016-03-16 10:41:04 -07:00
ll-merge.c Merge branch 'jc/ll-merge-internal' 2016-05-17 14:38:32 -07:00
ll-merge.h
lockfile.c lockfile: improve error message when lockfile exists 2016-03-01 10:16:46 -08:00
lockfile.h
log-tree.c pretty: expand tabs in indented logs to make things line up properly 2016-03-30 11:25:35 -07:00
log-tree.h
mailinfo.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
mailinfo.h
mailmap.c Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
mailmap.h
Makefile Merge branch 'mm/makefile-developer-can-be-in-config-mak' 2016-06-03 14:38:02 -07: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
merge-recursive.c Merge branch 'bc/object-id' 2016-05-06 14:45:44 -07:00
merge-recursive.h merge-recursive: option to disable renames 2016-02-17 10:20:51 -08:00
merge.c
mergesort.c
mergesort.h
name-hash.c convert trivial cases to FLEX_ARRAY macros 2016-02-22 14:51:09 -08:00
notes-cache.c notes: allow treeish expressions as notes ref 2016-01-12 15:10:01 -08:00
notes-cache.h
notes-merge.c
notes-merge.h
notes-utils.c notes: allow treeish expressions as notes ref 2016-01-12 15:10:01 -08:00
notes-utils.h
notes.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
notes.h Merge branch 'jk/notes-merge-from-anywhere' 2016-02-03 14:15:59 -08:00
object.c
object.h
pack-bitmap-write.c Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7 2016-03-16 10:42:32 -07:00
pack-bitmap.c Merge branch 'jk/path-name-safety-2.6' into jk/path-name-safety-2.7 2016-03-16 10:42:32 -07:00
pack-bitmap.h
pack-check.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
pack-objects.c
pack-objects.h
pack-revindex.c Merge branch 'jk/tighten-alloc' 2016-02-26 13:37:16 -08:00
pack-revindex.h pack-revindex: store entries directly in packed_git 2015-12-21 14:36:28 -08:00
pack-write.c
pack.h
pager.c Merge branch 'jc/am-i-v-fix' into maint 2016-03-10 11:13:41 -08:00
parse-options-cb.c
parse-options.c parse-options.c: make OPTION_COUNTUP respect "unspecified" values 2016-05-05 11:52:45 -07:00
parse-options.h
patch-delta.c
patch-ids.c patch-ids: make commit_patch_id() a public helper function 2016-04-26 10:49:57 -07:00
patch-ids.h patch-ids: make commit_patch_id() a public helper function 2016-04-26 10:49:57 -07:00
path.c Merge branch 'lp/typofixes' into maint 2016-05-26 13:17:21 -07:00
pathspec.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
pretty.c pretty: allow tweaking tabwidth in --expand-tabs 2016-03-30 12:52:26 -07:00
prio-queue.c
prio-queue.h
progress.c use xmallocz to avoid size arithmetic 2016-02-22 14:51:09 -08:00
progress.h
prompt.c
prompt.h
quote.c quote: implement sq_quotef() 2016-03-01 12:24:15 -08:00
quote.h quote: implement sq_quotef() 2016-03-01 12:24:15 -08:00
reachable.c reachable.c: use error_errno() 2016-05-09 12:29:08 -07:00
reachable.h
read-cache.c Merge branch 'nd/ita-cleanup' into maint 2016-02-22 13:10:21 -08:00
README.md README.md: format CLI commands with code syntax 2016-05-31 08:54:24 -07:00
ref-filter.c ref-filter.c: mark strings for translation 2016-02-29 14:27:58 -08:00
ref-filter.h
reflog-walk.c Merge branch 'dk/reflog-walk-with-non-commit' into maint 2016-02-05 14:54:10 -08:00
reflog-walk.h
refs.c refs: move resolve_ref_unsafe into common code 2016-04-10 11:35:41 -07:00
refs.h refs: add a new function set_worktree_head_symref 2016-04-04 12:57:21 -07:00
RelNotes Git 2.8.4 2016-06-06 14:29:32 -07:00
remote-curl.c http: support sending custom HTTP headers 2016-04-27 14:02:33 -07:00
remote-testsvn.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
remote.c Merge branch 'nd/remote-plural-ours-plus-theirs' into maint 2016-05-26 13:17:18 -07:00
remote.h remote: simplify remote_is_configured() 2016-02-16 13:33:12 -08:00
replace_object.c
rerere.c Merge branch 'jc/rerere-multi' 2016-05-23 14:54:38 -07:00
rerere.h Merge branch 'jc/rerere-multi' 2016-04-25 15:17:15 -07:00
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'bc/object-id' 2016-05-06 14:45:44 -07:00
revision.h Merge branch 'lt/pretty-expand-tabs' 2016-04-13 14:12:36 -07:00
run-command.c Merge branch 'jk/push-client-deadlock-fix' into HEAD 2016-05-18 14:40:06 -07:00
run-command.h Merge branch 'jk/push-client-deadlock-fix' into HEAD 2016-05-18 14:40:06 -07:00
send-pack.c send-pack: isolate sigpipe in demuxer thread 2016-04-20 13:33:53 -07:00
send-pack.h
sequencer.c sequencer.c: use error_errno() 2016-05-09 12:29:08 -07:00
sequencer.h
server-info.c server-info.c: use error_errno() 2016-05-09 12:29:08 -07:00
setup.c Merge branch 'jc/xstrfmt-null-with-prec-0' into maint 2016-05-02 14:24:14 -07:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c Merge branch 'nd/worktree-various-heads' 2016-05-23 14:54:29 -07:00
sha1_name.c Merge branch 'bc/object-id' 2016-05-06 14:45:44 -07:00
shallow.c use st_add and st_mult for allocation size computation 2016-02-22 14:51:09 -08:00
shell.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
shortlog.h
show-index.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
sideband.c
sideband.h
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 typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
split-index.h
strbuf.c Merge branch 'jk/getwholeline-getdelim-empty' into maint 2016-04-14 18:57:46 -07:00
strbuf.h Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init 2016-04-14 12:47:45 -07:00
streaming.c
streaming.h
string-list.c string_list: use string-list API in unsorted_string_list_lookup() 2016-04-25 11:48:27 -07:00
string-list.h
submodule-config.c Merge branch 'sb/misc-cleanups' into HEAD 2016-05-18 14:40:15 -07:00
submodule-config.h Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init 2016-04-14 12:47:45 -07:00
submodule.c Merge branch 'jk/submodule-c-credential' 2016-05-17 14:38:25 -07:00
submodule.h Merge branch 'jk/submodule-c-credential' 2016-05-17 14:38:25 -07:00
symlinks.c
tag.c verify-tag: move tag verification code to tag.c 2016-04-22 14:06:46 -07:00
tag.h verify-tag: move tag verification code to tag.c 2016-04-22 14:06:46 -07:00
tar.h
tempfile.c
tempfile.h
thread-utils.c
thread-utils.h
trace.c
trace.h
trailer.c trailer.c: mark strings for translation 2016-02-29 14:27:58 -08:00
trailer.h interpret-trailers: add option for in-place editing 2016-01-14 12:22:17 -08:00
transport-helper.c Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
transport.c Merge branch 'cn/deprecate-ssh-git-url' 2016-03-16 13:16:40 -07:00
transport.h connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
tree-diff.c tree-walk: convert tree_entry_extract() to use struct object_id 2016-04-25 14:26:28 -07:00
tree-walk.c tree-walk: convert tree_entry_extract() to use struct object_id 2016-04-25 14:26:28 -07:00
tree-walk.h tree-walk: convert tree_entry_extract() to use struct object_id 2016-04-25 14:26:28 -07:00
tree.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
tree.h
unicode_width.h
unimplemented.sh unimplemented.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
unix-socket.c
unix-socket.h
unpack-trees.c Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
unpack-trees.h
update_unicode.sh
upload-pack.c Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
url.c
url.h
urlmatch.c
urlmatch.h
usage.c usage.c: add warning_errno() and error_errno() 2016-05-09 12:29:08 -07:00
userdiff.c
userdiff.h diff: clarify textconv interface 2016-02-22 10:40:35 -08:00
utf8.c
utf8.h typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
walker.h
wildmatch.c typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
wildmatch.h
worktree.c Merge branch 'nd/worktree-various-heads' 2016-05-23 14:54:29 -07:00
worktree.h branch: do not rename a branch under bisect or rebase 2016-04-22 14:09:39 -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 Merge branch 'nd/error-errno' 2016-05-17 14:38:28 -07:00
write_or_die.c write_or_die: handle EPIPE in async threads 2016-02-25 13:51:45 -08:00
ws.c
wt-status.c Merge branch 'nd/worktree-various-heads' 2016-05-23 14:54:29 -07:00
wt-status.h wt-status.c: split bisect detection out of wt_status_get_state() 2016-04-22 14:09:39 -07:00
xdiff-interface.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
xdiff-interface.h
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 http://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 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.

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