Go to file
Jeff King 0baf78e7bc perf-lib.sh: rely on test-lib.sh for --tee handling
Since its inception, the perf-lib.sh script has manually handled the
"--tee" option (and other options which imply it, like "--valgrind")
with a cut-and-pasted block from test-lib.sh. That block has grown stale
over the years, and has at least three problems:

  1. It uses $SHELL to re-exec the script, whereas the version in
     test-lib.sh learned to use $TEST_SHELL_PATH.

  2. It does an ad-hoc search of the "$*" string, whereas test-lib.sh
     learned to carefully parse the arguments left to right.

  3. It never learned about --verbose-log (which also implies --tee),
     so it would not trigger for that option.

This last one was especially annoying, because t/perf/run uses the
GIT_TEST_OPTS from your config.mak to run the perf scripts. So if you've
set, say, "-x --verbose-log" there, it will be passed as part of most
perf runs. And while this script doesn't recognize the option, the
test-lib.sh that we source _does_, and the behavior ends up being much
more annoying:

  - as the comment at the top of the block says, we have to run this
    tee code early, before we start munging variables (it says
    GIT_BUILD_DIR, but the problematic variable is actually
    GIT_TEST_INSTALLED).

  - since we don't recognize --verbose-log, we don't trigger the block.
    We go on to munge GIT_TEST_INSTALLED, converting it from a relative
    to an absolute path.

  - then we source test-lib.sh, which _does_ recognize --verbose-log. It
    re-execs the script, which runs again. But this time with an
    absolute version of GIT_TEST_INSTALLED.

  - As a result, we copy the absolute version of GIT_TEST_INSTALLED into
    perf_results_prefix. Instead of writing our results to the expected
    "test-results/build_1234abcd.p1234-whatever.times", we instead write
    them to "test-results/_full_path_to_repo_t_perf_build_1234...".

    The aggregate.perl script doesn't expect this, and so it prints
    "<missing>" for each result (even though it spent considerable time
    running the tests!).

We can solve all of these in one blow by just deleting our custom
handling, and relying on the inclusion of test-lib.sh to handle --tee,
--verbose-log, etc.

There's one catch, though. We want to handle GIT_TEST_INSTALLED after
we've included test-lib.sh, since we want it un-munged in the re-exec'd
version of the script. But if we want to convert it from a relative
to an absolute path, we must do so before we load test-lib.sh, since it
will change our working directory. So we compute the absolute directory
first, store it away, then include test-lib.sh, and finally assign to
GIT_TEST_INSTALLED as appropriate.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-03-18 14:52:43 +09:00
.github
Documentation The second batch 2019-03-11 16:18:22 +09:00
block-sha1
builtin Merge branch 'jk/diff-no-index-initialize' 2019-03-07 09:59:59 +09:00
ci travis: remove the hack to build the Windows job on Azure Pipelines 2019-03-01 08:21:26 +09:00
compat Merge branch 'jk/guard-bswap-header' 2019-03-11 16:16:25 +09:00
contrib Merge branch 'nd/completion-more-parameters' 2019-03-07 09:59:58 +09:00
ewah ewok_rlw.h: add missing 'inline' to function definition 2018-10-29 10:14:19 +09:00
git-gui
gitk-git Merge git://ozlabs.org/~paulus/gitk 2019-03-18 11:18:49 +09:00
gitweb
mergetools
negotiator
perl
po gitk: Update Bulgarian translation (317t) 2019-03-14 20:16:17 +11:00
ppc
refs files-backend: drop refs parameter from split_symref_update() 2019-02-14 15:26:15 -08:00
sha1collisiondetection@232357eb2e
sha1dc
sha256 sha256: add an SHA-256 implementation using libgcrypt 2018-11-14 16:54:53 +09:00
t perf-lib.sh: rely on test-lib.sh for --tee handling 2019-03-18 14:52:43 +09:00
templates
trace2 trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
vcs-svn headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
xdiff xdiff: provide a separate emit callback for hunks 2018-11-02 20:43:02 +09:00
.clang-format trace2: add for_each macros to clang-format 2019-02-22 15:28:22 -08:00
.editorconfig
.gitattributes Merge branch 'ds/hash-independent-tests-fix' into maint 2018-12-15 12:24:32 +09:00
.gitignore Merge branch 'sg/travis-specific-cc' 2019-02-06 22:05:25 -08:00
.gitmodules
.mailmap .mailmap: map Clemens Buchacher's mail addresses 2019-02-08 11:14:15 -08:00
.travis.yml travis: remove the hack to build the Windows job on Azure Pipelines 2019-03-01 08:21:26 +09:00
.tsan-suppressions
COPYING
GIT-VERSION-GEN Start 2.22 cycle 2019-03-07 11:59:54 +09:00
INSTALL
LGPL-2.1
Makefile Merge branch 'js/find-lib-h-with-ls-files-when-possible' 2019-03-11 16:16:25 +09:00
README.md README: adjust for final Azure Pipeline ID 2019-02-23 21:27:04 -08:00
RelNotes Start 2.22 cycle 2019-03-07 11:59:54 +09:00
abspath.c
aclocal.m4
advice.c push: add an advice on unqualified <dst> push 2018-11-14 15:27:55 +09:00
advice.h push: add an advice on unqualified <dst> push 2018-11-14 15:27:55 +09:00
alias.c alias.c: mark split_cmdline_strerror() strings for translation 2018-11-12 14:47:09 +09:00
alias.h headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
alloc.c object_as_type: initialize commit-graph-related fields of 'struct commit' 2019-01-27 16:55:57 -08:00
alloc.h object_as_type: initialize commit-graph-related fields of 'struct commit' 2019-01-27 16:55:57 -08:00
apply.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
apply.h
archive-tar.c Indent code with TABs 2018-12-09 12:37:32 +09:00
archive-zip.c
archive.c Merge branch 'nd/indentation-fix' 2019-01-14 15:29:32 -08:00
archive.h archive: initialize archivers earlier 2018-10-26 10:17:59 +09:00
argv-array.c
argv-array.h
attr.c Merge branch 'rd/attr.c-comment-typofix' 2019-03-11 16:16:24 +09:00
attr.h
azure-pipelines.yml ci: parallelize testing on Windows 2019-01-29 09:26:47 -08:00
banned.h banned.h: mark strncat() as banned 2019-01-02 10:19:05 -08:00
base85.c
bisect.c Merge branch 'ds/push-sparse-tree-walk' 2019-02-06 22:05:25 -08:00
bisect.h bisect.c: remove the_repository reference 2018-11-12 14:50:05 +09:00
blame.c Merge branch 'wh/author-committer-ident-config' 2019-03-07 09:59:53 +09:00
blame.h
blob.c
blob.h
branch.c branch.c: remove the_repository reference 2018-11-12 14:50:06 +09:00
branch.h branch.c: remove the_repository reference 2018-11-12 14:50:06 +09:00
builtin.h Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
bulk-checkin.c convert has_sha1_file() callers to has_object_file() 2019-01-08 09:41:06 -08:00
bulk-checkin.h
bundle.c create_bundle(): drop unused "header" parameter 2019-01-24 12:35:44 -08:00
bundle.h create_bundle(): drop unused "header" parameter 2019-01-24 12:35:44 -08:00
cache-tree.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
cache-tree.h cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
cache.h Merge branch 'jh/trace2' 2019-03-07 09:59:56 +09:00
chdir-notify.c
chdir-notify.h
check-builtins.sh
check_bindir
checkout.c
checkout.h
color.c
color.h
column.c column: drop unused "opts" parameter in item_length() 2019-01-24 12:35:44 -08:00
column.h
combine-diff.c Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
command-list.txt Merge branch 'du/cherry-is-plumbing' into maint 2018-11-21 22:58:05 +09:00
commit-graph.c Merge branch 'ab/commit-graph-write-progress' 2019-02-05 14:26:14 -08:00
commit-graph.h Merge branch 'ab/commit-graph-write-progress' 2019-02-05 14:26:14 -08:00
commit-reach.c Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
commit-reach.h Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
commit-slab-decl.h
commit-slab-impl.h commit-slabs: move MAYBE_UNUSED out 2018-10-24 14:52:50 +09:00
commit-slab.h
commit.c Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
commit.h Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
common-main.c trace2: collect Windows-specific process information 2019-02-22 15:27:59 -08:00
config.c Merge branch 'jh/trace2' 2019-03-07 09:59:56 +09:00
config.h index: make index.threads=true enable ieot and eoie 2018-11-21 16:46:54 +09:00
config.mak.dev Merge branch 'jk/dev-build-format-security' 2019-01-18 13:49:55 -08:00
config.mak.in
config.mak.uname Sync with maint 2019-03-11 16:16:34 +09:00
configure.ac Merge branch 'dd/poll-dot-h' 2018-11-19 16:24:41 +09:00
connect.c trace2:data: add trace2 transport child classification 2019-02-22 15:28:14 -08:00
connect.h
connected.c
connected.h
convert.c Merge branch 'jk/unused-parameter-cleanup' 2019-02-06 22:05:23 -08:00
convert.h
copy.c
credential-cache--daemon.c style: the opening '{' of a function is in a separate line 2018-12-10 15:41:09 +09:00
credential-cache.c
credential-store.c
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
decorate.c
decorate.h
delta-islands.c tree-walk: store object_id in a separate member 2019-01-15 09:57:41 -08:00
delta-islands.h delta-islands.c: remove the_repository references 2018-11-12 14:50:06 +09:00
delta.h
detect-compiler
diff-delta.c
diff-lib.c diff: drop options parameter from diffcore_fix_diff_index() 2019-02-14 15:26:14 -08:00
diff-no-index.c diff: reuse diff setup for --no-index case 2019-02-24 07:08:34 -08:00
diff.c Merge branch 'nd/diff-parseopt-2' 2019-03-07 09:59:58 +09:00
diff.h Merge branch 'jk/diff-no-index-initialize' 2019-03-07 09:59:59 +09:00
diffcore-break.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c Merge branch 'nd/the-index' into md/list-objects-filter-by-depth 2019-01-15 15:38:29 -08:00
diffcore-rename.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
diffcore.h
dir-iterator.c
dir-iterator.h
dir.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
dir.h
editor.c trace2:data: add editor/pager child classification 2019-02-22 15:27:59 -08:00
entry.c Merge branch 'tg/checkout-no-overlay' 2019-03-07 09:59:51 +09:00
environment.c Merge branch 'jk/save-getenv-result' 2019-01-29 12:47:54 -08:00
exec-cmd.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
exec-cmd.h
fast-import.c Merge branch 'en/fast-export-import' 2019-01-04 13:33:33 -08:00
fetch-negotiator.c
fetch-negotiator.h headers: normalize the spelling of some header guards 2018-10-18 13:39:35 +09:00
fetch-object.c
fetch-object.h fetch-object.h: add missing declaration (hdr-check) 2018-10-29 10:14:17 +09:00
fetch-pack.c Merge branch 'bc/fetch-pack-clear-alternate-shallow' 2019-02-06 22:05:30 -08:00
fetch-pack.h
fmt-merge-msg.h
fsck.c tree-walk: store object_id in a separate member 2019-01-15 09:57:41 -08:00
fsck.h
fsmonitor.c
fsmonitor.h
fuzz-commit-graph.c fuzz-commit-graph: initialize repo object 2019-02-07 13:02:26 -08:00
fuzz-pack-headers.c fuzz: add basic fuzz testing target. 2018-10-15 14:28:59 +09:00
fuzz-pack-idx.c fuzz: add fuzz testing for packfile indices. 2018-10-15 14:29:03 +09:00
generate-cmdlist.sh Update makefile in preparation for Documentation/config/*.txt 2018-10-29 10:16:59 +09:00
gettext.c i18n: make GETTEXT_POISON a runtime option 2018-11-09 11:25:19 +09:00
gettext.h i18n: make GETTEXT_POISON a runtime option 2018-11-09 11:25:19 +09:00
git-add--interactive.perl
git-archimport.perl
git-bisect.sh bisect--helper: `bisect_start` shell function partially in C 2019-01-02 10:23:03 -08:00
git-compat-util.h trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-filter-branch.sh
git-instaweb.sh git-instaweb: add Python builtin http.server support 2019-01-28 10:57:44 -08:00
git-legacy-rebase.sh Merge branch 'js/rebase-i-redo-exec-fix' 2019-02-08 20:44:52 -08:00
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh mergetool: accept -g/--[no-]gui as arguments 2018-10-25 14:01:10 +09:00
git-mergetool.sh mergetool: accept -g/--[no-]gui as arguments 2018-10-25 14:01:10 +09:00
git-p4.py Merge branch 'ld/git-p4-shelve-update-fix' 2019-02-05 14:26:10 -08:00
git-parse-remote.sh
git-quiltimport.sh git-quiltimport: add --keep-non-patch option 2019-01-07 15:29:34 -08:00
git-rebase--am.sh rebase: define linearization ordering and enforce it 2018-12-28 12:49:48 -08:00
git-rebase--common.sh Merge branch 'en/rebase-merge-on-sequencer' 2019-02-06 22:05:20 -08:00
git-rebase--preserve-merges.sh Merge branch 'ag/rebase-i-in-c' 2018-11-02 11:04:53 +09:00
git-remote-testgit.sh
git-request-pull.sh
git-send-email.perl completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
git-sh-i18n.sh i18n: make GETTEXT_POISON a runtime option 2018-11-09 11:25:19 +09:00
git-sh-setup.sh
git-stash.sh stash: tolerate missing user identity 2018-11-19 08:24:34 +09:00
git-submodule.sh submodule: document default behavior 2019-02-15 09:55:27 -08:00
git-svn.perl
git-web--browse.sh
git.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
git.rc
gpg-interface.c Merge branch 'mg/gpg-fingerprint' 2018-11-03 00:53:58 +09:00
gpg-interface.h gpg-interface.c: obtain primary key fingerprint as well 2018-10-23 08:00:43 +09:00
graph.c Merge branch 'np/log-graph-octopus-fix' into maint 2018-11-21 22:57:49 +09:00
graph.h
grep.c Merge branch 'nd/the-index' into md/list-objects-filter-by-depth 2019-01-15 15:38:29 -08:00
grep.h grep: remove #ifdef NO_PTHREADS 2018-11-05 13:42:11 +09:00
hash.h hash: add an SHA-256 implementation using OpenSSL 2018-11-14 16:54:53 +09:00
hashmap.c
hashmap.h
help.c help: align the longest command in the command listing 2019-01-31 15:27:35 -08:00
help.h help.h: fix coding style 2018-12-12 17:18:29 +09:00
hex.c hex: introduce functions to print arbitrary hashes 2018-11-14 16:54:52 +09:00
http-backend.c Merge branch 'mk/http-backend-kill-children-before-exit' 2019-01-04 13:33:35 -08:00
http-fetch.c
http-push.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
http-walker.c convert has_sha1_file() callers to has_object_file() 2019-01-08 09:41:06 -08:00
http.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
http.h Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
ident.c config: allow giving separate author and committer idents 2019-02-04 12:18:13 -08:00
imap-send.c Merge branch 'nd/imap-send-typofix' 2019-02-12 09:00:25 -08:00
interdiff.c
interdiff.h
iterator.h
json-writer.c
json-writer.h
khash.h khash: silence -Wunused-function for delta-islands 2018-10-24 14:52:50 +09:00
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c line-log.c: remove the_repository reference 2018-11-12 14:50:06 +09:00
line-log.h
line-range.c
line-range.h
linear-assignment.c
linear-assignment.h
list-objects-filter-options.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
list-objects-filter-options.h filter-options: expand scaled numbers 2019-01-15 15:42:31 -08:00
list-objects-filter.c tree:<depth>: skip some trees even when collecting omits 2019-01-15 15:39:34 -08:00
list-objects-filter.h list-objects-filter.c: remove implicit dependency on the_index 2018-11-12 14:50:05 +09:00
list-objects.c Merge branch 'ds/push-sparse-tree-walk' 2019-02-06 22:05:25 -08:00
list-objects.h list-objects: consume sparse tree walk 2019-01-17 13:44:39 -08:00
list.h
ll-merge.c Merge branch 'en/merge-path-collision' 2019-01-04 13:33:32 -08:00
ll-merge.h Merge branch 'en/merge-path-collision' 2019-01-04 13:33:32 -08:00
lockfile.c
lockfile.h
log-tree.c Merge branch 'wh/author-committer-ident-config' 2019-03-07 09:59:53 +09:00
log-tree.h
ls-refs.c Merge branch 'jt/namespaced-ls-refs-fix' 2019-02-05 14:26:15 -08:00
ls-refs.h
mailinfo.c
mailinfo.h
mailmap.c
mailmap.h
match-trees.c Merge branch 'jk/unused-parameter-cleanup' 2019-02-06 22:05:23 -08:00
mem-pool.c
mem-pool.h
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'nd/completion-more-parameters' 2019-03-07 09:59:58 +09:00
merge-recursive.h merge-recursive.c: remove implicit dependency on the_index 2019-01-14 12:13:04 -08:00
merge.c read-cache.c: kill read_index() 2019-01-14 12:13:04 -08:00
mergesort.c
mergesort.h
midx.c Merge branch 'jk/loose-object-cache' 2019-01-04 13:33:32 -08:00
midx.h Merge branch 'ds/test-multi-pack-index' 2018-11-13 22:37:19 +09:00
name-hash.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
notes-cache.c notes-cache.c: remove the_repository references 2018-11-12 14:50:06 +09:00
notes-cache.h notes-cache.c: remove the_repository references 2018-11-12 14:50:06 +09:00
notes-merge.c notes-utils.c: remove the_repository references 2019-01-14 12:13:04 -08:00
notes-merge.h notes-merge.c: remove implicit dependency on the_index 2018-11-12 14:50:05 +09:00
notes-utils.c notes-utils.c: remove the_repository references 2019-01-14 12:13:04 -08:00
notes-utils.h notes-utils.c: remove the_repository references 2019-01-14 12:13:04 -08:00
notes.c tree-walk: store object_id in a separate member 2019-01-15 09:57:41 -08:00
notes.h
object-store.h Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
object.c object: fix leak of shallow_stat 2019-02-07 13:02:28 -08:00
object.h revision.c: generation-based topo-order algorithm 2018-11-02 12:14:22 +09:00
oidmap.c
oidmap.h
oidset.c
oidset.h
pack-bitmap-write.c pack-*.c: remove the_repository references 2018-11-12 14:50:06 +09:00
pack-bitmap.c pack-*.c: remove the_repository references 2018-11-12 14:50:06 +09:00
pack-bitmap.h pack-*.c: remove the_repository references 2018-11-12 14:50:06 +09:00
pack-check.c pack-check.c: remove the_repository references 2018-11-12 14:50:06 +09:00
pack-objects.c pack-objects: drop unused parameter from oe_map_new_pack() 2019-02-14 15:26:15 -08:00
pack-objects.h pack-objects: drop unused parameter from oe_map_new_pack() 2019-02-14 15:26:15 -08:00
pack-revindex.c various: tighten constness of some local variables 2019-02-04 09:57:10 -08:00
pack-revindex.h
pack-write.c
pack.h pack-check.c: remove the_repository references 2018-11-12 14:50:06 +09:00
packfile.c Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
packfile.h Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
pager.c trace2:data: add editor/pager child classification 2019-02-22 15:27:59 -08:00
parse-options-cb.c parse-options: allow ll_callback with OPTION_CALLBACK 2019-01-27 16:28:18 -08:00
parse-options.c parse-options: allow ll_callback with OPTION_CALLBACK 2019-01-27 16:28:18 -08:00
parse-options.h diff.c: convert -U|--unified 2019-01-27 16:28:18 -08:00
patch-delta.c
patch-ids.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
patch-ids.h
path.c Merge branch 'jk/loose-object-cache' 2019-01-04 13:33:32 -08:00
path.h path.h: make REPO_GIT_PATH_FUNC repository agnostic 2018-12-28 10:06:33 -08:00
pathspec.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
pathspec.h dir.c: move, rename and export match_attrs() 2018-11-19 10:50:33 +09:00
pkt-line.c remote-curl: use post_rpc() for protocol v2 also 2019-03-03 19:00:42 +09:00
pkt-line.h remote-curl: use post_rpc() for protocol v2 also 2019-03-03 19:00:42 +09:00
preload-index.c read-cache.c: kill read_index() 2019-01-14 12:13:04 -08:00
pretty.c Merge branch 'nd/completion-more-parameters' 2019-03-07 09:59:58 +09:00
pretty.h Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
prio-queue.c prio-queue: add 'peek' operation 2018-11-02 12:14:21 +09:00
prio-queue.h prio-queue: add 'peek' operation 2018-11-02 12:14:21 +09:00
progress.c
progress.h
prompt.c
prompt.h
protocol.c
protocol.h
quote.c Indent code with TABs 2018-12-09 12:37:32 +09:00
quote.h
range-diff.c format-patch: do not let its diff-options affect --range-diff 2018-11-30 13:47:55 +09:00
range-diff.h format-patch: do not let its diff-options affect --range-diff 2018-11-30 13:47:55 +09:00
reachable.c prune: use bitmaps for reachability traversal 2019-02-14 15:25:33 -08:00
reachable.h
read-cache.c Merge branch 'jh/trace2' 2019-03-07 09:59:56 +09:00
rebase-interactive.c rebase-interactive.c: remove the_repository references 2018-11-12 14:50:06 +09:00
rebase-interactive.h rebase-interactive.c: remove the_repository references 2018-11-12 14:50:06 +09:00
ref-filter.c Merge branch 'nd/completion-more-parameters' 2019-03-07 09:59:58 +09:00
ref-filter.h
reflog-walk.c
reflog-walk.h
refs.c convert has_sha1_file() callers to has_object_file() 2019-01-08 09:41:06 -08:00
refs.h Merge branch 'ds/commit-graph-with-grafts' into maint 2018-11-21 22:57:47 +09:00
refspec.c
refspec.h
remote-curl.c Merge branch 'jt/http-auth-proto-v2-fix' 2019-03-07 10:00:00 +09:00
remote-testsvn.c
remote.c Merge branch 'jk/remote-insteadof-cleanup' 2019-01-29 12:47:55 -08:00
remote.h
replace-object.c Merge branch 'ds/commit-graph-with-grafts' into maint 2018-11-21 22:57:47 +09:00
replace-object.h
repository.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
repository.h trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
rerere.c read-cache.c: kill read_index() 2019-01-14 12:13:04 -08:00
rerere.h rerere.c: remove the_repository references 2018-11-12 14:50:06 +09:00
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
revision.h Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
run-command.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
run-command.h trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
send-pack.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
send-pack.h
sequencer.c Merge branch 'jh/trace2' 2019-03-07 09:59:56 +09:00
sequencer.h Merge branch 'rj/sequencer-sign-off-header-static' 2019-02-13 18:18:41 -08:00
serve.c pack-protocol.txt: accept error packets in any context 2019-01-02 13:05:30 -08:00
serve.h
server-info.c
setup.c Merge branch 'js/abspath-part-inside-repo' 2019-02-05 14:26:15 -08:00
sh-i18n--envsubst.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
sha1-array.c sha1-array: provide oid_array_filter 2018-12-05 11:42:31 +09:00
sha1-array.h sha1-array: provide oid_array_filter 2018-12-05 11:42:31 +09:00
sha1-file.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
sha1-lookup.c
sha1-lookup.h
sha1-name.c get_oid_with_context(): match prototype and implementation 2019-02-12 10:14:56 -08:00
sha1dc_git.c
sha1dc_git.h
shallow.c fetch-pack: do not take shallow lock unnecessarily 2019-01-10 14:53:35 -08:00
shell.c
shortlog.h
sideband.c Merge branch 'jt/fetch-v2-sideband' 2019-02-05 14:26:11 -08:00
sideband.h {fetch,upload}-pack: sideband v2 fetch response 2019-01-17 11:25:07 -08:00
sigchain.c
sigchain.h
split-index.c Merge branch 'nd/split-index-null-base-fix' 2019-03-07 09:59:56 +09:00
split-index.h
strbuf.c strbuf: separate callback for strbuf_expand:ing literals 2019-01-29 10:03:32 -08:00
strbuf.h strbuf: separate callback for strbuf_expand:ing literals 2019-01-29 10:03:32 -08:00
streaming.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
streaming.h
string-list.c style: the opening '{' of a function is in a separate line 2018-12-10 15:41:09 +09:00
string-list.h
sub-process.c trace2:data: add trace2 sub-process classification 2019-02-22 15:28:12 -08:00
sub-process.h
submodule-config.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
submodule-config.h
submodule.c Merge branch 'nd/completion-more-parameters' 2019-03-07 09:59:58 +09:00
submodule.h submodule: unset core.worktree if no working tree is present 2018-12-26 10:21:02 -08:00
symlinks.c Indent code with TABs 2018-12-09 12:37:32 +09:00
tag.c tag: express constant in terms of the_hash_algo 2018-10-15 12:53:16 +09:00
tag.h
tar.h
tempfile.c
tempfile.h Merge branch 'jk/reopen-tempfile-truncate' into maint 2018-11-21 22:57:43 +09:00
thread-utils.c thread-utils: macros to unconditionally compile pthreads API 2018-10-29 11:22:48 +09:00
thread-utils.h thread-utils: macros to unconditionally compile pthreads API 2018-10-29 11:22:48 +09:00
tmp-objdir.c
tmp-objdir.h
trace.c
trace.h
trace2.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
trace2.h trace2: collect Windows-specific process information 2019-02-22 15:27:59 -08:00
trailer.c pretty: add support for separator option in %(trailers) 2019-01-29 10:03:32 -08:00
trailer.h pretty: add support for separator option in %(trailers) 2019-01-29 10:03:32 -08:00
transport-helper.c trace2:data: add trace2 transport child classification 2019-02-22 15:28:14 -08:00
transport-internal.h
transport.c trace2:data: add trace2 hook classification 2019-02-22 15:28:21 -08:00
transport.h transport.c: remove implicit dependency on the_index 2018-11-12 14:50:05 +09:00
tree-diff.c Merge branch 'bc/tree-walk-oid' 2019-01-29 12:47:56 -08:00
tree-walk.c Merge branch 'dt/cat-file-batch-ambiguous' 2019-02-06 22:05:21 -08:00
tree-walk.h Merge branch 'dt/cat-file-batch-ambiguous' 2019-02-06 22:05:21 -08:00
tree.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
tree.h tree.c: make read_tree*() take 'struct repository *' 2018-11-19 10:50:33 +09:00
unicode-width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Merge branch 'tg/checkout-no-overlay' 2019-03-07 09:59:51 +09:00
unpack-trees.h
upload-pack.c Merge branch 'jt/fetch-v2-sideband' 2019-02-05 14:26:11 -08:00
upload-pack.h
url.c style: the opening '{' of a function is in a separate line 2018-12-10 15:41:09 +09:00
url.h
urlmatch.c
urlmatch.h
usage.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
userdiff.c Merge branch 'nd/style-opening-brace' 2019-01-18 13:49:52 -08:00
userdiff.h notes-cache.c: remove the_repository references 2018-11-12 14:50:06 +09:00
utf8.c utf8: handle systems that don't write BOM for UTF-16 2019-02-11 18:20:07 -08:00
utf8.h Support working-tree-encoding "UTF-16LE-BOM" 2019-01-31 10:27:52 -08:00
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c tree-walk: store object_id in a separate member 2019-01-15 09:57:41 -08:00
walker.h
wildmatch.c wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode 2018-10-29 13:19:22 +09:00
wildmatch.h wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode 2018-10-29 13:19:22 +09:00
worktree.c Merge branch 'nd/per-worktree-ref-iteration' 2018-11-13 22:37:26 +09:00
worktree.h Merge branch 'nd/per-worktree-ref-iteration' 2018-11-13 22:37:26 +09:00
wrap-for-bin.sh
wrapper.c wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() 2019-01-02 10:23:02 -08:00
write-or-die.c
ws.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
wt-status.c trace2:data: add trace2 regions to wt-status 2019-02-22 15:27:59 -08:00
wt-status.h wt-status.c: remove implicit dependency the_repository 2018-11-12 14:50:05 +09:00
xdiff-interface.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
xdiff-interface.h xdiff-interface: drop parse_hunk_header() 2018-11-05 13:14:35 +09:00
zlib.c

README.md

Build Status

Git - fast, scalable, distributed revision control system

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

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

Please read the file INSTALL for installation instructions.

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

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

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

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

Issues which are security relevant should be disclosed privately to the Git Security mailing list git-security@googlegroups.com.

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

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

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