Go to file
Nguyễn Thái Ngọc Duy 4e1a7baa2e rm: only refresh entries that we may touch
This gets rid of the whole tree cache refresh. Instead only path that
we touch will get refreshed. We may still lstat() more than needed,
but it'd be better playing safe.

This potentially reduces a large number of lstat() on big trees. Take
gentoo-x86 tree for example, which has roughly 80k files:

Unmodified Git:

$ time git rm --cached skel.ebuild
rm 'skel.ebuild'

real    0m1.441s
user    0m0.821s
sys     0m0.531s

Modified Git:

$ time ~/w/git/git rm --cached skel.ebuild
rm 'skel.ebuild'

real    0m0.941s
user    0m0.828s
sys     0m0.091s

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2010-01-19 15:04:23 -08:00
Documentation Merge branch 'il/vcs-helper' 2010-01-13 12:30:39 -08:00
block-sha1
compat Explicitly truncate bswap operand to uint32_t 2009-11-25 00:16:38 -08:00
contrib hg-to-git: fix COMMITTER type-o 2010-01-12 13:18:27 -08:00
git-gui Merge git://repo.or.cz/git-gui 2009-12-09 15:38:51 -08:00
git_remote_helpers Add Python support library for remote helpers 2009-11-24 15:50:20 -08:00
gitk-git Merge git://git.kernel.org/pub/scm/gitk/gitk 2009-12-09 15:38:42 -08:00
gitweb gitweb: Describe (possible) gitweb.js minification in gitweb/README 2009-12-03 12:38:45 -08:00
perl
ppc
t Merge branch 'jc/checkout-merge-base' 2010-01-13 12:31:13 -08:00
templates Merge branch 'bs/maint-pre-commit-hook-sample' into maint 2009-11-16 00:03:15 -08:00
xdiff
.gitattributes .gitattributes: detect 8-space indent in shell scripts 2010-01-06 12:22:25 -08:00
.gitignore Merge branch 'il/vcs-helper' 2010-01-13 12:30:39 -08:00
.mailmap
COPYING
GIT-VERSION-GEN Kick off 1.7.0 cycle 2009-12-26 14:11:46 -08:00
INSTALL INSTALL: document a simpler way to run uninstalled builds 2009-12-03 11:38:21 -08:00
Makefile Merge branch 'il/vcs-helper' 2010-01-13 12:30:39 -08:00
README
RelNotes Start 1.6.6.X maintenance track 2009-12-26 14:20:09 -08:00
abspath.c
advice.c merge-recursive: point the user to commit when file would be overwritten. 2009-11-22 16:07:27 -08:00
advice.h merge-recursive: point the user to commit when file would be overwritten. 2009-11-22 16:07:27 -08:00
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c archive: complain about path specs that don't match anything 2009-12-30 00:47:00 -08:00
archive.h
attr.c
attr.h
base85.c Merge branch 'maint-1.6.2' into maint 2010-01-10 00:51:54 -08:00
bisect.c Use warning function instead of fprintf(stderr, "Warning: ..."). 2010-01-03 16:17:03 -08:00
bisect.h
blob.c
blob.h
branch.c
branch.h
builtin-add.c
builtin-annotate.c
builtin-apply.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
builtin-archive.c Merge branch 'il/vcs-helper' 2010-01-13 12:30:39 -08:00
builtin-bisect--helper.c
builtin-blame.c Merge branch 'maint' 2009-12-22 12:32:39 -08:00
builtin-branch.c Merge branch 'maint-1.6.1' into maint-1.6.2 2010-01-10 00:49:47 -08:00
builtin-bundle.c
builtin-cat-file.c
builtin-check-attr.c
builtin-check-ref-format.c check-ref-format -h: it does not know the --print option yet 2009-11-10 20:45:23 -08:00
builtin-checkout-index.c
builtin-checkout.c Merge branch 'jc/checkout-merge-base' 2010-01-13 12:31:13 -08:00
builtin-clean.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
builtin-clone.c Merge branch 'sr/vcs-helper' 2009-12-26 14:03:16 -08:00
builtin-commit-tree.c Show usage string for 'git commit-tree -h' 2009-11-09 17:08:44 -08:00
builtin-commit.c status: only touch path we may need to check 2010-01-15 20:40:25 -08:00
builtin-config.c builtin-config: add --path option doing ~ and ~user expansion. 2009-12-31 12:19:38 -08:00
builtin-count-objects.c Merge branch 'maint-1.6.1' into maint-1.6.2 2010-01-10 00:49:47 -08:00
builtin-describe.c describe: do not use unannotated tag even if exact match 2009-11-20 21:58:11 -08:00
builtin-diff-files.c
builtin-diff-index.c
builtin-diff-tree.c Teach --stdin option to "log" family 2009-11-20 15:10:29 -08:00
builtin-diff.c
builtin-fast-export.c
builtin-fetch-pack.c Smart fetch over HTTP: client side 2009-11-04 17:58:15 -08:00
builtin-fetch.c Merge branch 'sr/vcs-helper' 2009-12-26 14:03:16 -08:00
builtin-fmt-merge-msg.c
builtin-for-each-ref.c
builtin-fsck.c Check the format of more printf-type functions 2009-11-15 18:24:58 -08:00
builtin-gc.c General --quiet improvements 2009-12-03 10:08:54 -08:00
builtin-grep.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
builtin-help.c help: fix configured help format taking over command line one 2010-01-09 23:42:48 -08:00
builtin-init-db.c
builtin-log.c Merge branch 'jc/1.7.0-diff-whitespace-only-status' 2009-12-26 14:03:18 -08:00
builtin-ls-files.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
builtin-ls-remote.c Merge branch 'sr/vcs-helper' 2009-12-26 14:03:16 -08:00
builtin-ls-tree.c ls-tree: migrate to parse-options 2009-11-17 21:58:12 -08:00
builtin-mailinfo.c Merge branch 'jc/mailinfo-remove-brackets' 2009-11-30 14:43:24 -08:00
builtin-mailsplit.c Show usage string for 'git mailsplit -h' 2009-11-10 11:06:57 -08:00
builtin-merge-base.c
builtin-merge-file.c
builtin-merge-ours.c Show usage string for 'git merge-ours -h' 2009-11-09 17:08:45 -08:00
builtin-merge-recursive.c merge-{recursive,subtree}: use usagef() to print usage 2009-11-10 12:00:21 -08:00
builtin-merge.c Merge branch 'mm/maint-merge-ff-error-message-fix' into maint 2009-12-08 22:42:23 -08:00
builtin-mktree.c
builtin-mv.c Use warning function instead of fprintf(stderr, "Warning: ..."). 2010-01-03 16:17:03 -08:00
builtin-name-rev.c
builtin-pack-objects.c Merge branch 'maint' 2009-11-23 21:54:39 -08:00
builtin-pack-refs.c
builtin-prune-packed.c prune-packed: only show progress when stderr is a tty 2009-11-23 21:29:45 -08:00
builtin-prune.c
builtin-push.c push: spell 'Note about fast-forwards' section name correctly in error message. 2010-01-11 20:34:16 -08:00
builtin-read-tree.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
builtin-receive-pack.c Merge branch 'jc/1.7.0-push-safety' 2009-12-26 14:03:17 -08:00
builtin-reflog.c Let 'git <command> -h' show usage without a git dir 2009-11-10 12:00:21 -08:00
builtin-remote.c Merge branch 'bg/maint-remote-update-default' 2010-01-10 08:52:24 -08:00
builtin-replace.c
builtin-rerere.c Sync with 1.6.5.5 2009-12-05 11:39:13 -08:00
builtin-reset.c Merge branch 'cc/reset-more' 2010-01-13 11:58:56 -08:00
builtin-rev-list.c Merge branch 'jc/1.7.0-diff-whitespace-only-status' 2009-12-26 14:03:18 -08:00
builtin-rev-parse.c Merge branch 'jn/help-everywhere' 2009-11-20 23:44:52 -08:00
builtin-revert.c
builtin-rm.c rm: only refresh entries that we may touch 2010-01-19 15:04:23 -08:00
builtin-send-pack.c Merge branch 'maint' 2009-11-23 21:54:39 -08:00
builtin-shortlog.c Merge branch 'uk/maint-shortlog-encoding' 2009-11-30 14:42:28 -08:00
builtin-show-branch.c
builtin-show-ref.c Show usage string for 'git show-ref -h' 2009-11-09 17:08:53 -08:00
builtin-stripspace.c Show usage string for 'git stripspace -h' 2009-11-10 11:06:57 -08:00
builtin-symbolic-ref.c
builtin-tag.c tag -d: print sha1 of deleted tag 2009-12-10 18:45:34 -08:00
builtin-tar-tree.c Show usage string for 'git get-tar-commit-id -h' 2009-11-10 11:06:57 -08:00
builtin-unpack-objects.c
builtin-update-index.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
builtin-update-ref.c
builtin-update-server-info.c
builtin-upload-archive.c Merge branch 'np/maint-sideband-favor-status' into maint 2009-12-03 13:50:24 -08:00
builtin-verify-pack.c
builtin-verify-tag.c
builtin-write-tree.c
builtin.h Retire fetch--tool helper to contrib/examples 2009-11-09 17:08:44 -08:00
bundle.c Merge branch 'jc/log-stdin' 2009-11-23 22:30:08 -08:00
bundle.h
cache-tree.c
cache-tree.h
cache.h Merge branch 'jc/checkout-merge-base' 2010-01-13 12:31:13 -08:00
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h Add a notice that only certain functions can print color escape codes 2009-11-27 00:28:40 -08:00
combine-diff.c Give the hunk comment its own color 2009-11-28 10:05:44 -08:00
command-list.txt Add git-http-backend to command-list. 2009-12-26 14:12:34 -08:00
commit.c Merge branch 'jh/notes' (early part) 2009-11-20 23:53:55 -08:00
commit.h Merge branch 'sp/smart-http' 2009-11-20 23:51:23 -08:00
config.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
config.mak.in
configure.ac Merge branch 'sr/vcs-helper' 2009-12-26 14:03:16 -08:00
connect.c Merge branch 'cc/replace' 2009-11-23 22:24:01 -08:00
convert.c
copy.c
csum-file.c
csum-file.h
ctype.c
daemon.c daemon: consider only address in kill_some_child() 2010-01-09 23:43:49 -08:00
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
diff-no-index.c diff --no-index: make the usage string less scary 2009-11-10 12:00:21 -08:00
diff.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
diff.h Merge branch 'jc/1.7.0-diff-whitespace-only-status' 2009-12-26 14:03:18 -08:00
diffcore-break.c diffcore-break: save cnt_data for other phases 2009-11-16 13:21:12 -08:00
diffcore-delta.c Fix diff -B/--dirstat miscounting of newly added contents 2009-12-05 10:54:17 -08:00
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c diffcore-rename: reduce memory footprint by freeing blob data early 2009-11-20 22:13:47 -08:00
diffcore.h
dir.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
dir.h Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
editor.c Provide a build time default-editor setting 2009-11-13 12:20:54 -08:00
entry.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
environment.c Merge branch 'nd/sparse' 2010-01-13 11:58:34 -08:00
exec_cmd.c
exec_cmd.h
fast-import.c fast-import: Document author/committer/tagger name is optional 2009-12-31 14:46:08 -08:00
fetch-pack.h Smart fetch over HTTP: client side 2009-11-04 17:58:15 -08:00
fixup-builtins
fsck.c
fsck.h Check the format of more printf-type functions 2009-11-15 18:24:58 -08:00
generate-cmdlist.sh
git-add--interactive.perl Merge branch 'maint' 2009-12-08 22:47:09 -08:00
git-am.sh Merge branch 'jc/maint-am-keep' into maint 2009-12-03 13:54:03 -08:00
git-archimport.perl
git-bisect.sh Merge branch 'rs/work-around-grep-opt-insanity' 2009-11-25 11:45:07 -08:00
git-compat-util.h Introduce usagef() that takes a printf-style format 2009-11-10 12:00:21 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl Merge branch 'pm/cvs-environ' 2010-01-10 08:52:37 -08:00
git-difftool--helper.sh
git-difftool.perl
git-filter-branch.sh Merge branch 'js/filter-branch-prime' 2010-01-07 15:40:30 -08:00
git-instaweb.sh Merge branch 'rs/work-around-grep-opt-insanity' into maint 2009-12-03 13:53:58 -08:00
git-lost-found.sh
git-merge-octopus.sh octopus: remove dead code 2009-12-13 23:40:24 -08:00
git-merge-one-file.sh Show usage string for 'git merge-one-file -h' 2009-11-10 11:06:57 -08:00
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'rs/work-around-grep-opt-insanity' 2009-11-25 11:45:07 -08:00
git-mergetool.sh
git-notes.sh
git-parse-remote.sh
git-pull.sh Merge branch 'maint' 2009-12-08 22:47:09 -08:00
git-quiltimport.sh
git-rebase--interactive.sh Merge branch 'jc/checkout-merge-base' 2010-01-13 12:31:13 -08:00
git-rebase.sh Merge branch 'jc/checkout-merge-base' 2010-01-13 12:31:13 -08:00
git-relink.perl
git-repack.sh
git-request-pull.sh
git-send-email.perl Merge branch 'jc/1.7.0-send-email-no-thread-default' 2009-12-26 14:03:17 -08:00
git-sh-setup.sh Merge branch 'rs/work-around-grep-opt-insanity' 2009-11-25 11:45:07 -08:00
git-stash.sh stash: mention --patch in usage string. 2010-01-02 10:40:55 -08:00
git-submodule.sh Merge branch 'rs/work-around-grep-opt-insanity' 2009-11-25 11:45:07 -08:00
git-svn.perl git svn: branch/tag commands detect username in URLs 2009-12-23 11:58:05 -08:00
git-web--browse.sh
git.c Merge branch 'cc/replace' 2009-11-23 22:24:01 -08:00
git.spec.in
graph.c
graph.h Documentation: undocument gc'd function graph_release() 2009-11-19 23:05:17 -08:00
grep.c grep: Allow case insensitive search of fixed-strings 2009-11-16 16:06:46 -08:00
grep.h grep: Allow case insensitive search of fixed-strings 2009-11-16 16:06:46 -08:00
hash-object.c
hash.c
hash.h
help.c help.autocorrect: do not run a command if the command given is junk 2009-12-15 16:21:51 -08:00
help.h
http-backend.c http-backend: Let gcc check the format of more printf-type functions. 2009-11-15 22:15:01 -08:00
http-fetch.c Let 'git http-fetch -h' show usage outside any git repository 2009-11-10 11:11:21 -08:00
http-push.c Disable CURLOPT_NOBODY before enabling CURLOPT_PUT and CURLOPT_POST 2009-11-22 22:56:54 -08:00
http-walker.c
http.c Merge branch 'tr/http-updates' 2010-01-10 08:53:04 -08:00
http.h Smart push over HTTP: client side 2009-11-04 17:58:15 -08:00
ident.c Suppress warnings from "git var -l" 2009-11-13 12:16:30 -08:00
imap-send.c Merge branch 'tc/format-attribute' 2009-11-22 16:28:14 -08:00
index-pack.c Let 'git <command> -h' show usage without a git dir 2009-11-10 12:00:21 -08:00
levenshtein.c
levenshtein.h
list-objects.c
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c lockfile: show absolute filename in unable_to_lock_message 2010-01-12 15:48:24 -08:00
log-tree.c
log-tree.h
mailmap.c
mailmap.h
match-trees.c
merge-file.c
merge-index.c
merge-recursive.c Merge branch 'mm/maint-merge-ff-error-message-fix' into maint 2009-12-08 22:42:23 -08:00
merge-recursive.h merge-recursive: make the error-message generation an extern function 2009-11-29 23:52:31 -08:00
merge-tree.c
mktag.c
name-hash.c
notes.c Fix crasher on encountering SHA1-like non-note in notes tree 2009-12-03 10:10:35 -08:00
notes.h
object.c
object.h
pack-check.c
pack-redundant.c Let 'git <command> -h' show usage without a git dir 2009-11-10 12:00:21 -08:00
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c Provide a build time default-pager setting 2009-11-13 12:20:56 -08:00
parse-options.c
parse-options.h
patch-delta.c
patch-id.c
patch-ids.c
patch-ids.h
path.c Merge branch 'mm/config-pathname-tilde-expand' 2009-11-22 16:28:38 -08:00
pkt-line.c pkt-line: Make packet_read_line easier to debug 2009-10-30 19:20:53 -07:00
pkt-line.h pkt-line: Add strbuf based functions 2009-10-30 19:20:53 -07:00
preload-index.c
pretty.c Merge branch 'jc/pretty-lf' 2009-11-30 14:44:22 -08:00
progress.c
progress.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c Merge branch 'cc/reset-more' 2010-01-13 11:58:56 -08:00
reflog-walk.c
reflog-walk.h
refs.c teach warn_dangling_symref to take a FILE argument 2009-11-10 01:01:47 -08:00
refs.h teach warn_dangling_symref to take a FILE argument 2009-11-10 01:01:47 -08:00
remote-curl.c Merge branch 'maint' 2010-01-12 15:48:38 -08:00
remote.c Merge branch 'sr/vcs-helper' 2009-12-26 14:03:16 -08:00
remote.h Merge branch 'sr/vcs-helper' 2009-12-26 14:03:16 -08:00
replace_object.c
rerere.c
rerere.h
revision.c Merge branch 'jc/1.7.0-diff-whitespace-only-status' 2009-12-26 14:03:18 -08:00
revision.h Merge branch 'jc/log-stdin' 2009-11-23 22:30:08 -08:00
run-command.c
run-command.h
send-pack.h Smart push over HTTP: client side 2009-11-04 17:58:15 -08:00
server-info.c
setup.c Merge branch 'mm/diag-path-in-treeish' 2010-01-10 08:52:10 -08:00
sha1-lookup.c
sha1-lookup.h
sha1_file.c
sha1_name.c Merge branch 'jc/checkout-merge-base' 2010-01-13 12:31:13 -08:00
shallow.c
shell.c
shortlog.h
show-index.c Show usage string for 'git show-index -h' 2009-11-10 11:06:57 -08:00
sideband.c Smart push over HTTP: client side 2009-11-04 17:58:15 -08:00
sideband.h
sigchain.c
sigchain.h
strbuf.c
strbuf.h Check the format of more printf-type functions 2009-11-15 18:24:58 -08:00
string-list.c
string-list.h string-list: rename the include guard to STRING_LIST_H 2010-01-09 23:39:11 -08:00
submodule.c submodule.c: Squelch a "use before assignment" warning 2009-11-20 21:58:11 -08:00
submodule.h
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-genrandom.c
test-index-version.c
test-match-trees.c
test-parse-options.c
test-path-utils.c
test-sha1.c
test-sha1.sh
test-sigchain.c
thread-utils.c
thread-utils.h
trace.c
transport-helper.c Support remote archive from all smart transports 2009-12-28 00:24:15 -08:00
transport.c Reset possible helper before reusing remote structure 2010-01-09 22:38:49 -08:00
transport.h Support remote archive from all smart transports 2009-12-28 00:24:15 -08:00
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unimplemented.sh
unpack-file.c Show usage string for 'git unpack-file -h' 2009-11-10 11:06:57 -08:00
unpack-trees.c Merge branch 'cc/reset-more' 2010-01-13 11:58:56 -08:00
unpack-trees.h
upload-pack.c Sync with 1.6.5.6 2009-12-10 16:20:59 -08:00
usage.c Fix truncated usage messages 2009-11-22 16:14:48 -08:00
userdiff.c
userdiff.h
utf8.c strbuf_add_wrapped_text(): skip over colour codes 2009-11-23 15:36:07 -08:00
utf8.h
var.c Teach git var about GIT_PAGER 2009-11-13 12:20:47 -08:00
walker.c
walker.h
wrap-for-bin.sh build dashless "bin-wrappers" directory similar to installed bindir 2009-12-03 11:37:47 -08:00
wrapper.c
write_or_die.c
ws.c
wt-status.c status: only touch path we may need to check 2010-01-15 20:40:25 -08:00
wt-status.h status/commit: do not suggest "reset HEAD <path>" while merging 2009-12-12 01:22:10 -08:00
xdiff-interface.c
xdiff-interface.h

README

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

	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.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.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. 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://marc.theaimsgroup.com/?l=git and other archival sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.