Go to file
Jeff King 9dd5245c10 grep: pre-load userdiff drivers when threaded
The low-level grep_source code will automatically load the
userdiff driver to see whether a file is binary. However,
when we are threaded, it will load the drivers in a
non-deterministic order, handling each one as its assigned
thread happens to be scheduled.

Meanwhile, the attribute lookup code (which underlies the
userdiff driver lookup) is optimized to handle paths in
sequential order (because they tend to share the same
gitattributes files). Multi-threading the lookups destroys
the locality and makes this optimization less effective.

We can fix this by pre-loading the userdiff driver in the
main thread, before we hand off the file to a worker thread.
My best-of-five for "git grep foo" on the linux-2.6
repository went from:

  real    0m0.391s
  user    0m1.708s
  sys     0m0.584s

to:

  real    0m0.360s
  user    0m1.576s
  sys     0m0.572s

Not a huge speedup, but it's quite easy to do. The only
trick is that we shouldn't perform this optimization if "-a"
was used, in which case we won't bother checking whether
the files are binary at all.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-02 10:36:08 -08:00
block-sha1 msvc: Select the "fast" definition of the {get,put}_be32() macros 2010-06-27 21:59:32 -07:00
builtin grep: pre-load userdiff drivers when threaded 2012-02-02 10:36:08 -08:00
compat Merge branch 'ef/setenv-putenv' into maint 2011-12-28 11:42:24 -08:00
contrib git-completion: workaround zsh COMPREPLY bug 2012-01-26 14:03:51 -08:00
Documentation Git 1.7.9 2012-01-27 11:31:02 -08:00
git_remote_helpers Change check_ref_format() to take a flags argument 2011-10-05 13:45:29 -07:00
git-gui Merge branch 'master' of git://repo.or.cz/git-gui 2011-12-13 16:48:24 -08:00
gitk-git Merge git://ozlabs.org/~paulus/gitk 2011-12-16 22:18:42 -08:00
gitweb Merge branch 'jn/maint-gitweb-grep-fix' 2012-01-16 16:45:56 -08:00
mergetools mergetools: use the correct tool for Beyond Compare 3 on Windows 2011-10-15 20:13:55 -07:00
perl Merge branch 'maint' 2012-01-03 13:48:00 -08:00
po i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
ppc
t grep: respect diff attributes for binary-ness 2012-02-02 10:36:08 -08:00
templates Merge branch 'maint-1.7.6' into maint 2011-10-26 16:09:28 -07:00
vcs-svn Fix a bitwise negation assignment issue spotted by Sun Studio 2011-12-21 10:19:40 -08:00
xdiff Merge branch 'rs/diff-cleanup-records-fix' into maint 2011-10-21 10:49:25 -07:00
.gitattributes git-gui: set whitespace warnings appropriate to this project 2011-11-30 11:35:28 +00:00
.gitignore Merge branch 'tr/cache-tree' 2011-12-19 16:05:20 -08:00
.mailmap Martin Langhoff has a new e-mail address 2010-10-06 12:08:48 -07:00
abspath.c Merge branch 'js/maint-add-path-stat-pwd' into maint 2011-08-16 11:41:27 -07:00
aclocal.m4 configure: use AC_LANG_PROGRAM consistently 2011-02-14 10:55:15 -08:00
advice.c advice: Introduce error_resolve_conflict 2011-08-04 15:40:41 -07:00
advice.h advice: Introduce error_resolve_conflict 2011-08-04 15:40:41 -07:00
alias.c split_cmdline: Allow caller to access error string 2010-08-11 09:36:23 -07:00
alloc.c unbreak and eliminate NO_C99_FORMAT 2011-03-17 15:30:49 -07:00
archive-tar.c upload-archive: allow user to turn off filters 2011-06-22 11:12:35 -07:00
archive-zip.c Merge branch 'jk/archive-tar-filter' 2011-07-19 09:45:32 -07:00
archive.c Merge branch 'jk/maint-upload-archive' 2012-01-12 23:34:17 -08:00
archive.h archive: don't let remote clients get unreachable commits 2011-11-21 14:42:25 -08:00
argv-array.c refactor argv_array into generic code 2011-09-14 11:56:36 -07:00
argv-array.h refactor argv_array into generic code 2011-09-14 11:56:36 -07:00
attr.c Merge branch 'maint-1.7.6' into maint-1.7.7 2012-01-11 19:11:00 -08:00
attr.h Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
base85.c Standardize do { ... } while (0) style 2010-08-12 15:44:51 -07:00
bisect.c Merge branch 'jk/argv-array' into maint 2011-10-26 16:13:31 -07:00
bisect.h bisect: introduce support for --no-checkout option. 2011-08-04 15:34:32 -07:00
blob.c Replace parse_blob() with an explanatory comment 2010-01-18 17:04:02 -08:00
blob.h Replace parse_blob() with an explanatory comment 2010-01-18 17:04:02 -08:00
branch.c Merge branch 'jn/maint-sequencer-fixes' into maint 2011-12-28 11:32:39 -08:00
branch.h Merge branch 'jn/branch-move-to-self' 2011-12-13 22:53:08 -08:00
builtin.h Merge branch 'jk/upload-archive-use-start-command' 2011-12-16 22:33:30 -08:00
bulk-checkin.c bulk-checkin: replace fast-import based implementation 2011-12-01 11:46:09 -08:00
bulk-checkin.h bulk-checkin: replace fast-import based implementation 2011-12-01 11:46:09 -08:00
bundle.c Merge branch 'maint' 2012-01-03 13:48:00 -08:00
bundle.h Merge branch 'jc/unseekable-bundle' 2011-10-21 16:04:32 -07:00
cache-tree.c Refactor cache_tree_update idiom from commit 2011-12-06 14:57:36 -08:00
cache-tree.h Refactor cache_tree_update idiom from commit 2011-12-06 14:57:36 -08:00
cache.h Merge branch 'jk/git-prompt' 2011-12-22 11:27:23 -08:00
check_bindir
check-builtins.sh
check-racy.c
color.c want_color: automatically fallback to color.ui 2011-08-19 15:51:38 -07:00
color.h want_color: automatically fallback to color.ui 2011-08-19 15:51:38 -07:00
combine-diff.c pass struct commit to diff_tree_combined_merge() 2011-12-17 18:22:29 -08:00
command-list.txt Documentation: Link to gitweb(1) and gitweb.conf(5) in other manpages 2011-10-16 11:09:35 -07:00
commit.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
commit.h Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
config.c Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
config.mak.in i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
configure.ac i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
connect.c Merge branch 'jk/fetch-no-tail-match-refs' into maint 2011-12-28 11:32:36 -08:00
connected.c check_everything_connected(): libify 2011-09-09 15:19:02 -07:00
connected.h check_everything_connected(): libify 2011-09-09 15:19:02 -07:00
convert.c Merge branch 'jc/maint-lf-to-crlf-keep-crlf' into maint 2011-12-28 11:42:27 -08:00
convert.h stream filter: add "no more input" to the filters 2011-05-26 16:47:15 -07:00
copy.c preserve mtime of local clone 2009-09-13 01:32:26 -07:00
COPYING Update COPYING with GPLv2 with new FSF address 2010-01-17 14:29:37 -08:00
credential-cache--daemon.c credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
credential-cache.c credential-cache: ignore "connection refused" errors 2012-01-16 22:15:19 -08:00
credential-store.c credentials: add "store" helper 2011-12-12 16:09:38 -08:00
credential.c credential: use git_prompt instead of git_getpass 2011-12-12 16:09:39 -08:00
credential.h credential: make relevance of http path configurable 2011-12-11 23:16:25 -08:00
csum-file.c csum-file: introduce sha1file_checkpoint 2011-11-30 14:27:59 -08:00
csum-file.h csum-file: introduce sha1file_checkpoint 2011-11-30 14:27:59 -08:00
ctype.c magic pathspec: futureproof shorthand form 2011-04-08 16:19:48 -07:00
daemon.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
date.c date.c: Support iso8601 timezone formats 2011-09-12 16:49:14 -07:00
decorate.c Unify signedness in hashing calls 2009-05-20 00:02:24 -07:00
decorate.h
delta.h Fix big left-shifts of unsigned char 2009-06-18 09:22:46 -07:00
diff-delta.c fix >4GiB source delta assertion failure 2010-08-21 23:53:26 -07:00
diff-lib.c diff-index: enable recursive pathspec matching in unpack_trees 2012-01-18 15:44:02 -08:00
diff-no-index.c Convert struct diff_options to use struct pathspec 2011-02-03 12:28:15 -08:00
diff.c Merge branch 'tr/maint-word-diff-incomplete-line' 2012-01-18 15:16:19 -08:00
diff.h pass struct commit to diff_tree_combined_merge() 2011-12-17 18:22:29 -08:00
diffcore-break.c Add a macro DIFF_QUEUE_CLEAR. 2010-05-07 09:34:27 -07: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 pickaxe: factor out pickaxe 2011-10-07 15:46:14 -07:00
diffcore-rename.c diffcore-rename.c: avoid set-but-not-used warning 2011-06-01 13:54:17 -07:00
diffcore.h combine-diff: support format_callback 2011-08-20 23:03:06 -07:00
dir.c read_directory_recursive: reduce one indentation level 2011-10-27 11:27:57 -07:00
dir.h rename pathspec_prefix() to common_prefix() and move to dir.[ch] 2011-09-12 14:38:32 -07:00
editor.c editor: use run_command's shell feature 2010-01-05 23:41:51 -08:00
entry.c Add streaming filter API 2011-05-26 16:47:15 -07:00
environment.c Merge branch 'jc/stream-to-pack' 2011-12-16 22:33:40 -08:00
exec_cmd.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
exec_cmd.h
fast-import.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
fetch-pack.h standardize brace placement in struct definitions 2011-03-16 12:49:02 -07:00
fixup-builtins
fmt-merge-msg.h fmt-merge-msg: use branch.$name.description 2011-10-07 10:11:47 -07:00
fsck.c fsck: improve committer/author check 2011-08-11 12:21:07 -07:00
fsck.h Check the format of more printf-type functions 2009-11-15 18:24:58 -08:00
generate-cmdlist.sh misc-sh: fix up whitespace in some other .sh files. 2011-08-05 15:04:48 -07:00
gettext.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
gettext.h i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
git-add--interactive.perl add -i: ignore terminal escape sequences 2011-05-17 20:44:17 -07:00
git-am.sh Merge branch 'maint-1.7.7' into maint 2011-12-09 13:33:39 -08:00
git-archimport.perl perl: use "use warnings" instead of -w 2010-09-27 12:37:56 -07:00
git-bisect.sh Merge branch 'js/bisect-no-checkout' into maint 2011-11-01 16:03:35 -07:00
git-compat-util.h Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
git-cvsexportcommit.perl git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS 2012-01-11 18:04:08 -08:00
git-cvsimport.perl Merge branch 'gr/cvsimport-alternative-cvspass-location' into maint 2011-05-13 10:44:54 -07:00
git-cvsserver.perl use -h for synopsis and --help for manpage consistently 2011-10-05 10:47:10 -07:00
git-difftool--helper.sh git-difftool: allow skipping file by typing 'n' at prompt 2011-10-10 10:21:11 -07:00
git-difftool.perl use -h for synopsis and --help for manpage consistently 2011-10-05 10:47:10 -07:00
git-filter-branch.sh Merge branch 'jk/filter-branch-require-clean-work-tree' into maint 2011-10-15 20:46:38 -07:00
git-instaweb.sh git-instaweb: Check that correct config file exists for (re)start 2011-06-27 09:11:41 +00:00
git-lost-found.sh
git-merge-octopus.sh merge-octopus: Work around environment issue on Windows 2010-10-01 23:08:46 +01:00
git-merge-one-file.sh Merge branch 'js/maint-merge-one-file-osx-expr' into maint 2011-10-21 10:49:25 -07:00
git-merge-resolve.sh Convert to use quiet option when available 2009-04-22 19:05:37 -07:00
git-mergetool--lib.sh Merge branch 'maint' 2011-09-19 20:46:48 -07:00
git-mergetool.sh Merge branch 'jm/mergetool-pathspec' into maint-1.7.6 2011-10-26 16:12:25 -07:00
git-parse-remote.sh Merge branch 'mz/rebase' 2011-04-28 14:11:39 -07:00
git-pull.sh Merge branch 'ab/pull-rebase-config' 2011-12-09 13:37:01 -08:00
git-quiltimport.sh
git-rebase--am.sh git-rebase--am: remove unnecessary --3way option 2011-02-10 14:08:10 -08:00
git-rebase--interactive.sh Merge branch 'aw/rebase-i-stop-on-failure-to-amend' into maint 2011-12-28 11:32:34 -08:00
git-rebase--merge.sh rebase -m: don't print exit code 2 when merge fails 2011-02-10 14:08:09 -08:00
git-rebase.sh Merge branch 'jk/pull-rebase-with-work-tree' into maint 2011-11-01 16:11:00 -07:00
git-relink.perl Merge branch 'ab/require-perl-5.8' into maint 2010-12-09 10:35:21 -08:00
git-remote-testgit.py (short) documentation for the testgit remote helper 2011-09-01 15:52:02 -07:00
git-repack.sh Merge branch 'tr/maint-git-repack-tmpfile' into maint 2010-11-24 12:47:10 -08:00
git-request-pull.sh request-pull: use the real fork point when preparing the message 2012-01-10 21:51:15 -08:00
git-send-email.perl send-email: multiedit is a boolean config option 2012-01-09 15:15:28 -08:00
git-sh-i18n.sh i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
git-sh-setup.sh use -h for synopsis and --help for manpage consistently 2011-10-05 10:47:10 -07:00
git-stash.sh stash: Don't fail if work dir contains file named 'HEAD' 2012-01-01 01:11:56 -08:00
git-submodule.sh Merge branch 'tc/submodule-clone-name-detection' 2011-10-26 16:16:32 -07:00
git-svn.perl git-svn.perl: close the edit for propedits even with no mods 2011-12-01 14:25:30 -08:00
GIT-VERSION-GEN Git 1.7.9 2012-01-27 11:31:02 -08:00
git-web--browse.sh git-web--browse: avoid the use of eval 2011-10-03 10:47:07 -07:00
git.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
git.spec.in gitweb: Add gitweb manpages to 'gitweb' package in git.spec 2011-10-16 11:09:35 -07:00
gpg-interface.c verify_signed_buffer: fix stale comment 2012-01-05 13:02:26 -08:00
gpg-interface.h Split GPG interface into its own helper library 2011-11-04 21:40:25 -07:00
graph.c color: delay auto-color decision until point of use 2011-08-19 15:51:34 -07:00
graph.h Enable custom schemes for column colors in the graph API 2010-07-13 16:33:02 -07:00
grep.c grep: load file data after checking binary-ness 2012-02-02 10:36:08 -08:00
grep.h grep: respect diff attributes for binary-ness 2012-02-02 10:36:08 -08:00
hash.c for_each_hash: allow passing a 'void *data' pointer to callback 2011-02-18 22:25:51 -08:00
hash.h for_each_hash: allow passing a 'void *data' pointer to callback 2011-02-18 22:25:51 -08:00
help.c Merge branch 'ms/help-unknown' 2011-07-22 14:43:21 -07:00
help.h builtin.h: Move two functions definitions to help.h. 2010-09-01 08:00:51 -07:00
hex.c get_sha1_hex(): do not read past a NUL character 2011-10-05 13:45:16 -07:00
http-backend.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
http-fetch.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-push.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-walker.c http: make curl callbacks match contracts from curl header 2011-05-04 13:30:28 -07:00
http.c Merge branch 'jk/maint-push-over-dav' into maint 2011-12-28 11:32:37 -08:00
http.h Merge branch 'jk/maint-push-over-dav' into maint 2011-12-28 11:32:37 -08:00
ident.c ident: do not retrieve default ident when unnecessary 2011-10-06 11:16:16 -07:00
imap-send.c Merge branch 'jk/git-prompt' 2011-12-22 11:27:23 -08:00
INSTALL INSTALL: warn about recent Fedora breakage 2012-01-26 21:51:29 -08:00
kwset.c sparse: Fix an "Using plain integer as NULL pointer" warning 2011-09-11 14:43:14 -07:00
kwset.h Adapt the kwset code to Git 2011-08-20 22:33:57 -07:00
levenshtein.c Fix typos / spelling in comments 2009-04-22 19:02:12 -07: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
list-objects.c tree_entry_interesting(): give meaningful names to return values 2011-10-27 11:38:24 -07:00
list-objects.h list-objects: pass callback data to show_objects() 2011-09-01 15:46:12 -07:00
ll-merge.c Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
ll-merge.h merge-recursive --patience 2010-08-26 09:20:03 -07:00
lockfile.c Name make_*_path functions more accurately 2011-03-17 16:08:30 -07:00
log-tree.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
log-tree.h Allow customizable commit decorations colors 2010-06-24 12:57:34 -07:00
mailmap.c Merge branch 'ml/mailmap' into maint-1.7.6 2011-12-13 21:12:14 -08:00
mailmap.h mailmap.c: remove unused function 2010-01-12 01:06:09 -08:00
Makefile Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
match-trees.c Make "subtree" part more orthogonal to the rest of merge-recursive. 2010-01-17 22:46:28 -08:00
merge-file.c sparse: Fix an "symbol 'merge_file' not decared" warning 2011-04-11 10:35:25 -07:00
merge-file.h sparse: Fix an "symbol 'merge_file' not decared" warning 2011-04-11 10:35:25 -07:00
merge-recursive.c Merge branch 'tr/cache-tree' 2011-12-19 16:05:20 -08:00
merge-recursive.h merge-recursive: Save D/F conflict filenames instead of unlinking them 2011-08-14 14:19:35 -07:00
name-hash.c name-hash.c: always initialize dir_next pointer 2011-11-01 15:29:18 -07:00
notes-cache.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-cache.h introduce notes-cache interface 2010-04-01 23:58:30 -07:00
notes-merge.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-merge.h Convert commit_tree() to take strbuf as message 2011-12-15 10:46:42 -08:00
notes.c Do not use C++-style comments 2011-08-22 10:07:07 -07:00
notes.h notes: refactor display notes default handling 2011-03-29 14:31:59 -07:00
object.c receive-pack, fetch-pack: reject bogus pack that records objects twice 2011-11-16 22:05:21 -08:00
object.h object.h: Remove obsolete struct object_refs 2011-03-14 10:49:28 -07:00
pack-check.c fsck: print progress 2011-11-06 20:31:28 -08:00
pack-refs.c Change check_ref_format() to take a flags argument 2011-10-05 13:45:29 -07:00
pack-refs.h
pack-revindex.c janitor: useless checks before free 2009-07-22 21:57:41 -07:00
pack-revindex.h
pack-write.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
pack.h Merge branch 'jc/stream-to-pack' 2011-12-16 22:33:40 -08:00
pager.c setup_pager: set GIT_PAGER_IN_USE 2011-08-18 14:17:12 -07:00
parse-options-cb.c parseopt: add OPT_NOOP_NOARG 2011-09-28 12:46:21 -07:00
parse-options.c parse-options: deprecate OPT_BOOLEAN 2011-09-27 17:00:04 -07:00
parse-options.h parseopt: add OPT_NOOP_NOARG 2011-09-28 12:46:21 -07:00
patch-delta.c compat: helper for detecting unsigned overflow 2011-02-10 13:47:56 -08:00
patch-ids.c patch-ids: use the new generic "sha1_pos" function to lookup sha1 2009-04-04 22:57:42 -07:00
patch-ids.h
path.c Learn to handle gitfiles in enter_repo 2011-10-04 13:30:38 -07:00
pkt-line.c sparse: Fix errors and silence warnings 2011-04-03 10:14:53 -07:00
pkt-line.h pkt-line: Add strbuf based functions 2009-10-30 19:20:53 -07:00
preload-index.c Convert ce_path_match() to use struct pathspec 2011-02-03 14:08:30 -08:00
pretty.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
progress.c change throughput display units with fast links 2009-10-14 01:19:29 -07:00
progress.h
prompt.c prompt: use git_terminal_prompt 2011-12-12 16:09:38 -08:00
prompt.h prompt: use git_terminal_prompt 2011-12-12 16:09:38 -08:00
quote.c Merge branch 'jk/argv-array' into maint 2011-10-26 16:13:31 -07:00
quote.h quote: provide sq_dequote_to_argv_array 2011-09-14 11:56:49 -07:00
reachable.c reachable: per-object progress 2011-11-07 22:12:19 -08:00
reachable.h prune: show progress while marking reachable objects 2011-11-07 22:12:19 -08:00
read-cache.c Merge branch 'rs/allocate-cache-entry-individually' 2011-12-09 13:36:56 -08:00
README README: git lives at http://git-scm.com these days 2009-10-07 12:47:24 -07:00
reflog-walk.c Merge branch 'jk/pretty-reglog-ent' 2011-12-22 11:27:28 -08:00
reflog-walk.h pretty: give placeholders to reflog identity 2011-12-16 13:00:15 -08:00
refs.c Merge branch 'mh/ref-api' 2011-12-20 13:25:53 -08:00
refs.h resolve_gitlink_ref(): improve docstring 2011-12-12 09:08:53 -08:00
RelNotes Prepare for 1.7.8.4 2012-01-10 14:27:14 -08:00
remote-curl.c Merge branch 'jk/http-push-to-empty' into maint 2011-12-28 11:42:37 -08:00
remote.c Rename resolve_ref() to resolve_ref_unsafe() 2011-12-13 09:39:46 -08:00
remote.h Merge branch 'cn/fetch-prune' 2011-10-26 16:16:29 -07:00
replace_object.c inline lookup_replace_object() calls 2011-05-15 15:23:33 -07:00
rerere.c Merge branch 'maint' 2011-05-30 00:09:55 -07:00
rerere.h rerere: libify rerere_clear() and rerere_gc() 2011-05-08 12:55:34 -07:00
resolve-undo.c Convert the users of for_each_string_list to for_each_string_list_item macro 2010-07-05 11:44:35 -07:00
resolve-undo.h build: make code "-Wpointer-arith" clean 2010-02-01 22:04:03 -08:00
revision.c grep: drop grep_buffer's "name" parameter 2012-02-02 10:36:08 -08:00
revision.h log: --show-signature 2011-11-12 22:27:38 -08:00
run-command.c Merge branch 'jk/argv-array' into maint 2011-10-26 16:13:31 -07:00
run-command.h Enable threaded async procedures whenever pthreads is available 2010-03-10 14:26:54 -08:00
send-pack.h push: pass --progress down to git-pack-objects 2010-10-18 16:20:19 -07:00
sequencer.c revert: stop creating and removing sequencer-old directory 2011-12-12 13:33:53 -08:00
sequencer.h revert: stop creating and removing sequencer-old directory 2011-12-12 13:33:53 -08:00
server-info.c update-server-info: Shorten read_pack_info_file() 2010-07-19 11:13:52 -07:00
setup.c Merge branch 'cb/common-prefix-unification' 2011-10-10 15:56:17 -07:00
sh-i18n--envsubst.c Merge branch 'js/i18n-windows' 2011-06-29 17:03:13 -07:00
sha1_file.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
sha1_name.c Merge branch 'jc/broken-ref-dwim-fix' 2011-10-21 16:04:36 -07:00
sha1-array.c receive-pack: eliminate duplicate .have refs 2011-05-19 20:02:31 -07:00
sha1-array.h receive-pack: eliminate duplicate .have refs 2011-05-19 20:02:31 -07:00
sha1-lookup.c sha1-lookup: fix up the assertion message 2009-04-06 00:56:27 -07:00
sha1-lookup.h sha1-lookup: add new "sha1_pos" function to efficiently lookup sha1 2009-04-04 22:57:39 -07:00
shallow.c object.h: Add OBJECT_ARRAY_INIT macro and make use of it. 2010-08-29 22:42:49 -07:00
shell.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
shortlog.h pretty: Respect --abbrev option 2010-05-04 15:38:58 -07:00
show-index.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -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 Merge branch 'jk/credentials' 2011-12-19 16:05:16 -08:00
strbuf.h Merge branch 'jk/credentials' 2011-12-19 16:05:16 -08:00
streaming.c Merge branch 'jc/streaming-filter' 2011-08-01 15:00:29 -07:00
streaming.h Add streaming filter API 2011-05-26 16:47:15 -07:00
string-list.c string-list: Add API to remove an item from an unsorted list 2011-08-14 14:19:35 -07:00
string-list.h string-list: Add API to remove an item from an unsorted list 2011-08-14 14:19:35 -07:00
submodule.c Merge branch 'jl/submodule-status-failure-report' into maint 2011-12-21 11:42:45 -08:00
submodule.h submodule: Search for merges only at end of recursive merge 2011-10-13 10:18:16 -07:00
symlinks.c do not overwrite untracked symlinks 2011-02-21 22:51:07 -08:00
tag.c Split GPG interface into its own helper library 2011-11-04 21:40:25 -07:00
tag.h Add const to parse_{commit,tag}_buffer() 2011-02-07 15:04:42 -08:00
tar.h
test-chmtime.c Typofixes outside documentation area 2010-02-03 21:28:17 -08:00
test-credential.c introduce credentials API 2011-12-11 23:16:24 -08:00
test-ctype.c test-ctype: add test for is_pathspec_magic 2011-10-03 11:44:03 -07:00
test-date.c test-date: fix sscanf type conversion 2010-07-06 08:42:15 -07:00
test-delta.c Nicolas Pitre has a new email address 2009-09-14 02:23:36 -07:00
test-dump-cache-tree.c Refactor cache_tree_update idiom from commit 2011-12-06 14:57:36 -08:00
test-genrandom.c test-genrandom: ensure stdout is set to _O_BINARY on Windows 2009-09-21 00:36:12 -07:00
test-index-version.c Add test-index-version 2009-08-23 17:11:28 -07:00
test-line-buffer.c vcs-svn: remove buffer_read_string 2011-03-26 00:17:35 -05:00
test-match-trees.c
test-mktemp.c Improve error messages when temporary file creation fails 2010-12-21 19:51:17 -08:00
test-obj-pool.c Add memory pool library 2010-08-14 19:35:37 -07:00
test-parse-options.c parseopt: add OPT_NOOP_NOARG 2011-09-28 12:46:21 -07:00
test-path-utils.c test-path-utils: Add subcommand "prefix_path" 2011-08-04 15:57:18 -07:00
test-run-command.c tests: check error message from run_command 2011-04-20 10:08:54 -07:00
test-scrap-cache-tree.c Add test-scrap-cache-tree 2011-12-06 14:52:18 -08:00
test-sha1.c Convert existing die(..., strerror(errno)) to die_errno() 2009-06-27 11:14:53 -07:00
test-sha1.sh
test-sigchain.c
test-string-pool.c Add string-specific memory pool 2010-08-14 19:35:37 -07:00
test-subprocess.c Remove unused variables 2011-03-22 11:43:27 -07:00
test-svn-fe.c vcs-svn: Check for errors from open() 2010-11-24 14:51:42 -08:00
test-treap.c Fix a bitwise negation assignment issue spotted by Sun Studio 2011-12-21 10:19:40 -08:00
thread-utils.c Fix sparse warnings 2011-03-22 10:16:54 -07:00
thread-utils.h thread-utils.h: simplify the inclusion 2010-12-10 12:58:06 -08:00
trace.c Fix sparse warnings 2011-03-22 10:16:54 -07:00
transport-helper.c cleanup: use internal memory allocation wrapper functions everywhere 2011-10-06 13:54:32 -07:00
transport.c Merge branch 'maint' 2012-01-04 11:21:42 -08:00
transport.h push: Don't push a repository with unpushed submodules 2011-08-20 23:03:52 -07:00
tree-diff.c use custom rename score during --follow 2011-12-16 12:33:49 -08:00
tree-walk.c Document limited recursion pathspec matching with wildcards 2012-01-14 18:39:04 -08:00
tree-walk.h tree_entry_interesting(): give meaningful names to return values 2011-10-27 11:38:24 -07:00
tree.c tree_entry_interesting(): give meaningful names to return values 2011-10-27 11:38:24 -07:00
tree.h Convert read_tree{,_recursive} to support struct pathspec 2011-03-25 09:20:33 -07:00
unimplemented.sh Makefile: allow building without perl 2009-04-08 22:14:56 -07:00
unix-socket.c unix-socket: do not let close() or chdir() clobber errno during cleanup 2012-01-11 17:37:10 -08:00
unix-socket.h credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
unpack-trees.c tree-walk.c: do not leak internal structure in tree_entry_len() 2011-10-27 11:08:26 -07:00
unpack-trees.h Merge branch 'jc/diff-index-unpack' into maint 2011-10-15 20:46:36 -07:00
upload-pack.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
url.c Merge branch 'jk/http-auth' 2011-10-17 21:37:15 -07:00
url.h url: decode buffers that are not NUL-terminated 2011-07-20 11:38:34 -07:00
usage.c error_routine: use parent's stderr if exec fails 2011-07-31 18:27:07 -07:00
userdiff.c Merge branch 'tr/userdiff-c-returns-pointer' into maint 2011-12-21 11:42:45 -08:00
userdiff.h refactor get_textconv to not require diff_filespec 2011-05-23 15:46:02 -07:00
utf8.c strbuf: add fixed-length version of add_wrapped_text 2011-02-23 13:44:36 -08:00
utf8.h strbuf: add fixed-length version of add_wrapped_text 2011-02-23 13:44:36 -08:00
walker.c Change check_ref_format() to take a flags argument 2011-10-05 13:45:29 -07:00
walker.h http: init and cleanup separately from http-walker 2010-03-02 11:10:36 -08:00
wrap-for-bin.sh i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
wrapper.c read_in_full: always report errors 2011-05-26 13:54:18 -07:00
write_or_die.c Convert existing die(..., strerror(errno)) to die_errno() 2009-06-27 11:14:53 -07:00
ws.c Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
wt-status.c Convert resolve_ref+xstrdup to new resolve_refdup function 2011-12-13 09:26:52 -08:00
wt-status.h Merge branch 'jn/status-translatable' 2011-03-19 23:24:19 -07:00
xdiff-interface.c add, merge, diff: do not use strcasecmp to compare config variable names 2011-05-14 18:53:39 -07:00
xdiff-interface.h Merge branch 'maint-1.7.0' into maint 2010-05-04 15:20:47 -07:00
zlib.c bulk-checkin: replace fast-import based implementation 2011-12-01 11:46:09 -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.
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.