Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Ævar Arnfjörð Bjarmason bc22d81370 perf: add a comparison test of grep regex engines with -F
Add a performance comparison test of grep regex engines given fixed
strings.

The current logic in compile_regexp() ignores the engine parameter and
uses kwset() to search for these, so this test shows no difference
between engines right now:

    $ GIT_PERF_REPEAT_COUNT=10 GIT_PERF_LARGE_REPO=~/g/linux ./run p7821-grep-engines-fixed.sh
    [...]
    Test                             this tree
    ------------------------------------------------
    7821.1: fixed grep int           0.56(1.67+0.68)
    7821.2: basic grep int           0.57(1.70+0.57)
    7821.3: extended grep int        0.59(1.76+0.51)
    7821.4: perl grep int            1.08(1.71+0.55)
    7821.6: fixed grep uncommon      0.23(0.55+0.50)
    7821.7: basic grep uncommon      0.24(0.55+0.50)
    7821.8: extended grep uncommon   0.26(0.55+0.52)
    7821.9: perl grep uncommon       0.24(0.58+0.47)
    7821.11: fixed grep æ            0.36(1.30+0.42)
    7821.12: basic grep æ            0.36(1.32+0.40)
    7821.13: extended grep æ         0.38(1.30+0.42)
    7821.14: perl grep æ             0.35(1.24+0.48)

Only when run with -i via GIT_PERF_7821_GREP_OPTS=' -i' do we avoid
avoid going through the same kwset.[ch] codepath, see the "Even when
-F..."  comment in grep.c. This only kicks for the non-ASCII case:

    $ GIT_PERF_REPEAT_COUNT=10 GIT_PERF_LARGE_REPO=~/g/linux GIT_PERF_7821_GREP_OPTS=' -i' ./run p7821-grep-engines-fixed.sh
    [...]
    Test                                this tree
    ---------------------------------------------------
    7821.1: fixed grep -i int           0.62(2.10+0.57)
    7821.2: basic grep -i int           0.68(1.90+0.61)
    7821.3: extended grep -i int        0.78(1.94+0.57)
    7821.4: perl grep -i int            0.98(1.78+0.74)
    7821.6: fixed grep -i uncommon      0.24(0.44+0.64)
    7821.7: basic grep -i uncommon      0.25(0.56+0.54)
    7821.8: extended grep -i uncommon   0.27(0.62+0.45)
    7821.9: perl grep -i uncommon       0.24(0.59+0.49)
    7821.11: fixed grep -i æ            0.30(0.96+0.39)
    7821.12: basic grep -i æ            0.27(0.92+0.44)
    7821.13: extended grep -i æ         0.28(0.90+0.46)
    7821.14: perl grep -i æ             0.28(0.74+0.49)

I'm planning to change how fixed-string searching happens. This test
gives a baseline for comparing performance before & after any such
change.

See commit ("perf: add a comparison test of grep regex engines",
2017-04-19) for details on the machine the above test run was executed
on.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-05-26 12:52:36 +09:00
block-sha1 sha1: provide another level of indirection for the SHA-1 functions 2015-11-05 10:35:11 -08:00
builtin Merge branch 'ja/i18n-cleanup' 2017-05-04 16:26:44 +09:00
ci Merge branch 'rg/a-the-typo' 2017-05-04 16:26:47 +09:00
compat Merge branch 'js/mingw-isatty' 2017-02-16 14:45:13 -08:00
contrib Merge branch 'jk/complete-checkout-sans-dwim-remote' 2017-05-01 14:14:41 +09:00
Documentation grep & rev-list doc: stop promising libpcre for --perl-regexp 2017-05-21 08:25:37 +09:00
ewah Merge branch 'jk/ewah-use-right-type-in-sizeof' 2017-03-12 23:21:35 -07:00
git-gui git-gui 0.21.0 2016-10-20 09:33:17 -07:00
gitk-git Merge git://ozlabs.org/~paulus/gitk 2017-01-18 10:27:59 -08:00
gitweb Merge branch 'ab/gitweb-abbrev-links' 2016-10-26 13:14:46 -07:00
mergetools Merge branch 'da/mergetool-xxdiff-hotkey' 2016-12-19 14:45:41 -08:00
perl Merge branch 'svn-escape-backslash' of git://bogomips.org/git-svn 2017-02-20 22:01:59 -08:00
po Merge branch 'master' of git://github.com/nafmo/git-l10n-sv 2017-05-09 22:12:34 +08:00
ppc sha1: provide another level of indirection for the SHA-1 functions 2015-11-05 10:35:11 -08:00
refs Merge branch 'mh/separate-ref-cache' 2017-04-26 15:39:13 +09:00
sha1dc sha1dc: avoid CPP macro collisions 2017-03-26 15:34:44 -07:00
t perf: add a comparison test of grep regex engines with -F 2017-05-26 12:52:36 +09:00
templates pre-receive.sample: mark it executable 2016-10-28 14:21:11 -07:00
vcs-svn Merge branch 'mr/vcs-svn-printf-ulong' 2016-09-21 15:15:27 -07:00
xdiff xdiff -W: relax end-of-file function detection 2017-01-15 16:08:11 -08:00
.gitattributes .gitattributes: set file type for C files 2016-07-07 14:11:15 -07:00
.gitignore rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
.mailmap Git 2.12.2 2017-03-24 13:31:01 -07:00
.travis.yml Merge branch 'ls/travis-stricter-linux32-builds' 2017-05-01 14:14:44 +09:00
abspath.c prefix_filename: simplify windows #ifdef 2017-03-21 11:18:41 -07:00
aclocal.m4
advice.c i18n: advice: internationalize message for conflicts 2016-06-17 15:45:48 -07:00
advice.h
alias.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
alloc.c alloc: factor out commit index 2014-07-13 18:59:05 -07:00
apply.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
apply.h apply: learn to use a different index file 2016-09-07 12:29:54 -07:00
archive-tar.c Merge branch 'jk/big-and-future-archive-tar' 2016-08-12 09:47:37 -07:00
archive-zip.c archive-zip: load userdiff config 2017-01-07 18:49:30 -08:00
archive.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
archive.h archive: read local configuration 2016-11-22 13:55:20 -08:00
argv-array.c argv-array: add detach function 2016-02-22 14:50:32 -08:00
argv-array.h argv-array: add detach function 2016-02-22 14:50:32 -08:00
attr.c pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
attr.h pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
base85.c base85.c: have SP around arithmetic operators 2013-10-16 10:27:26 -07:00
bisect.c Merge branch 'jk/war-on-git-path' 2017-04-26 15:39:08 +09:00
bisect.h bisect: simplify the addition of new bisect terms 2015-08-03 11:42:41 -07:00
blob.c add object_as_type helper for casting objects 2014-07-13 18:59:05 -07:00
blob.h Replace parse_blob() with an explanatory comment 2010-01-18 17:04:02 -08:00
branch.c create_branch: use xstrfmt for reflog message 2017-03-30 14:59:50 -07:00
branch.h branch: record creation of renamed branch in HEAD's log 2017-02-20 22:04:47 -08:00
builtin.h rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
bulk-checkin.c encode_in_pack_object_header: respect output buffer length 2017-03-24 12:34:07 -07:00
bulk-checkin.h cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
bundle.c bundle: don't leak an fd in case of early return 2016-04-01 10:33:18 -07:00
bundle.h Merge branch 'jc/unseekable-bundle' 2011-10-21 16:04:32 -07:00
cache-tree.c cache: convert struct cache_entry to use struct object_id 2016-09-07 12:59:42 -07:00
cache-tree.h cache-tree: introduce write_index_as_tree() 2015-08-04 22:02:11 -07:00
cache.h Merge branch 'jh/add-index-entry-optim' 2017-04-26 15:39:07 +09:00
check_bindir check_bindir: avoid "test <cond> -a/-o <cond>" 2014-06-09 14:47:06 -07:00
check-builtins.sh check-builtins: strip executable suffix $X when enumerating builtins 2015-02-05 12:03:27 -08:00
check-racy.c check-racy.c: use error_errno() 2016-05-09 12:29:08 -07:00
color.c Merge branch 'nd/log-graph-configurable-colors' 2017-02-02 13:36:58 -08:00
color.h Merge branch 'js/color-on-windows-comment' 2016-07-11 10:31:09 -07:00
column.c use xmallocz to avoid size arithmetic 2016-02-22 14:51:09 -08:00
column.h column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
combine-diff.c Merge branch 'bc/object-id' 2017-04-19 21:37:13 -07:00
command-list.txt relink: retire the command 2017-01-25 14:42:37 -08:00
commit-slab.h Merge branch 'vs/typofix' 2016-08-12 09:47:37 -07:00
commit.c Merge branch 'rs/commit-parsing-optim' 2017-03-10 13:24:22 -08:00
commit.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
common-main.c attr: use hashmap for attribute dictionary 2017-02-01 13:46:53 -08:00
config.c Merge branch 'nd/conditional-config-in-early-config' 2017-04-26 15:39:05 +09: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 'jh/mingw-openssl-sha1' 2017-03-12 23:21:33 -07:00
configure.ac Makefile & configure: reword inaccurate comment about PCRE 2017-05-21 08:25:37 +09:00
connect.c Merge branch 'sf/putty-w-args' 2017-04-26 15:39:10 +09:00
connect.h connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
connected.c check_connected: accept an env argument 2016-10-10 13:54:02 -07:00
connected.h check_connected: accept an env argument 2016-10-10 13:54:02 -07:00
convert.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
convert.h convert: unify the "auto" handling of CRLF 2016-07-06 11:53:51 -07:00
copy.c copy.c: use error_errno() 2016-05-09 12:29:08 -07:00
COPYING Update COPYING with GPLv2 with new FSF address 2010-01-17 14:29:37 -08:00
credential-cache--daemon.c i18n: credential-cache--daemon: mark advice for translation 2016-10-17 14:51:47 -07:00
credential-cache.c Merge branch 'nd/conditional-config-include' 2017-04-23 22:07:46 -07:00
credential-store.c path.c: and an option to call real_path() in expand_user_path() 2017-04-14 23:51:38 -07:00
credential.c credential: let empty credential specs reset helper list 2016-02-26 10:58:14 -08:00
credential.h
csum-file.c sha1fd_check: die when we cannot open the file 2015-03-19 13:35:15 -07:00
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 'dt/xgethostname-nul-termination' 2017-04-23 22:07:57 -07:00
date.c date: add "unix" format 2016-07-27 14:15:51 -07:00
decorate.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
decorate.h decorate: allow const objects to be decorated 2008-08-20 13:30:49 -07:00
delta.h comments: fix misuses of "nor" 2014-03-31 15:29:27 -07:00
diff-delta.c create_delta_index: simplify condition always evaluating to true 2013-08-18 12:56:23 -07:00
diff-lib.c commit: fix empty commit creation when there's no changes but ita entries 2016-10-24 10:48:23 -07:00
diff-no-index.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
diff.c fix minor typos 2017-05-01 11:01:52 +09:00
diff.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
diffcore-break.c Merge branch 'tk/diffcore-delta-remove-unused' 2016-11-17 13:45:22 -08:00
diffcore-delta.c Merge branch 'tk/diffcore-delta-remove-unused' 2016-11-17 13:45:22 -08:00
diffcore-order.c use QSORT 2016-09-29 15:42:18 -07:00
diffcore-pickaxe.c Merge branch 'js/regexec-buf' 2017-03-24 13:07:35 -07:00
diffcore-rename.c Merge branch 'tk/diffcore-delta-remove-unused' 2016-11-17 13:45:22 -08:00
diffcore.h Merge branch 'tk/diffcore-delta-remove-unused' 2016-11-17 13:45:22 -08:00
dir-iterator.c dir_iterator: new API for iterating over a directory tree 2016-06-20 11:38:21 -07:00
dir-iterator.h dir_iterator: new API for iterating over a directory tree 2016-06-20 11:38:21 -07:00
dir.c Merge branch 'sb/checkout-recurse-submodules' 2017-03-28 14:05:58 -07:00
dir.h submodule: add absorb-git-dir function 2016-12-12 15:15:07 -08:00
editor.c editor.c: use error_errno() 2016-05-09 12:29:08 -07:00
entry.c entry.c: create submodules when interesting 2017-03-16 14:07:16 -07:00
environment.c Merge branch 'jk/snprintf-cleanups' 2017-04-16 23:29:26 -07:00
exec_cmd.c Merge branch 'js/exec-path-coverity-workaround' 2017-01-31 13:14:57 -08:00
exec_cmd.h common-main: stop munging argv[0] path 2016-11-29 11:01:48 -08:00
fast-import.c Merge branch 'jk/war-on-git-path' 2017-04-26 15:39:08 +09:00
fetch-pack.c Merge branch 'dt/xgethostname-nul-termination' 2017-04-23 22:07:57 -07:00
fetch-pack.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
fmt-merge-msg.h fmt-merge-msg: use branch.$name.description 2011-10-07 10:11:47 -07:00
fsck.c Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
fsck.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
generate-cmdlist.sh generate-cmdlist: re-implement as shell script 2015-08-25 11:24:31 -07:00
gettext.c gettext: add is_utf8_locale() 2016-07-01 12:44:57 -07:00
gettext.h gettext: add is_utf8_locale() 2016-07-01 12:44:57 -07:00
git-add--interactive.perl Merge branch 'va/i18n-perl-scripts' 2017-04-19 21:37:17 -07:00
git-archimport.perl git-archimport: use a lowercase "usage:" string 2013-02-24 13:31:06 -08:00
git-bisect.sh i18n: unmark die messages for translation 2016-06-17 15:46:10 -07:00
git-compat-util.h Merge branch 'dt/xgethostname-nul-termination' 2017-04-23 22:07:57 -07:00
git-cvsexportcommit.perl git-cvsexportcommit: use a lowercase "usage:" string 2013-02-24 13:31:07 -08:00
git-cvsimport.perl
git-cvsserver.perl typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
git-difftool--helper.sh difftool: always honor fatal error exit codes 2016-08-15 15:24:05 -07:00
git-filter-branch.sh filter-branch: fix --prune-empty on parentless commits 2017-03-03 12:43:37 -08:00
git-instaweb.sh
git-merge-octopus.sh git-merge-octopus: do not capitalize "octopus" 2016-09-08 12:17:10 -07:00
git-merge-one-file.sh Merge branch 'jk/no-diff-emit-common' 2016-02-26 13:37:14 -08:00
git-merge-resolve.sh
git-mergetool--lib.sh mergetool: honor mergetool.$tool.trustExitCode for built-in tools 2016-11-29 10:54:03 -08:00
git-mergetool.sh mergetool: fix running in subdir when rerere enabled 2017-01-10 13:22:51 -08:00
git-p4.py git-p4: don't use name-rev to get current branch 2017-04-16 21:13:26 -07:00
git-parse-remote.sh i18n: git-parse-remote.sh: mark strings for translation 2016-04-19 12:07:49 -07:00
git-quiltimport.sh git-quiltimport: add commandline option --series <file> 2015-09-01 11:10:07 -07:00
git-rebase--am.sh rebase: update comment about FreeBSD /bin/sh 2016-06-17 11:04:38 -07:00
git-rebase--interactive.sh rebase -i: use the rebase--helper builtin 2017-02-09 14:55:40 -08:00
git-rebase--merge.sh Merge branch 'em/newer-freebsd-shells-are-fine-with-returns' 2016-06-27 09:56:52 -07:00
git-rebase.sh Merge branch 'gb/rebase-signoff' 2017-04-26 15:39:02 +09:00
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 request-pull: drop old USAGE stuff 2017-01-15 16:23:23 -08:00
git-send-email.perl Merge branch 'jh/send-email-one-cc' 2017-03-10 13:24:23 -08:00
git-sh-i18n.sh i18n: rebase-interactive: mark here-doc strings for translation 2016-06-17 15:45:48 -07:00
git-sh-setup.sh Merge branch 'va/i18n-even-more' 2016-12-27 00:11:45 -08:00
git-stash.sh stash: keep untracked files intact in stash -k 2017-03-22 14:55:56 -07:00
git-submodule.sh submodule: prevent backslash expantion in submodule names 2017-04-16 20:09:36 -07:00
git-svn.perl git svn: fix authentication with 'branch' 2017-03-07 21:29:03 +00:00
GIT-VERSION-GEN Git 2.13 2017-05-09 23:26:02 +09:00
git-web--browse.sh git-web--browse.sh: use the $( ... ) construct for command substitution 2014-04-23 15:17:02 -07:00
git.c Merge branch 'bw/recurse-submodules-relative-fix' 2017-03-30 14:07:15 -07:00
git.rc Makefile: Fix compilation of Windows resource file 2014-01-23 10:00:28 -08:00
gpg-interface.c gpg-interface: use more status letters 2016-10-12 10:41:59 -07:00
gpg-interface.h gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
graph.c Merge branch 'rs/swap' 2017-02-15 12:54:19 -08:00
graph.h graph: add support for --line-prefix on all graph-aware output 2016-08-31 18:07:09 -07:00
grep.c convert unchecked snprintf into xsnprintf 2017-03-30 14:59:50 -07:00
grep.h grep: add submodules as a grep source type 2016-12-22 11:47:33 -08:00
hash.h Makefile: add DC_SHA1 knob 2017-03-17 10:40:25 -07:00
hashmap.c hashmap: add disallow_rehash setting 2017-03-22 13:41:41 -07:00
hashmap.h hashmap: add disallow_rehash setting 2017-03-22 13:41:41 -07:00
help.c help: improve is_executable() on Windows 2017-01-30 09:04:17 -08:00
help.h help: add help_unknown_ref() 2013-05-08 15:31:54 -07:00
hex.c Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ 2017-03-26 22:08:21 -07:00
http-backend.c pkt-line: rename packet_write() to packet_write_fmt() 2016-10-17 11:36:50 -07:00
http-fetch.c common-main: call git_setup_gettext() 2016-07-01 15:09:10 -07:00
http-push.c http-push: don't check return value of lookup_unknown_object() 2017-03-18 10:14:07 -07:00
http-walker.c Merge branch 'jk/http-walker-buffer-underflow-fix' 2017-03-17 13:50:26 -07:00
http.c Merge branch 'dt/http-postbuffer-can-be-large' 2017-04-23 22:07:45 -07:00
http.h http.postbuffer: allow full range of ssize_t values 2017-04-13 18:24:32 -07:00
ident.c Merge branch 'dt/xgethostname-nul-termination' 2017-04-23 22:07:57 -07:00
imap-send.c convert unchecked snprintf into xsnprintf 2017-03-30 14:59:50 -07:00
INSTALL git-imap-send: use libcurl for implementation 2014-11-10 09:17:27 -08:00
iterator.h refs: introduce an iterator interface 2016-06-20 11:38:20 -07:00
khash.h convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08:00
kwset.c
kwset.h kwset: use unsigned char to store values with high-bit set 2015-03-02 12:32:24 -08:00
levenshtein.c convert trivial cases to ALLOC_ARRAY 2016-02-22 14:51:09 -08: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
line-log.c Merge branch 'vn/line-log-memcpy-size-fix' 2017-03-12 23:21:35 -07:00
line-log.h line-log.c: make line_log_data_init() static 2015-01-15 11:05:47 -08:00
line-range.c use SWAP macro 2017-01-30 14:17:00 -08:00
line-range.h
list-objects.c struct name_entry: use struct object_id instead of unsigned char sha1[20] 2016-04-25 14:23:42 -07:00
list-objects.h list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
list.h list: avoid incompatibility with *BSD sys/queue.h 2016-07-18 11:06:51 -07:00
ll-merge.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
ll-merge.h merge-recursive --patience 2010-08-26 09:20:03 -07:00
lockfile.c lockfile: LOCK_REPORT_ON_ERROR 2016-12-07 11:31:59 -08:00
lockfile.h lockfile: move REPORT_ON_ERROR bit elsewhere 2016-12-27 09:12:09 -08:00
log-tree.c pretty: use fmt_output_email_subject() 2017-03-01 15:09:17 -08:00
log-tree.h pretty: use fmt_output_email_subject() 2017-03-01 15:09:17 -08:00
mailinfo.c Merge branch 'lt/mailinfo-in-body-header-continuation' 2017-04-19 21:37:15 -07:00
mailinfo.h mailinfo: handle in-body header continuations 2016-09-21 10:23:11 -07:00
mailmap.c cocci: refactor common patterns to use xstrdup_or_null() 2016-10-12 11:22:10 -07:00
mailmap.h
Makefile perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do 2017-05-21 08:25:38 +09:00
match-trees.c match-trees: convert several leaf functions to use struct object_id 2016-04-25 14:26:29 -07:00
merge-blobs.c Merge branch 'jk/no-diff-emit-common' 2016-02-26 13:37:14 -08:00
merge-blobs.h Which merge_file() function do you mean? 2012-12-09 23:05:27 -08:00
merge-recursive.c Merge branch 'mm/merge-rename-delete-message' 2017-02-27 13:57:12 -08:00
merge-recursive.h merge-recursive: offer an option to retain the output in 'obuf' 2016-08-01 11:45:30 -07:00
merge.c lockfile: LOCK_REPORT_ON_ERROR 2016-12-07 11:31:59 -08:00
mergesort.c mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
mergesort.h
mru.c add generic most-recently-used list 2016-07-29 11:05:07 -07:00
mru.h add generic most-recently-used list 2016-07-29 11:05:07 -07:00
name-hash.c name-hash: fix buffer overrun 2017-03-31 20:57:18 -07:00
notes-cache.c notes: allow treeish expressions as notes ref 2016-01-12 15:10:01 -08:00
notes-cache.h introduce notes-cache interface 2010-04-01 23:58:30 -07:00
notes-merge.c replace strbuf_addstr(git_path()) with git_path_buf() 2017-04-20 21:04:20 -07:00
notes-merge.h notes: extract enum notes_merge_strategy to notes-utils.h 2015-08-17 15:36:23 -07:00
notes-utils.c notes: allow treeish expressions as notes ref 2016-01-12 15:10:01 -08:00
notes-utils.h notes: extract parse_notes_merge_strategy to notes-utils 2015-08-17 15:38:32 -07:00
notes.c notes: do not break note_tree structure in note_tree_consolidate() 2017-03-27 21:21:25 -07:00
notes.h Merge branch 'jk/notes-merge-from-anywhere' 2016-02-03 14:15:59 -08:00
object.c use SWAP macro 2017-01-30 14:17:00 -08:00
object.h fetch-pack: cache results of for_each_alternate_ref 2017-02-08 15:39:55 -08:00
oidset.c add oidset API 2017-02-08 15:39:55 -08:00
oidset.h add oidset API 2017-02-08 15:39:55 -08:00
pack-bitmap-write.c odb_mkstemp: write filename into strbuf 2017-03-28 15:28:04 -07:00
pack-bitmap.c sha1_file: rename git_open_noatime() to git_open() 2016-10-25 10:59:13 -07:00
pack-bitmap.h pack-bitmap.c: make pack_bitmap_filename() static 2015-01-15 11:04:10 -08:00
pack-check.c Merge branch 'rs/qsort' 2016-10-10 14:03:46 -07:00
pack-objects.c
pack-objects.h pack-objects: enforce --depth limit in reused deltas 2017-01-27 16:24:44 -08:00
pack-revindex.c use SWAP macro 2017-01-30 14:17:00 -08:00
pack-revindex.h pack-revindex: store entries directly in packed_git 2015-12-21 14:36:28 -08:00
pack-write.c odb_mkstemp: write filename into strbuf 2017-03-28 15:28:04 -07:00
pack.h pack.h: define largest possible encoded object size 2017-03-24 12:34:07 -07:00
pager.c Merge branch 'jk/pager-in-use' 2017-03-28 14:05:59 -07:00
parse-options-cb.c Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
parse-options.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
parse-options.h ref-filter: add --no-contains option to tag/branch/for-each-ref 2017-03-24 12:15:26 -07:00
patch-delta.c
patch-ids.c Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ 2017-03-26 22:08:21 -07:00
patch-ids.h Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ 2017-03-26 22:08:21 -07:00
path.c Merge branch 'nd/conditional-config-include' 2017-04-23 22:07:46 -07:00
pathspec.c Merge branch 'ps/pathspec-empty-prefix-origin' 2017-04-26 15:39:03 +09:00
pathspec.h pathspec: allow querying for attributes 2017-03-13 15:28:54 -07:00
pkt-line.c pkt-line: add functions to read/write flush terminated packet streams 2016-10-17 11:36:50 -07:00
pkt-line.h pkt-line: add functions to read/write flush terminated packet streams 2016-10-17 11:36:50 -07:00
preload-index.c preload-index: avoid lstat for skip-worktree items 2017-02-10 14:44:18 -08:00
pretty.c Merge branch 'rs/log-email-subject' 2017-03-10 13:24:24 -08:00
prio-queue.c Merge branch 'jk/prio-queue-avoid-swap-with-self' 2017-05-01 14:14:43 +09:00
prio-queue.h prio-queue: make output stable with respect to insertion 2014-07-15 11:02:54 -07:00
progress.c stop_progress_msg: convert xsnprintf to xstrfmt 2017-02-16 11:28:02 -08:00
progress.h nicer display of thin pack completion 2007-11-08 15:43:41 -08:00
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 Merge branch 'nd/icase' 2016-07-19 13:22:17 -07:00
quote.h Merge branch 'nd/icase' 2016-07-19 13:22:17 -07:00
reachable.c Convert object iteration callbacks to struct object_id 2017-02-22 10:12:15 -08:00
reachable.h pack-objects: match prune logic for discarding objects 2014-10-16 10:10:43 -07:00
read-cache.c i18n: read-cache: typofix 2017-05-01 11:08:02 +09:00
README.md README: create HTTP/HTTPS links from URLs in Markdown 2017-03-01 14:45:45 -08:00
ref-filter.c Merge branch 'bc/object-id' 2017-04-19 21:37:13 -07:00
ref-filter.h Merge branch 'bc/object-id' 2017-04-19 21:37:13 -07:00
reflog-walk.c refs: convert each_reflog_ent_fn to struct object_id 2017-02-22 10:12:15 -08:00
reflog-walk.h convert "enum date_mode" into a struct 2015-06-29 11:39:07 -07:00
refs.c Merge branch 'mh/separate-ref-cache' 2017-04-26 15:39:13 +09:00
refs.h refs_verify_refname_available(): implement once for all backends 2017-04-16 21:32:45 -07:00
RelNotes First batch after 2.12 2017-02-27 14:04:24 -08:00
remote-curl.c Merge branch 'dt/http-postbuffer-can-be-large' 2017-04-23 22:07:45 -07:00
remote-testsvn.c common-main: call git_extract_argv0_path() 2016-07-01 15:09:10 -07:00
remote.c Merge branch 'bw/push-options-recursively-to-submodules' 2017-04-19 21:37:14 -07:00
remote.h Merge branch 'bw/push-options-recursively-to-submodules' 2017-04-19 21:37:14 -07:00
replace_object.c register_replace_ref(): rewrite to take an object_id argument 2015-05-25 12:19:35 -07:00
rerere.c hold_locked_index(): align error handling with hold_lockfile_for_update() 2016-12-07 11:31:59 -08:00
rerere.h Merge branch 'jc/rerere-multi' 2016-04-25 15:17:15 -07:00
resolve-undo.c cache: convert struct cache_entry to use struct object_id 2016-09-07 12:59:42 -07:00
resolve-undo.h convert unmerge_cache to take struct pathspec 2013-07-15 10:56:08 -07:00
revision.c log: make --regexp-ignore-case work with --perl-regexp 2017-05-21 08:25:37 +09:00
revision.h Merge branch 'rs/path-name-safety-cleanup' 2017-03-24 13:07:36 -07:00
run-command.c Merge branch 'jk/execv-dashed-external' 2017-03-24 13:07:34 -07:00
run-command.h execv_dashed_external: wait for child on signal death 2017-01-09 13:41:40 -08:00
send-pack.c Merge branch 'bc/object-id' 2017-04-19 21:37:13 -07:00
send-pack.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
sequencer.c Merge branch 'sh/rebase-i-reread-todo-after-exec' 2017-05-01 14:14:44 +09:00
sequencer.h sequencer (rebase -i): learn about the 'verbose' mode 2017-01-09 14:57:29 -08:00
server-info.c server-info: avoid calling fclose(3) twice in update_info_file() 2017-04-17 17:37:28 -07:00
setup.c Merge branch 'bw/recurse-submodules-relative-fix' 2017-03-30 14:07:15 -07:00
sh-i18n--envsubst.c remove unnecessary check before QSORT 2016-09-29 15:42:18 -07:00
sha1_file.c Merge branch 'jk/loose-object-fsck' 2017-04-23 22:07:50 -07:00
sha1_name.c Merge branch 'bc/object-id' 2017-04-19 21:37:13 -07:00
sha1-array.c Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
sha1-array.h Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
sha1-lookup.c sha1-lookup: handle duplicates in sha1_pos() 2014-10-01 13:32:19 -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 Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
shell.c Merge branch 'maint-2.8' into maint-2.9 2017-05-05 13:13:48 +09:00
shortlog.h shortlog: group by committer information 2016-12-15 16:19:13 -08:00
show-index.c common-main: call git_setup_gettext() 2016-07-01 15:09:10 -07:00
sideband.c Merge branch 'lf/recv-sideband-cleanup' 2016-07-19 13:22:14 -07:00
sideband.h sideband.c: make send_sideband() return void 2016-06-16 11:40:19 -07:00
sigchain.c sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
sigchain.h sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
split-index.c split-index: add {add,remove}_split_index() functions 2017-03-01 13:24:21 -08:00
split-index.h split-index: add {add,remove}_split_index() functions 2017-03-01 13:24:21 -08:00
strbuf.c Merge branch 'rs/freebsd-getcwd-workaround' 2017-03-30 14:07:15 -07:00
strbuf.h Merge branch 'jk/interpret-branch-name' 2017-03-14 15:23:18 -07:00
streaming.c Merge branch 'jk/pack-objects-optim-mru' 2016-10-10 14:03:47 -07:00
streaming.h streaming: make stream_blob_to_fd take struct object_id 2016-09-07 12:59:42 -07:00
string-list.c Merge branch 'jh/string-list-micro-optim' 2017-04-23 22:07:47 -07:00
string-list.h Merge branch 'sb/string-list' 2014-12-22 12:27:30 -08:00
submodule-config.c Merge branch 'sb/checkout-recurse-submodules' 2017-03-28 14:05:58 -07:00
submodule-config.h update submodules: add submodule config parsing 2017-03-15 18:15:54 -07:00
submodule.c Merge branch 'sb/checkout-recurse-submodules' 2017-04-23 22:07:54 -07:00
submodule.h Merge branch 'nd/files-backend-git-dir' 2017-04-19 21:37:19 -07:00
symlinks.c symlinks: remove PATH_MAX limitation 2014-07-07 11:22:42 -07:00
tag.c gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
tag.h verify-tag: move tag verification code to tag.c 2016-04-22 14:06:46 -07:00
tar.h tar-tree: Introduce write_entry() 2006-03-25 16:35:43 -08:00
tempfile.c tempfile: set errno to a known value before calling ferror() 2017-02-17 14:40:29 -08:00
tempfile.h mingw: ensure temporary file handles are not inherited by child processes 2016-08-23 09:09:55 -07:00
thread-utils.c thread-utils.c: detect CPU count on older BSD-like systems 2015-03-10 15:13:28 -07:00
thread-utils.h pack-objects: set number of threads before checking and warning 2014-10-13 12:53:46 -07:00
tmp-objdir.c tmp-objdir: quote paths we add to alternates 2016-12-12 15:10:46 -08:00
tmp-objdir.h tmp-objdir: introduce API for temporary object directories 2016-10-10 13:54:02 -07:00
trace.c trace: do not fall back to stderr 2016-08-05 09:28:17 -07:00
trace.h pkt-line: support tracing verbatim pack contents 2015-06-16 13:24:22 -07:00
trailer.c trailer: have function to describe trailer layout 2016-11-29 14:22:18 -08:00
trailer.h trailer: have function to describe trailer layout 2016-11-29 14:22:18 -08:00
transport-helper.c transport-helper: replace checked snprintf with xsnprintf 2017-03-30 14:59:50 -07:00
transport.c Merge branch 'bw/push-options-recursively-to-submodules' 2017-04-19 21:37:14 -07:00
transport.h for_each_alternate_ref: pass name/oid instead of ref struct 2017-02-08 15:39:55 -08:00
tree-diff.c Merge branch 'jk/avoid-unbounded-alloca' 2016-06-27 09:56:48 -07:00
tree-walk.c grep: enable recurse-submodules to work on <tree> objects 2016-12-22 11:47:33 -08:00
tree-walk.h fsck: handle bad trees like other errors 2016-09-27 14:09:10 -07:00
tree.c use QSORT 2016-09-29 15:42:18 -07:00
tree.h
unicode_width.h unicode_width.h: update the width tables to Unicode 9.0 2016-12-14 09:48:07 -08:00
unimplemented.sh unimplemented.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
unix-socket.c Merge branch 'rs/strbuf-getcwd' 2014-09-02 13:28:44 -07:00
unix-socket.h credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
unpack-trees.c Merge branch 'jh/unpack-trees-micro-optim' 2017-04-23 22:07:48 -07:00
unpack-trees.h unpack-trees: check if we can perform the operation for submodules 2017-03-16 14:07:16 -07:00
upload-pack.c upload-pack: report "not our ref" to client 2017-02-23 12:14:40 -08:00
url.c introduce hex2chr() for converting two hexadecimal digits to a character 2016-09-07 10:42:46 -07:00
url.h url: decode buffers that are not NUL-terminated 2011-07-20 11:38:34 -07:00
urlmatch.c urlmatch: allow globbing for the URL host part 2017-02-01 13:22:50 -08:00
urlmatch.h urlmatch: include host in urlmatch ranking 2017-02-01 13:22:46 -08:00
usage.c Merge branch 'jk/vreport-sanitize' 2017-01-31 13:14:56 -08:00
userdiff.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
userdiff.h diff: clarify textconv interface 2016-02-22 10:40:35 -08:00
utf8.c utf8: accept "latin-1" as ISO-8859-1 2016-09-26 18:16:23 -07:00
utf8.h typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
varint.c cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
varint.h cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
version.c include agent identifier in capability string 2012-08-03 13:03:34 -07:00
version.h
versioncmp.c versioncmp: generalize version sort suffix reordering 2017-01-12 12:25:24 -08:00
walker.c walker: let walker_say take arbitrary formats 2016-07-08 10:11:23 -07:00
walker.h walker: let walker_say take arbitrary formats 2016-07-08 10:11:23 -07:00
wildmatch.c typofix: assorted typofixes in comments, documentation and messages 2016-05-06 13:16:37 -07:00
wildmatch.h wildmatch: support "no FNM_PATHNAME" mode 2013-01-01 15:32:37 -08:00
worktree.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
worktree.h worktree: check if a submodule uses worktrees 2016-12-12 15:15:07 -08:00
wrap-for-bin.sh wrap-for-bin.sh: regenerate bin-wrappers when switching branches 2016-05-10 13:23:34 -07:00
wrapper.c Merge branch 'dt/xgethostname-nul-termination' 2017-04-23 22:07:57 -07:00
write_or_die.c run-command: move check_pipe() from write_or_die to run_command 2016-10-17 11:36:49 -07:00
ws.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
wt-status.c short status: improve reporting for submodule changes 2017-03-29 15:27:54 -07:00
wt-status.h Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ 2017-03-26 22:08:21 -07:00
xdiff-interface.c Merge branch 'js/regexec-buf' 2016-09-26 16:09:19 -07:00
xdiff-interface.h Convert read_mmblob to take struct object_id. 2016-09-07 12:59:42 -07:00
zlib.c zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw} 2015-03-05 15:46:03 -08:00

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.

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