A fork of Git containing Microsoft-specific patches.
Перейти к файлу
Karsten Blees 95c6f27164 dir.c: unify is_excluded and is_path_excluded APIs
The is_excluded and is_path_excluded APIs are very similar, except for a
few noteworthy differences:

is_excluded doesn't handle ignored directories, results for paths within
ignored directories are incorrect. This is probably based on the premise
that recursive directory scans should stop at ignored directories, which
is no longer true (in certain cases, read_directory_recursive currently
calls is_excluded *and* is_path_excluded to get correct ignored state).

is_excluded caches parsed .gitignore files of the last directory in struct
dir_struct. If the directory changes, it finds a common parent directory
and is very careful to drop only as much state as necessary. On the other
hand, is_excluded will also read and parse .gitignore files in already
ignored directories, which are completely irrelevant.

is_path_excluded correctly handles ignored directories by checking if any
component in the path is excluded. As it uses is_excluded internally, this
unfortunately forces is_excluded to drop and re-read all .gitignore files,
as there is no common parent directory for the root dir.

is_path_excluded tracks state in a separate struct path_exclude_check,
which is essentially a wrapper of dir_struct with two more fields. However,
as is_path_excluded also modifies dir_struct, it is not possible to e.g.
use multiple path_exclude_check structures with the same dir_struct in
parallel. The additional structure just unnecessarily complicates the API.

Teach is_excluded / prep_exclude about ignored directories: whenever
entering a new directory, first check if the entire directory is excluded.
Remember the excluded state in dir_struct. Don't traverse into already
ignored directories (i.e. don't read irrelevant .gitignore files).

Directories could also be excluded by exclude patterns specified on the
command line or .git/info/exclude, so we cannot simply skip prep_exclude
entirely if there's no .gitignore file name (dir_struct.exclude_per_dir).
Move this check to just before actually reading the file.

is_path_excluded is now equivalent to is_excluded, so we can simply
redirect to it (the public API is cleaned up in the next patch).

The performance impact of the additional ignored check per directory is
hardly noticeable when reading directories recursively (e.g. 'git status').
However, performance of git commands using the is_path_excluded API (e.g.
'git ls-files --cached --ignored --exclude-standard') is greatly improved
as this no longer re-reads .gitignore files on each call.

Here's some performance data from the linux and WebKit repos (best of 10
runs on a Debian Linux on SSD, core.preloadIndex=true):

       | ls-files -ci   |    status      | status --ignored
       | linux | WebKit | linux | WebKit | linux | WebKit
-------+-------+--------+-------+--------+-------+---------
before | 0.506 |  6.539 | 0.212 |  1.555 | 0.323 |  2.541
after  | 0.080 |  1.191 | 0.218 |  1.583 | 0.321 |  2.579
gain   | 6.325 |  5.490 | 0.972 |  0.982 | 1.006 |  0.985

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-04-15 12:34:00 -07:00
Documentation Sync with 'maint' 2013-04-12 13:54:01 -07:00
block-sha1 Merge branch 'jn/block-sha1' into maint 2012-08-06 15:40:00 -07:00
builtin Merge branch 'po/help-guides' 2013-04-14 23:33:17 -07:00
compat Sync with 'maint' 2013-04-12 13:54:01 -07:00
contrib test-bzr: portable shell and utf-8 strings for Mac OS 2013-04-12 14:58:08 -07:00
git-gui git-gui 0.17.0 2012-10-17 15:55:46 -07:00
git_remote_helpers git_remote_helpers: remove GIT-PYTHON-VERSION upon "clean" 2013-01-30 12:34:55 -08:00
gitk-git Merge git://ozlabs.org/~paulus/gitk 2013-01-30 13:52:44 -08:00
gitweb Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
mergetools mergetools/p4merge: create a base if none available 2013-03-13 10:46:07 -07:00
perl Sync with 'maint' 2013-04-12 13:54:01 -07:00
po doc: various spelling fixes 2013-04-12 12:00:52 -07:00
ppc
t dir.c: git-clean -d -X: don't delete tracked directories 2013-04-15 12:34:00 -07:00
templates templates/hooks--update.sample: use a lowercase "usage:" string 2013-02-24 13:31:09 -08:00
vcs-svn remote-svn: add incremental import 2012-10-07 14:10:17 -07:00
xdiff Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
.gitattributes git-gui: set whitespace warnings appropriate to this project 2011-11-30 11:35:28 +00:00
.gitignore gitk: Ignore gitk-wish buildproduct 2013-01-30 21:12:16 +11:00
.mailmap mailmap: update Pasky's address 2013-04-04 13:03:34 -07:00
COPYING
GIT-VERSION-GEN Git 1.8.2.1 2013-04-07 15:27:23 -07:00
INSTALL Typo fix: replacing it's -> its 2013-04-11 17:39:05 -07:00
LGPL-2.1
Makefile Merge branch 'jk/common-make-variables-export-safety' 2013-04-01 08:59:47 -07:00
README Merge branch 'ta/doc-no-small-caps' 2013-02-05 16:13:32 -08:00
RelNotes Start preparing for 1.8.1.6 2013-04-03 09:12:11 -07:00
abspath.c Introduce new function real_path_if_valid() 2012-10-29 02:34:58 -04:00
aclocal.m4
advice.c branch: give advice when tracking start-point is missing 2013-04-02 16:14:13 -07:00
advice.h branch: give advice when tracking start-point is missing 2013-04-02 16:14:13 -07:00
alias.c
alloc.c
archive-tar.c archive-tar: use parse_config_key when parsing config 2013-01-23 08:41:50 -08:00
archive-zip.c archive-zip: use deflateInit2() to ask for raw compressed data 2013-03-16 22:07:02 -07:00
archive.c archive: handle commits with an empty tree 2013-03-10 22:25:22 -07:00
archive.h archive: delegate blob reading to backend 2012-05-03 10:22:56 -07:00
argv-array.c Merge branch 'fa/remote-svn' 2012-10-25 06:42:02 -04:00
argv-array.h Merge branch 'fa/remote-svn' 2012-10-25 06:42:02 -04:00
attr.c Sync with 1.8.1.6 2013-04-07 13:17:50 -07:00
attr.h correct a few doubled-word nits in comments and documentation 2012-03-28 11:18:35 -07:00
base85.c
bisect.c Merge branch 'jk/bisect-prn-unsigned' into maint 2013-04-12 13:41:46 -07:00
bisect.h Move print_commit_list to libgit.a 2012-10-29 03:08:30 -04:00
blob.c
blob.h
branch.c branch: give advice when tracking start-point is missing 2013-04-02 16:14:13 -07:00
branch.h checkout: suppress tracking message with "-q" 2012-03-26 21:32:43 -07:00
builtin.h Merge branch 'as/check-ignore' 2013-01-23 21:19:10 -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 'jk/fully-peeled-packed-ref' into maint-1.8.1 2013-04-03 08:43:03 -07:00
bundle.h Merge branch 'jc/unseekable-bundle' 2011-10-21 16:04:32 -07:00
cache-tree.c cache-tree: invalidate i-t-a paths after generating trees 2012-12-15 23:04:22 -08:00
cache-tree.h cache-tree: fix writing cache-tree when CE_REMOVE is present 2012-12-15 23:04:22 -08:00
cache.h Merge branch 'tb/shared-perm' 2013-04-07 14:33:11 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h
column.c column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
column.h column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
combine-diff.c combine-diff: coalesce lost lines optimally 2013-03-25 14:52:33 -07:00
command-list.txt Merge branch 'as/check-ignore' 2013-01-23 21:19:10 -08:00
commit.c Sync with 'maint' 2013-04-12 13:54:01 -07:00
commit.h Sync with 'maint' 2013-04-12 13:54:01 -07:00
config.c Merge branch 'jk/config-parsing-cleanup' 2013-02-04 10:24:50 -08:00
config.mak.in Merge branch 'jc/remove-export-from-config-mak-in' 2013-04-01 09:00:02 -07:00
config.mak.uname Merge branch 'rj/msvc-build' 2013-03-19 12:20:40 -07:00
configure.ac Revert "compat: add strtok_r()" 2013-02-26 09:16:58 -08:00
connect.c teach get_remote_heads to read from a memory buffer 2013-02-24 00:17:38 -08:00
connected.c fetch/receive: remove over-pessimistic connectivity check 2012-03-15 15:23:17 -07:00
connected.h check_everything_connected(): libify 2011-09-09 15:19:02 -07:00
convert.c convert some config callbacks to parse_config_key 2013-01-23 08:41:50 -08:00
convert.h teach convert_to_git a "dry run" mode 2012-02-24 14:11:27 -08:00
copy.c
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: convert "url" attribute into its parsed subparts 2012-07-18 13:26:58 -07:00
credential.h git credential fill: output the whole 'struct credential' 2012-06-25 11:56:24 -07: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 ctype: support iscntrl, ispunct, isxdigit and isprint 2012-10-15 14:58:16 -07:00
daemon.c Merge branch 'jk/pkt-line-cleanup' 2013-04-01 08:59:37 -07:00
date.c Fix time offset calculation in case of unsigned time_t 2013-02-25 14:29:12 -08:00
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c diff: do not use null sha1 as a sentinel value 2012-07-29 15:04:32 -07:00
diff-no-index.c Merge branch 'tr/void-diff-setup-done' into maint-1.7.11 2012-09-11 10:53:40 -07:00
diff.c Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
diff.h Merge branch 'mp/diff-algo-config' 2013-02-17 15:25:52 -08:00
diffcore-break.c diffcore-break: don't divide by zero 2013-04-03 12:48:02 -07:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c diffcore-pickaxe: unify code for log -S/-G 2013-04-05 10:31:09 -07:00
diffcore-rename.c Preallocate hash tables when the number of inserts are known in advance 2013-03-16 22:57:29 -07:00
diffcore.h Merge branch 'jk/maint-null-in-trees' into maint-1.7.11 2012-09-10 15:24:54 -07:00
dir.c dir.c: unify is_excluded and is_path_excluded APIs 2013-04-15 12:34:00 -07:00
dir.h dir.c: unify is_excluded and is_path_excluded APIs 2013-04-15 12:34:00 -07:00
editor.c run-command: encode signal death as a positive integer 2013-01-06 11:09:18 -08:00
entry.c Merge branch 'jk/check-corrupt-objects-carefully' 2013-04-03 09:34:29 -07:00
environment.c Merge branch 'jk/alias-in-bare' into maint 2013-04-03 09:25:41 -07:00
exec_cmd.c run-command: treat inaccessible directories as ENOENT 2012-04-05 16:24:13 -07:00
exec_cmd.h
fast-import.c fast-import: Fix an gcc -Wuninitialized warning 2013-03-29 23:46:55 -07:00
fetch-pack.c Merge branch 'jk/pkt-line-cleanup' 2013-04-01 08:59:37 -07:00
fetch-pack.h fetch: use struct ref to represent refs to be fetched 2013-02-07 13:53:59 -08: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: warn about ".git" in trees 2012-11-28 13:52:54 -08:00
fsck.h
generate-cmdlist.sh i18n: help: mark strings for translation 2012-04-24 14:55:48 -07:00
gettext.c fetch: align per-ref summary report in UTF-8 locales 2012-09-14 12:45:50 -07:00
gettext.h Merge branch 'nd/fetch-status-alignment' 2012-09-18 14:35:55 -07:00
git-add--interactive.perl Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
git-am.sh git-am: show the final log message on "Applying:" indicator 2013-03-21 08:09:35 -07:00
git-archimport.perl git-archimport: use a lowercase "usage:" string 2013-02-24 13:31:06 -08:00
git-bisect.sh Merge branch 'js/bisect-no-checkout' into maint 2011-11-01 16:03:35 -07:00
git-compat-util.h Make core.sharedRepository work under cygwin 1.7 2013-03-25 14:57:33 -07:00
git-cvsexportcommit.perl git-cvsexportcommit: use a lowercase "usage:" string 2013-02-24 13:31:07 -08:00
git-cvsimport.perl git-cvsimport: use a lowercase "usage:" string 2013-02-24 13:31:07 -08:00
git-cvsserver.perl Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
git-difftool--helper.sh difftool--helper: fix printf usage 2013-02-10 11:35:50 -08:00
git-difftool.perl difftool: don't overwrite modified files 2013-03-29 15:16:04 -07:00
git-filter-branch.sh Merge branch 'jk/filter-branch-come-back-to-original' 2013-04-07 14:29:34 -07:00
git-instaweb.sh
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh Merge branch 'kb/p4merge' 2013-03-26 13:15:24 -07:00
git-merge-resolve.sh
git-mergetool--lib.sh doc: generate a list of valid merge tools 2013-02-02 21:46:52 -08:00
git-mergetool.sh Merge branch 'al/mergetool-printf-fix' 2013-02-14 10:29:37 -08:00
git-p4.py git p4: avoid expanding client paths in chdir 2013-03-11 15:03:11 -07:00
git-parse-remote.sh push/pull: adjust missing upstream help text to changed interface 2012-11-08 11:32:38 -05:00
git-pull.sh merge/pull: verify GPG signatures of commits being merged 2013-03-31 19:23:59 -07:00
git-quiltimport.sh Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
git-rebase--am.sh rebase: Handle cases where format-patch fails 2012-10-11 11:54:49 -07:00
git-rebase--interactive.sh Merge branch 'jk/rebase-i-comment-char' 2013-02-17 15:25:20 -08:00
git-rebase--merge.sh rebase: don't source git-sh-setup twice 2012-06-26 13:17:50 -07:00
git-rebase.sh rebase -i: Teach "--edit-todo" action 2012-09-17 20:59:14 -07:00
git-relink.perl git-relink: use a lowercase "usage:" string 2013-02-24 13:31:06 -08:00
git-remote-testgit remote-testgit: implement the "done" feature manually 2012-11-29 12:18:45 -08:00
git-remote-testpy.py git-remote-testpy: fix path hashing on Python 3 2013-01-28 09:55:14 -08:00
git-repack.sh gc: do not explode objects which will be immediately pruned 2012-04-11 11:09:49 -07:00
git-request-pull.sh request-pull: really favor a matching tag 2012-06-01 12:38:19 -07:00
git-send-email.perl Merge branch 'rr/send-email-perl-critique' 2013-04-05 14:14:49 -07:00
git-sh-i18n.sh i18n: fix auto detection of gettext scheme for shell scripts 2012-03-12 14:41:15 -07:00
git-sh-setup.sh Merge branch 'kb/p4merge' 2013-03-26 13:15:24 -07:00
git-stash.sh Merge branch 'ph/stash-rerere' into maint-1.7.11 2012-09-11 11:10:12 -07:00
git-submodule.sh Merge branch 'jl/submodule-deinit' 2013-04-05 14:15:13 -07:00
git-svn.perl git-svn: use a lowercase "usage:" string 2013-02-24 21:30:03 -08:00
git-web--browse.sh git-web--browse: recognize any TERM_PROGRAM as a GUI terminal on OS X 2013-03-29 15:24:31 -07:00
git.c Merge branch 'jk/alias-in-bare' into maint 2013-04-03 09:25:41 -07:00
git.spec.in spec: add missing build dependency 2012-04-06 10:15:11 -07:00
gpg-interface.c Merge branch 'mg/gpg-interface-using-status' into maint 2013-04-03 09:26:27 -07:00
gpg-interface.h merge/pull Check for untrusted good GPG signatures 2013-03-31 22:38:49 -07:00
graph.c Revert "graph.c: mark private file-scope symbols as static" 2013-03-03 19:43:54 -08:00
graph.h Revert "graph.c: mark private file-scope symbols as static" 2013-03-03 19:43:54 -08:00
grep.c fix clang -Wtautological-compare with unsigned enum 2013-02-25 07:35:55 -08:00
grep.h fix clang -Wtautological-compare with unsigned enum 2013-02-25 07:35:55 -08:00
hash.c
hash.h Preallocate hash tables when the number of inserts are known in advance 2013-03-16 22:57:29 -07:00
help.c help: include <common-cmds.h> only in one file 2013-01-18 22:35:04 -08:00
help.h Merge branch 'nd/columns' 2012-05-03 15:13:31 -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 pkt-line: drop safe_write function 2013-02-20 13:42:21 -08:00
http-fetch.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-push.c Allow building with xmlparse.h 2013-02-11 14:33:04 -08:00
http-walker.c Rename static function fetch_pack() to http_fetch_pack() 2012-09-12 11:46:31 -07:00
http.c pkt-line: move LARGE_PACKET_MAX definition from sideband 2013-02-20 13:42:22 -08:00
http.h Verify Content-Type from smart HTTP servers 2013-02-04 10:22:36 -08:00
ident.c Merge branch 'jn/do-not-drop-username-when-reading-from-etc-mailname' into maint 2013-02-04 10:04:26 -08:00
imap-send.c Merge branch 'ob/imap-send-ssl-verify' into maint-1.8.1 2013-04-03 08:35:33 -07:00
kwset.c kwset: fix spelling in comments 2013-04-12 12:25:08 -07:00
kwset.h
levenshtein.c
levenshtein.h
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 convert some config callbacks to parse_config_key 2013-01-23 08:41:50 -08:00
ll-merge.h
lockfile.c
log-tree.c Merge branch 'mg/gpg-interface-using-status' into maint 2013-04-03 09:26:27 -07:00
log-tree.h get_patch_filename(): split into two functions 2012-12-21 23:55:40 -08:00
mailmap.c Merge branch 'ap/log-mailmap' 2013-01-20 17:06:53 -08:00
mailmap.h mailmap: simplify map_user() interface 2013-01-10 12:33:08 -08:00
match-trees.c match-trees: simplify score_trees() using tree_entry() 2013-03-25 09:00:30 -07:00
merge-blobs.c Which merge_file() function do you mean? 2012-12-09 23:05:27 -08:00
merge-blobs.h Which merge_file() function do you mean? 2012-12-09 23:05:27 -08:00
merge-recursive.c diff: Introduce --diff-algorithm command line option 2013-01-16 09:41:18 -08:00
merge-recursive.h Move try_merge_command and checkout_fast_forward to libgit.a 2012-10-29 03:08:30 -04:00
merge.c Move try_merge_command and checkout_fast_forward to libgit.a 2012-10-29 03:08:30 -04:00
mergesort.c mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
mergesort.h mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
name-hash.c Sync with 1.8.1 maintenance track 2013-04-03 09:18:01 -07:00
notes-cache.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-cache.h
notes-merge.c Sync with 1.7.11.6 2012-09-11 11:23:54 -07:00
notes-merge.h Convert commit_tree() to take strbuf as message 2011-12-15 10:46:42 -08:00
notes.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
notes.h format_note(): simplify API 2012-10-17 22:42:40 -07:00
object.c avoid segfaults on parse_object failure 2013-03-17 12:49:03 -07:00
object.h avoid segfaults on parse_object failure 2013-03-17 12:49:03 -07:00
pack-check.c fsck: print progress 2011-11-06 20:31:28 -08:00
pack-refs.c pack-refs: add fully-peeled trait 2013-03-18 08:06:28 -07:00
pack-refs.h
pack-revindex.c
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 Move setup_diff_pager to libgit.a 2012-10-29 03:08:30 -04:00
parse-options-cb.c parseopt: add OPT_NOOP_NOARG 2011-09-28 12:46:21 -07:00
parse-options.c Merge branch 'ef/non-ascii-parse-options-error-diag' into maint 2013-02-27 10:04:26 -08:00
parse-options.h fix clang -Wunused-value warnings for error functions 2013-01-16 12:47:46 -08:00
patch-delta.c
patch-ids.c diff_setup_done(): return void 2012-08-03 12:11:07 -07:00
patch-ids.h
path.c path.c: optimize adjust_shared_perm() 2013-04-05 12:39:38 -07:00
pathspec.c add.c: extract new die_if_path_beyond_symlink() for reuse 2013-01-06 14:26:37 -08:00
pathspec.h add.c: extract new die_if_path_beyond_symlink() for reuse 2013-01-06 14:26:37 -08:00
pkt-line.c pkt-line: share buffer/descriptor reading implementation 2013-02-24 00:14:15 -08:00
pkt-line.h pkt-line: share buffer/descriptor reading implementation 2013-02-24 00:14:15 -08:00
preload-index.c
pretty.c Merge branch 'mg/gpg-interface-using-status' into maint 2013-04-03 09:26:27 -07:00
progress.c
progress.h
prompt.c prompt: fall back to terminal if askpass fails 2012-02-03 14:37:04 -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 use parse_object_or_die instead of die("bad object") 2013-03-17 12:52:14 -07:00
reachable.h prune: show progress while marking reachable objects 2011-11-07 22:12:19 -08:00
read-cache.c Sync with 1.8.1 maintenance track 2013-04-03 09:18:01 -07:00
reflog-walk.c Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint 2012-05-14 11:46:16 -07:00
reflog-walk.h Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint 2012-05-14 11:46:16 -07:00
refs.c Sync with 1.8.1 maintenance track 2013-04-03 09:18:01 -07:00
refs.h Merge branch 'jc/reflog-reverse-walk' 2013-03-26 13:15:56 -07:00
remote-curl.c remote-curl: always parse incoming refs 2013-02-24 00:17:38 -08:00
remote-testsvn.c remote-testsvn: fix unitialized variable 2012-12-15 10:43:11 -08:00
remote.c remote.c: introduce branch.<name>.pushremote 2013-04-02 10:41:43 -07:00
remote.h remote.c: introduce a way to have different remotes for fetch/push 2013-04-02 10:41:42 -07:00
replace_object.c
rerere.c rerere forget: do not segfault if not all stages are present 2013-04-04 12:27:28 -07:00
rerere.h rerere.c: mark private file-scope symbols as static 2012-09-15 22:58:20 -07:00
resolve-undo.c checkout: avoid unnecessary match_pathspec calls 2013-03-27 08:53:15 -07:00
resolve-undo.h checkout: avoid unnecessary match_pathspec calls 2013-03-27 08:53:15 -07:00
revision.c Revert 4b7f53da76 (simplify-merges: drop merge from irrelevant side branch, 2013-01-17) 2013-04-08 13:10:27 -07:00
revision.h Merge branch 'bc/append-signed-off-by' 2013-04-01 08:59:24 -07:00
run-command.c run-command: always set failed_errno in start_command 2013-03-21 14:06:48 -07:00
run-command.h hooks: Add function to check if a hook exists 2013-01-14 09:25:40 -08:00
send-pack.c pkt-line: provide a LARGE_PACKET_MAX static buffer 2013-02-20 13:42:22 -08:00
send-pack.h
sequencer.c Sync with 'maint' 2013-04-12 13:54:01 -07:00
sequencer.h sequencer.c: teach append_signoff how to detect duplicate s-o-b 2013-02-12 11:17:10 -08:00
server-info.c
setup.c Merge branch 'jk/alias-in-bare' into maint 2013-04-03 09:25:41 -07:00
sh-i18n--envsubst.c
sha1-array.c sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
sha1-array.h sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
sha1-lookup.c
sha1-lookup.h
sha1_file.c Merge branch 'jk/check-corrupt-objects-carefully' 2013-04-03 09:34:29 -07:00
sha1_name.c Merge branch 'jc/sha1-name-object-peeler' 2013-04-03 09:34:54 -07:00
shallow.c upload-pack: fix off-by-one depth calculation in shallow clone 2013-01-11 09:10:57 -08:00
shell.c shell: new no-interactive-login command to print a custom message 2013-03-09 23:21:35 -08:00
shortlog.h
show-index.c i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
sideband.c pkt-line: share buffer/descriptor reading implementation 2013-02-24 00:14:15 -08:00
sideband.h pkt-line: move LARGE_PACKET_MAX definition from sideband 2013-02-20 13:42:22 -08:00
sigchain.c
sigchain.h
strbuf.c Allow custom "comment char" 2013-01-16 12:48:22 -08:00
strbuf.h Allow custom "comment char" 2013-01-16 12:48:22 -08:00
streaming.c avoid infinite loop in read_istream_loose 2013-03-27 13:47:02 -07:00
streaming.h streaming: void pointer instead of char pointer 2012-05-03 10:22:56 -07:00
string-list.c Merge branch 'mh/ceiling' into maint 2013-01-28 11:07:18 -08:00
string-list.h Merge branch 'mh/ceiling' into maint 2013-01-28 11:07:18 -08:00
submodule.c submodule: clarify logic in show_submodule_summary 2013-03-22 14:09:55 -07:00
submodule.h submodule: display summary header in bold 2012-11-18 19:18:13 -08:00
symlinks.c symlinks.c: mark private file-scope symbols as static 2012-09-15 22:58:21 -07:00
tag.c upload-pack: avoid parsing tag destinations 2012-01-06 13:28:57 -08:00
tag.h upload-pack: avoid parsing tag destinations 2012-01-06 13:28:57 -08:00
tar.h
test-chmtime.c tests: use a lowercase "usage:" string 2013-02-24 21:30:10 -08:00
test-ctype.c test-ctype: add test for is_pathspec_magic 2011-10-03 11:44:03 -07:00
test-date.c i18n: mark relative dates for translation 2012-04-24 14:55:48 -07:00
test-delta.c tests: use a lowercase "usage:" string 2013-02-24 21:30:10 -08:00
test-dump-cache-tree.c cache-tree: update API to take abitrary flags 2012-02-07 16:35:43 -08:00
test-genrandom.c tests: use a lowercase "usage:" string 2013-02-24 21:30:10 -08:00
test-index-version.c
test-line-buffer.c vcs-svn: drop no-op reset methods 2012-07-05 23:26:51 -05:00
test-match-trees.c
test-mergesort.c mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
test-mktemp.c
test-parse-options.c test-parse-options: convert to OPT_BOOL() 2012-02-26 15:18:41 -08:00
test-path-utils.c longest_ancestor_length(): require prefix list entries to be normalized 2012-10-29 02:34:58 -04:00
test-regex.c test-regex: Add a test to check for a bug in the regex routines 2012-09-02 18:57:21 -07:00
test-revision-walking.c Teach revision walking machinery to walk multiple times sequencially 2012-03-30 08:57:49 -07:00
test-run-command.c
test-scrap-cache-tree.c Add test-scrap-cache-tree 2011-12-06 14:52:18 -08:00
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-list.c string_list_longest_prefix(): remove function 2012-10-29 02:34:58 -04:00
test-subprocess.c test-subprocess: fix segfault without arguments 2012-04-10 12:28:20 -07:00
test-svn-fe.c msvc: test-svn-fe: Fix linker "unresolved external" error 2013-02-25 12:40:34 -08:00
test-wildmatch.c Makefile: add USE_WILDMATCH to use wildmatch as fnmatch 2013-01-01 15:32:37 -08:00
thread-utils.c
thread-utils.h
trace.c trace.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
transport-helper.c Correct common spelling mistakes in comments and tests 2013-04-12 13:38:40 -07:00
transport.c Merge branch 'jk/pkt-line-cleanup' 2013-04-01 08:59:37 -07:00
transport.h Sync with 'maint' 2013-04-12 13:54:01 -07:00
tree-diff.c Merge branch 'tr/void-diff-setup-done' into maint-1.7.11 2012-09-11 10:53:40 -07:00
tree-walk.c tree_entry_interesting: do basedir compare on wildcard patterns when possible 2012-11-26 11:16:34 -08:00
tree-walk.h tree_entry_interesting(): give meaningful names to return values 2011-10-27 11:38:24 -07:00
tree.c Strip namelen out of ce_flags into a ce_namelen field 2012-07-11 09:42:45 -07:00
tree.h
unimplemented.sh
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 Merge branch 'as/check-ignore' 2013-01-23 21:19:10 -08:00
unpack-trees.h unpack-trees.c: use path_excluded() in check_ok_to_remove() 2012-06-05 22:21:42 -07:00
upload-pack.c Merge branch 'jk/peel-ref' into maint 2013-04-04 12:59:55 -07:00
url.c Merge branch 'jk/http-auth' 2011-10-17 21:37:15 -07:00
url.h
usage.c make error()'s constant return value more visible 2012-12-15 10:45:58 -08:00
userdiff.c userdiff: drop parse_driver function 2013-01-23 08:41:51 -08:00
userdiff.h
utf8.c Merge branch 'ks/rfc2047-one-char-at-a-time' into maint 2013-04-03 09:25:29 -07:00
utf8.h Merge branch 'ks/rfc2047-one-char-at-a-time' into maint 2013-04-03 09:25:29 -07:00
varint.c varint: make it available outside the context of pack 2012-04-03 16:24:44 -07:00
varint.h varint: make it available outside the context of pack 2012-04-03 16:24:44 -07:00
version.c include agent identifier in capability string 2012-08-03 13:03:34 -07:00
version.h include agent identifier in capability string 2012-08-03 13:03:34 -07:00
walker.c Change check_ref_format() to take a flags argument 2011-10-05 13:45:29 -07:00
walker.h
wildmatch.c wildmatch: advance faster in <asterisk> + <literal> patterns 2013-01-01 15:32:37 -08:00
wildmatch.h wildmatch: support "no FNM_PATHNAME" mode 2013-01-01 15:32:37 -08:00
wrap-for-bin.sh i18n: add infrastructure for translating Git with gettext 2011-12-05 20:46:55 -08:00
wrapper.c Merge branch 'jn/warn-on-inaccessible-loosen' into maint 2013-01-11 16:47:07 -08:00
write_or_die.c write_or_die: raise SIGPIPE when we get EPIPE 2013-02-20 13:42:21 -08:00
ws.c
wt-status.c dir.c: git-ls-files --directories: don't hide empty directories 2013-04-15 12:33:59 -07:00
wt-status.h status: show commit sha1 in "You are currently reverting" message 2013-04-02 14:22:56 -07:00
xdiff-interface.c xdiff: remove emit_func() and xdi_diff_hunks() 2012-05-09 14:08:42 -07:00
xdiff-interface.h xdiff: remove emit_func() and xdi_diff_hunks() 2012-05-09 14:08:42 -07:00
zlib.c archive-zip: use deflateInit2() to ask for raw compressed data 2013-03-16 22:07:02 -07:00

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 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/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 (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.