1
0
mirror of https://github.com/git/git.git synced 2024-10-22 14:48:15 +02:00
Git Source Code Mirror. Please follow Documentation/SubmittingPatches procedure for any of your improvements.
Go to file
Nguyễn Thái Ngọc Duy 9e5972413b update-index: manually enable or disable untracked cache
Overall time saving on "git status" is about 40% in the best case
scenario, removing ..collect_untracked() as the most time consuming
function. read and refresh index operations are now at the top (which
should drop when index-helper and/or watchman support is added). More
numbers and analysis below.

webkit.git
==========

169k files. 6k dirs. Lots of test data (i.e. not touched most of the
time)

Base status
-----------

Index version 4 in split index mode and cache-tree populated. No
untracked cache. It shows how time is consumed by "git status". The
same settings are used for other repos below.

18:28:10.199679 builtin/commit.c:1394   performance: 0.000000451 s: cmd_status:setup
18:28:10.474847 read-cache.c:1407       performance: 0.274873831 s: read_index
18:28:10.475295 read-cache.c:1407       performance: 0.000000656 s: read_index
18:28:10.728443 preload-index.c:131     performance: 0.253147487 s: read_index_preload
18:28:10.741422 read-cache.c:1254       performance: 0.012868340 s: refresh_index
18:28:10.752300 wt-status.c:623         performance: 0.010421357 s: wt_status_collect_changes_worktree
18:28:10.762069 wt-status.c:629         performance: 0.009644748 s: wt_status_collect_changes_index
18:28:11.601019 wt-status.c:632         performance: 0.838859547 s: wt_status_collect_untracked
18:28:11.605939 builtin/commit.c:1421   performance: 0.004835004 s: cmd_status:update_index
18:28:11.606580 trace.c:415             performance: 1.407878388 s: git command: 'git' 'status'

Populating status
-----------------

This is after enabling untracked cache and the cache is still empty.
We see a slight increase in .._collect_untracked() and update_index
(because new cache has to be written to $GIT_DIR/index).

18:28:18.915213 builtin/commit.c:1394   performance: 0.000000326 s: cmd_status:setup
18:28:19.197364 read-cache.c:1407       performance: 0.281901416 s: read_index
18:28:19.197754 read-cache.c:1407       performance: 0.000000546 s: read_index
18:28:19.451355 preload-index.c:131     performance: 0.253599607 s: read_index_preload
18:28:19.464400 read-cache.c:1254       performance: 0.012935336 s: refresh_index
18:28:19.475115 wt-status.c:623         performance: 0.010236920 s: wt_status_collect_changes_worktree
18:28:19.486022 wt-status.c:629         performance: 0.010801685 s: wt_status_collect_changes_index
18:28:20.362660 wt-status.c:632         performance: 0.876551366 s: wt_status_collect_untracked
18:28:20.396199 builtin/commit.c:1421   performance: 0.033447969 s: cmd_status:update_index
18:28:20.396939 trace.c:415             performance: 1.482695902 s: git command: 'git' 'status'

Populated status
----------------

After the cache is populated, wt_status_collect_untracked() drops 82%
from 0.838s to 0.144s. Overall time drops 45%. Top offenders are now
read_index() and read_index_preload().

18:28:20.408605 builtin/commit.c:1394   performance: 0.000000457 s: cmd_status:setup
18:28:20.692864 read-cache.c:1407       performance: 0.283980458 s: read_index
18:28:20.693273 read-cache.c:1407       performance: 0.000000661 s: read_index
18:28:20.958814 preload-index.c:131     performance: 0.265540254 s: read_index_preload
18:28:20.972375 read-cache.c:1254       performance: 0.013437429 s: refresh_index
18:28:20.983959 wt-status.c:623         performance: 0.011146646 s: wt_status_collect_changes_worktree
18:28:20.993948 wt-status.c:629         performance: 0.009879094 s: wt_status_collect_changes_index
18:28:21.138125 wt-status.c:632         performance: 0.144084737 s: wt_status_collect_untracked
18:28:21.173678 builtin/commit.c:1421   performance: 0.035463949 s: cmd_status:update_index
18:28:21.174251 trace.c:415             performance: 0.766707355 s: git command: 'git' 'status'

gentoo-x86.git
==============

This repository is a strange one with a balanced, wide and shallow
worktree (about 100k files and 23k dirs) and no .gitignore in
worktree. .._collect_untracked() time drops 88%, total time drops 56%.

Base status
-----------
18:20:40.828642 builtin/commit.c:1394   performance: 0.000000496 s: cmd_status:setup
18:20:41.027233 read-cache.c:1407       performance: 0.198130532 s: read_index
18:20:41.027670 read-cache.c:1407       performance: 0.000000581 s: read_index
18:20:41.171716 preload-index.c:131     performance: 0.144045594 s: read_index_preload
18:20:41.179171 read-cache.c:1254       performance: 0.007320424 s: refresh_index
18:20:41.185785 wt-status.c:623         performance: 0.006144638 s: wt_status_collect_changes_worktree
18:20:41.192701 wt-status.c:629         performance: 0.006780184 s: wt_status_collect_changes_index
18:20:41.991723 wt-status.c:632         performance: 0.798927029 s: wt_status_collect_untracked
18:20:41.994664 builtin/commit.c:1421   performance: 0.002852772 s: cmd_status:update_index
18:20:41.995458 trace.c:415             performance: 1.168427502 s: git command: 'git' 'status'
Populating status
-----------------
18:20:48.968848 builtin/commit.c:1394   performance: 0.000000380 s: cmd_status:setup
18:20:49.172918 read-cache.c:1407       performance: 0.203734214 s: read_index
18:20:49.173341 read-cache.c:1407       performance: 0.000000562 s: read_index
18:20:49.320013 preload-index.c:131     performance: 0.146671391 s: read_index_preload
18:20:49.328039 read-cache.c:1254       performance: 0.007921957 s: refresh_index
18:20:49.334680 wt-status.c:623         performance: 0.006172020 s: wt_status_collect_changes_worktree
18:20:49.342526 wt-status.c:629         performance: 0.007731746 s: wt_status_collect_changes_index
18:20:50.257510 wt-status.c:632         performance: 0.914864222 s: wt_status_collect_untracked
18:20:50.338371 builtin/commit.c:1421   performance: 0.080776477 s: cmd_status:update_index
18:20:50.338900 trace.c:415             performance: 1.371462446 s: git command: 'git' 'status'
Populated status
----------------
18:20:50.351160 builtin/commit.c:1394   performance: 0.000000571 s: cmd_status:setup
18:20:50.577358 read-cache.c:1407       performance: 0.225917338 s: read_index
18:20:50.577794 read-cache.c:1407       performance: 0.000000617 s: read_index
18:20:50.734140 preload-index.c:131     performance: 0.156345564 s: read_index_preload
18:20:50.745717 read-cache.c:1254       performance: 0.011463075 s: refresh_index
18:20:50.755176 wt-status.c:623         performance: 0.008877929 s: wt_status_collect_changes_worktree
18:20:50.763768 wt-status.c:629         performance: 0.008471633 s: wt_status_collect_changes_index
18:20:50.854885 wt-status.c:632         performance: 0.090988721 s: wt_status_collect_untracked
18:20:50.857765 builtin/commit.c:1421   performance: 0.002789097 s: cmd_status:update_index
18:20:50.858411 trace.c:415             performance: 0.508647673 s: git command: 'git' 'status'

linux-2.6
=========

Reference repo. Not too big. .._collect_status() drops 84%. Total time
drops 42%.

Base status
-----------
18:34:09.870122 builtin/commit.c:1394   performance: 0.000000385 s: cmd_status:setup
18:34:09.943218 read-cache.c:1407       performance: 0.072871177 s: read_index
18:34:09.943614 read-cache.c:1407       performance: 0.000000491 s: read_index
18:34:10.004364 preload-index.c:131     performance: 0.060748102 s: read_index_preload
18:34:10.008190 read-cache.c:1254       performance: 0.003714285 s: refresh_index
18:34:10.012087 wt-status.c:623         performance: 0.002775446 s: wt_status_collect_changes_worktree
18:34:10.016054 wt-status.c:629         performance: 0.003862140 s: wt_status_collect_changes_index
18:34:10.214747 wt-status.c:632         performance: 0.198604837 s: wt_status_collect_untracked
18:34:10.216102 builtin/commit.c:1421   performance: 0.001244166 s: cmd_status:update_index
18:34:10.216817 trace.c:415             performance: 0.347670735 s: git command: 'git' 'status'
Populating status
-----------------
18:34:16.595102 builtin/commit.c:1394   performance: 0.000000456 s: cmd_status:setup
18:34:16.666600 read-cache.c:1407       performance: 0.070992413 s: read_index
18:34:16.667012 read-cache.c:1407       performance: 0.000000606 s: read_index
18:34:16.729375 preload-index.c:131     performance: 0.062362492 s: read_index_preload
18:34:16.732565 read-cache.c:1254       performance: 0.003075517 s: refresh_index
18:34:16.736148 wt-status.c:623         performance: 0.002422201 s: wt_status_collect_changes_worktree
18:34:16.739990 wt-status.c:629         performance: 0.003746618 s: wt_status_collect_changes_index
18:34:16.948505 wt-status.c:632         performance: 0.208426710 s: wt_status_collect_untracked
18:34:16.961744 builtin/commit.c:1421   performance: 0.013151887 s: cmd_status:update_index
18:34:16.962233 trace.c:415             performance: 0.368537535 s: git command: 'git' 'status'
Populated status
----------------
18:34:16.970026 builtin/commit.c:1394   performance: 0.000000631 s: cmd_status:setup
18:34:17.046235 read-cache.c:1407       performance: 0.075904673 s: read_index
18:34:17.046644 read-cache.c:1407       performance: 0.000000681 s: read_index
18:34:17.113564 preload-index.c:131     performance: 0.066920253 s: read_index_preload
18:34:17.117281 read-cache.c:1254       performance: 0.003604055 s: refresh_index
18:34:17.121115 wt-status.c:623         performance: 0.002508345 s: wt_status_collect_changes_worktree
18:34:17.125089 wt-status.c:629         performance: 0.003871636 s: wt_status_collect_changes_index
18:34:17.156089 wt-status.c:632         performance: 0.030895703 s: wt_status_collect_untracked
18:34:17.169861 builtin/commit.c:1421   performance: 0.013686404 s: cmd_status:update_index
18:34:17.170391 trace.c:415             performance: 0.201474531 s: git command: 'git' 'status'

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-03-12 13:45:18 -07:00
block-sha1
builtin update-index: manually enable or disable untracked cache 2015-03-12 13:45:18 -07:00
compat Merge branch 'dm/compat-s-ifmt-for-zos' 2014-12-22 12:27:16 -08:00
contrib Merge branch 'av/wincred-with-at-in-username-fix' into maint 2015-03-05 13:13:04 -08:00
Documentation update-index: manually enable or disable untracked cache 2015-03-12 13:45:18 -07:00
ewah ewah: add convenient wrapper ewah_serialize_strbuf() 2015-03-12 13:45:16 -07:00
git-gui
gitk-git Merge git://ozlabs.org/~paulus/gitk 2014-10-30 10:07:33 -07:00
gitweb gitweb: hack around CGI's list-context param() handling 2014-11-18 11:23:10 -08:00
mergetools mergetools: stop setting $status in merge_cmd() 2014-11-21 11:27:53 -08:00
perl Merge branch 'ew/svn-maint-fixes' into maint 2015-03-06 14:57:55 -08:00
po l10n: ca.po: Fix trailing whitespace 2015-01-30 15:02:34 -07:00
ppc
t Merge branch 'jk/diffcore-rename-duplicate' 2015-03-10 13:52:39 -07:00
templates pre-push.sample: remove unnecessary and misleading IFS=' ' 2014-12-22 10:27:42 -08:00
vcs-svn
xdiff
.gitattributes
.gitignore Merge branch 'cc/interpret-trailers' 2014-10-20 12:25:32 -07:00
.mailmap .mailmap: add Stefan Bellers corporate mail address 2014-10-21 11:01:27 -07:00
abspath.c
aclocal.m4
advice.c standardize usage info string format 2015-01-14 09:32:04 -08:00
advice.h
alias.c
alloc.c
archive-tar.c Revert "archive: honor tar.umask even for pax headers" 2014-10-20 12:04:46 -07:00
archive-zip.c
archive.c standardize usage info string format 2015-01-14 09:32:04 -08:00
archive.h
argv-array.c
argv-array.h
attr.c attr: avoid heavy work when we know the specified attr is not defined 2014-12-29 12:40:48 -08:00
attr.h
base85.c
bisect.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
bisect.h
blob.c
blob.h
branch.c ref_transaction_update(): remove "have_old" parameter 2015-02-17 11:22:50 -08:00
branch.h
builtin.h trailer: add interpret-trailers command 2014-10-13 13:55:27 -07:00
bulk-checkin.c
bulk-checkin.h
bundle.c bundle: split out ref writing from bundle_create 2014-10-30 14:52:45 -07:00
bundle.h
cache-tree.c Merge branch 'jk/cache-tree-protect-from-broken-libgit2' 2014-11-06 10:51:35 -08:00
cache-tree.h
cache.h untracked cache: mark index dirty if untracked cache is updated 2015-03-12 13:45:17 -07:00
check_bindir
check-builtins.sh check-builtins: strip executable suffix $X when enumerating builtins 2015-02-05 12:03:27 -08:00
check-racy.c
color.c parse_color: fix return value for numeric color values 0-8 2015-01-20 15:56:03 -08:00
color.h parse_color: recognize "no$foo" to clear the $foo attribute 2014-11-20 12:42:55 -08:00
column.c use child_process_init() to initialize struct child_process variables 2014-10-28 14:56:17 -07:00
column.h
combine-diff.c
command-list.txt Documentation: add documentation for 'git interpret-trailers' 2014-10-13 13:59:49 -07:00
commit-slab.h
commit.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
commit.h shallow.c: make check_shallow_file_for_update() static 2015-01-15 11:05:48 -08:00
config.c Merge branch 'jk/config-no-ungetc-eof' into maint 2015-03-05 13:13:00 -08:00
config.mak.in
config.mak.uname configure.ac: check for clock_gettime and CLOCK_MONOTONIC 2015-01-09 15:33:39 -08:00
configure.ac configure.ac: check for HMAC_CTX_cleanup 2015-01-09 15:33:57 -08:00
connect.c Merge branch 'rs/simple-cleanups' into maint 2015-03-06 14:57:57 -08:00
connect.h
connected.c
connected.h
convert.c
convert.h
copy.c
COPYING
credential-cache--daemon.c
credential-cache.c
credential-store.c standardize usage info string format 2015-01-14 09:32:04 -08:00
credential.c Merge branch 'jk/credential-quit' 2014-12-22 12:27:20 -08:00
credential.h credential: let helpers tell us to quit 2014-12-04 10:11:12 -08:00
csum-file.c
csum-file.h Merge branch 'jk/pack-bitmap' 2014-12-12 14:31:42 -08:00
ctype.c kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
daemon.c Merge branch 'jk/daemon-interpolate' 2015-03-03 14:37:06 -08:00
date.c Merge branch 'jk/approxidate-avoid-y-d-m-over-future-dates' into maint 2015-01-12 14:01:18 -08:00
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c run_diff_files(): clarify computation of sha1 validity 2015-02-04 14:27:01 -08:00
diff-no-index.c
diff.c Merge branch 'mk/diff-shortstat-dirstat-fix' 2015-03-06 15:02:29 -08:00
diff.h
diffcore-break.c diff -B -M: fix output for "copy and then rewrite" case 2014-10-23 16:17:09 -07:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c Merge branch 'jk/diffcore-rename-duplicate' 2015-03-10 13:52:39 -07:00
diffcore.h
dir.c untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE 2015-03-12 13:45:17 -07:00
dir.h untracked cache: invalidate at index addition or removal 2015-03-12 13:45:16 -07:00
editor.c
entry.c
environment.c Sync with v2.0.5 2014-12-17 11:42:28 -08:00
exec_cmd.c Merge branch 'jc/exec-cmd-system-path-leak-fix' 2014-12-22 12:27:01 -08:00
exec_cmd.h system_path(): always return free'able memory to the caller 2014-11-30 16:39:47 -08:00
fast-import.c Merge branch 'jk/fast-import-die-nicely-fix' into maint 2015-03-05 13:13:13 -08:00
fetch-pack.c
fetch-pack.h
fmt-merge-msg.h
fsck.c Merge branch 'js/fsck-tag-validation' 2014-12-22 12:27:41 -08:00
fsck.h
generate-cmdlist.sh
gettext.c gettext.c: move get_preferred_languages() from http.c 2015-02-26 14:09:20 -08:00
gettext.h Merge branch 'ye/http-accept-language' 2015-03-06 15:02:25 -08:00
git-add--interactive.perl Merge branch 'ak/add-i-empty-candidates' into maint 2015-02-24 22:10:42 -08:00
git-am.sh git-am: add --message-id/--no-message-id 2014-11-25 15:27:01 -08:00
git-archimport.perl
git-bisect.sh standardize usage info string format 2015-01-14 09:32:04 -08:00
git-compat-util.h Merge branch 'bw/kwset-use-unsigned' 2015-03-06 15:02:33 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh difftool--helper: add explicit exit statement 2014-11-21 11:27:53 -08:00
git-difftool.perl Merge branch 'da/difftool' 2014-10-29 10:09:35 -07:00
git-filter-branch.sh
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh mergetool--lib: remove use of $status global 2014-11-21 11:27:53 -08:00
git-mergetool.sh mergetool: simplify conditionals 2014-11-21 11:27:53 -08:00
git-p4.py Merge branch 'ld/p4-submit-hint' 2015-02-11 13:39:44 -08:00
git-parse-remote.sh
git-pull.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh Merge branch 'ks/rebase-i-abbrev' into maint 2015-03-05 13:12:56 -08:00
git-rebase--merge.sh
git-rebase.sh
git-relink.perl
git-remote-testgit.sh transport-helper: do not request symbolic refs to remote helpers 2015-01-21 22:46:59 -08:00
git-request-pull.sh
git-send-email.perl Merge branch 'km/send-email-getopt-long-workarounds' 2015-03-03 14:37:03 -08:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'dw/shell-basename-dashdash-before-stripping-leading-dash-from-login' 2014-12-22 12:26:48 -08:00
git-stash.sh
git-submodule.sh Merge branch 'ps/submodule-sanitize-path-upon-add' into maint 2015-03-05 13:13:10 -08:00
git-svn.perl git-svn: lazy load some modules 2015-02-26 20:19:21 +00:00
GIT-VERSION-GEN Git 2.3.2 2015-03-06 14:58:14 -08:00
git-web--browse.sh
git.c Merge branch 'ah/usage-strings' 2015-02-11 13:44:20 -08:00
git.rc
git.spec.in
gpg-interface.c
gpg-interface.h
graph.c
graph.h
grep.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
grep.h grep: add color.grep.matchcontext and color.grep.matchselected 2014-10-28 10:33:50 -07:00
hashmap.c
hashmap.h
help.c
help.h
hex.c Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long' into maint 2015-03-05 13:12:55 -08:00
http-backend.c Merge branch 'rs/run-command-env-array' 2014-10-24 14:57:54 -07:00
http-fetch.c
http-push.c http-push: trim trailing newline from remote symref 2015-01-14 10:28:02 -08:00
http-walker.c
http.c Merge branch 'ye/http-accept-language' 2015-03-06 15:02:25 -08:00
http.h http.c: make finish_active_slot() and handle_curl_result() static 2015-01-15 11:00:52 -08:00
ident.c
imap-send.c imap-send.c: set CURLOPT_USE_SSL to CURLUSESSL_TRY 2015-01-06 12:18:32 -08:00
INSTALL git-imap-send: use libcurl for implementation 2014-11-10 09:17:27 -08:00
khash.h
kwset.c kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
kwset.h kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c line-log.c: make line_log_data_init() static 2015-01-15 11:05:47 -08:00
line-log.h line-log.c: make line_log_data_init() static 2015-01-15 11:05:47 -08:00
line-range.c
line-range.h
list-objects.c rev-list: add an option to mark fewer edges as uninteresting 2014-12-29 09:57:55 -08:00
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c lockfile.c: store absolute path 2014-11-03 11:00:28 -08:00
lockfile.h lockfile: remove unable_to_lock_error 2014-10-15 10:47:27 -07:00
log-tree.c Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
log-tree.h Merge branch 'jn/parse-config-slot' 2014-10-20 12:23:48 -07:00
mailmap.c mailmap: use higher level string list functions 2014-12-04 15:10:21 -08:00
mailmap.h
Makefile Merge branch 'tc/curl-vernum-output-broken-in-7.11' 2015-02-22 12:28:29 -08:00
match-trees.c
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
merge-recursive.h
merge.c
mergesort.c
mergesort.h
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
notes-merge.h
notes-utils.c use strbuf_complete_line() for adding a newline if needed 2014-12-12 11:23:45 -08:00
notes-utils.h
notes.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
notes.h
object.c drop add_object_array_with_mode 2014-10-19 15:28:30 -07:00
object.h drop add_object_array_with_mode 2014-10-19 15:28:30 -07:00
pack-bitmap-write.c Merge branch 'jk/pack-bitmap' 2014-12-12 14:31:42 -08:00
pack-bitmap.c Merge branch 'jc/unused-symbols' 2015-02-11 13:44:07 -08:00
pack-bitmap.h pack-bitmap.c: make pack_bitmap_filename() static 2015-01-15 11:04:10 -08:00
pack-check.c
pack-objects.c
pack-objects.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c Merge branch 'jk/decimal-width-for-uintmax' into maint 2015-03-05 13:12:59 -08:00
parse-options-cb.c
parse-options.c
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c Sync with v2.1.4 2014-12-17 11:46:57 -08:00
pathspec.c
pathspec.h
pkt-line.c pkt-line: allow writing of LARGE_PACKET_MAX buffers 2014-12-10 13:09:21 -08:00
pkt-line.h
preload-index.c
pretty.c Merge branch 'rs/simple-cleanups' into maint 2015-03-06 14:57:57 -08:00
prio-queue.c
prio-queue.h
progress.c
progress.h
prompt.c prompt.c: remove git_getpass() nobody uses 2015-01-15 11:02:06 -08:00
prompt.h prompt.c: remove git_getpass() nobody uses 2015-01-15 11:02:06 -08:00
quote.c ls-tree: remove path filtering logic in show_tree 2014-12-01 11:32:34 -08:00
quote.h ls-tree: remove path filtering logic in show_tree 2014-12-01 11:32:34 -08:00
reachable.c reachable: use revision machinery's --indexed-objects code 2014-10-19 15:07:07 -07:00
reachable.h pack-objects: match prune logic for discarding objects 2014-10-16 10:10:43 -07:00
read-cache.c untracked cache: mark index dirty if untracked cache is updated 2015-03-12 13:45:17 -07:00
README
reflog-walk.c refs.c: change resolve_ref_unsafe reading argument to be a flags field 2014-10-15 10:47:24 -07:00
reflog-walk.h
refs.c Merge branch 'mh/expire-updateref-fixes' 2015-03-10 13:52:40 -07:00
refs.h refs.h: remove duplication in function docstrings 2015-02-17 11:25:18 -08:00
RelNotes Post 2.3 cycle (batch #9) 2015-03-10 13:53:49 -07:00
remote-curl.c Merge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null' into maint 2015-02-24 22:10:35 -08:00
remote-testsvn.c
remote.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
remote.h Merge branch 'jc/unused-symbols' 2015-02-11 13:44:07 -08:00
replace_object.c
rerere.c Merge branch 'jn/rerere-fail-on-auto-update-failure' into maint 2015-02-24 22:10:13 -08:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'jc/unused-symbols' 2015-02-11 13:44:07 -08:00
revision.h Merge branch 'jc/unused-symbols' 2015-02-11 13:44:07 -08:00
run-command.c Merge branch 'jc/hook-cleanup' 2014-12-22 12:27:10 -08:00
run-command.h Merge branch 'jc/hook-cleanup' 2014-12-22 12:27:10 -08:00
send-pack.c Merge branch 'sb/atomic-push' 2015-02-11 13:43:51 -08:00
send-pack.h send-pack.c: add --atomic command line argument 2015-01-07 19:56:44 -08:00
sequencer.c ref_transaction_update(): remove "have_old" parameter 2015-02-17 11:22:50 -08:00
sequencer.h Merge branch 'jc/conflict-hint' into cc/interpret-trailers-more 2014-11-10 09:56:39 -08:00
server-info.c update-server-info: create info/* with mode 0666 2015-01-06 13:46:52 -08:00
setup.c
sh-i18n--envsubst.c
sha1_file.c Merge branch 'jk/prune-mtime' into maint 2015-03-05 13:13:08 -08:00
sha1_name.c Merge branch 'rs/simple-cleanups' into maint 2015-03-06 14:57:57 -08:00
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
shallow.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
split-index.c ewah: add convenient wrapper ewah_serialize_strbuf() 2015-03-12 13:45:16 -07:00
split-index.h
strbuf.c Merge branch 'jc/strbuf-add-lines-avoid-sp-ht-sequence' 2015-01-07 12:49:19 -08:00
strbuf.h strbuf.h: group documentation for trim functions 2015-01-16 14:40:47 -08:00
streaming.c
streaming.h
string-list.c Merge branch 'sb/string-list' 2014-12-22 12:27:30 -08:00
string-list.h Merge branch 'sb/string-list' 2014-12-22 12:27:30 -08:00
submodule.c Merge branch 'jc/merge-bases' 2015-01-07 12:55:05 -08:00
submodule.h
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-config.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-dump-split-index.c
test-genrandom.c
test-hashmap.c Merge branch 'js/test-hashmap-squelch-gcc' 2014-12-22 12:27:46 -08:00
test-index-version.c
test-line-buffer.c
test-match-trees.c
test-mergesort.c
test-mktemp.c
test-parse-options.c
test-path-utils.c
test-prio-queue.c
test-read-cache.c
test-regex.c
test-revision-walking.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1-array.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-list.c
test-subprocess.c
test-svn-fe.c
test-urlmatch-normalization.c
test-wildmatch.c
thread-utils.c
thread-utils.h
trace.c configure.ac: check for clock_gettime and CLOCK_MONOTONIC 2015-01-09 15:33:39 -08:00
trace.h
trailer.c do not include the same header twice 2015-02-13 13:16:12 -08:00
trailer.h trailer: put all the processing together and print 2014-10-13 13:55:27 -07:00
transport-helper.c Merge branch 'jc/push-cert' into maint 2015-03-05 13:12:58 -08:00
transport.c Merge branch 'sb/atomic-push' 2015-02-11 13:43:51 -08:00
transport.h push.c: add an --atomic argument 2015-01-07 19:56:44 -08:00
tree-diff.c
tree-walk.c
tree-walk.h
tree.c tree.c: update read_tree_recursive callback to pass strbuf as base 2014-12-01 11:32:29 -08:00
tree.h tree.c: update read_tree_recursive callback to pass strbuf as base 2014-12-01 11:32:29 -08:00
unicode_width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c untracked cache: invalidate at index addition or removal 2015-03-12 13:45:16 -07:00
unpack-trees.h
update_unicode.sh update_unicode.sh: delete the command group 2014-12-22 10:03:37 -08:00
upload-pack.c pack-objects: use --objects-edge-aggressive for shallow repos 2014-12-29 09:58:25 -08:00
url.c
url.h
urlmatch.c urlmatch.c: make match_urls() static 2015-01-15 11:05:48 -08:00
urlmatch.h urlmatch.c: make match_urls() static 2015-01-15 11:05:48 -08:00
usage.c
userdiff.c do not include the same header twice 2015-02-13 13:16:12 -08:00
userdiff.h
utf8.c Merge branch 'maint-2.1' into maint 2015-01-07 13:28:10 -08:00
utf8.h utf8: add is_hfs_dotgit() helper 2014-12-17 11:04:39 -08:00
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c Merge branch 'jk/blame-commit-label' into maint 2015-02-24 22:09:54 -08:00
walker.h
wildmatch.c
wildmatch.h
wrap-for-bin.sh
wrapper.c Merge branch 'jc/max-io-size-and-ssize-max' 2015-02-25 15:40:13 -08:00
write_or_die.c
ws.c
wt-status.c status: enable untracked cache 2015-03-12 13:45:17 -07:00
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

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

	Git - the stupid content tracker

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

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public
License version 2 (some parts of it are under different licenses,
compatible with the GPLv2). It was originally written by Linus
Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/giteveryday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help
commandname".

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is
installed).

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

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org (read
Documentation/SubmittingPatches for instructions on patch submission).
To subscribe to the list, send an email with just "subscribe git" in
the body to majordomo@vger.kernel.org. The mailing list archives are
available at http://news.gmane.org/gmane.comp.version-control.git/,
http://marc.info/?l=git and other archival sites.

The maintainer frequently sends the "What's cooking" reports that
list the current status of various development topics to the mailing
list.  The discussion following them give a good reference for
project status, development direction and remaining tasks.