Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Alban Gruin 767a9c417e rebase -i: stop checking out the tip of the branch to rebase
One of the first things done when using a sequencer-based
rebase (ie. `rebase -i', `rebase -r', or `rebase -m') is to make a todo
list.  This requires knowledge of the commit range to rebase.  To get
the oid of the last commit of the range, the tip of the branch to rebase
is checked out with prepare_branch_to_be_rebased(), then the oid of the
head is read.  After this, the tip of the branch is not even modified.
The `am' backend, on the other hand, does not check out the branch.

On big repositories, it's a performance penalty: with `rebase -i', the
user may have to wait before editing the todo list while git is
extracting the branch silently, and "quiet" rebases will be slower than
`am'.

Since we already have the oid of the tip of the branch in
`opts->orig_head', it's useless to switch to this commit.

This removes the call to prepare_branch_to_be_rebased() in
do_interactive_rebase(), and adds a `orig_head' parameter to
get_revision_ranges().  prepare_branch_to_be_rebased() is removed as it
is no longer used.

This introduces a visible change: as we do not switch on the tip of the
branch to rebase, no reflog entry is created at the beginning of the
rebase for it.

Unscientific performance measurements, performed on linux.git, are as
follow:

  Before this patch:

    $ time git rebase -m --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50

    real    0m8,940s
    user    0m6,830s
    sys     0m2,121s

  After this patch:

    $ time git rebase -m --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50

    real    0m1,834s
    user    0m0,916s
    sys     0m0,206s

Reported-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-01-24 10:29:42 -08:00
.github point pull requesters to GitGitGadget 2019-03-13 11:07:50 +09:00
block-sha1
builtin rebase -i: stop checking out the tip of the branch to rebase 2020-01-24 10:29:42 -08:00
ci Merge branch 'sg/travis-gcc-4.8' 2019-07-29 12:39:13 -07:00
compat Sync with 2.22.2 2019-12-06 16:31:30 +01:00
contrib Merge branch 'js/visual-studio' 2019-08-02 13:12:02 -07:00
Documentation Git 2.23.1 2019-12-06 16:31:32 +01:00
ewah
git-gui
gitk-git Merge git://ozlabs.org/~paulus/gitk 2019-03-18 11:18:49 +09:00
gitweb gitweb: make hash size independent 2019-04-01 11:57:39 +09:00
mergetools mergetools: add support for smerge (Sublime Merge) 2019-04-04 18:21:25 +09:00
negotiator
perl Git.pm: make hash size independent 2019-04-01 11:57:39 +09:00
po l10n: zh_CN: for git v2.23.0 l10n round 1~2 2019-08-16 16:59:17 +08:00
ppc *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
refs dir-iterator: release strbuf after use 2019-08-07 12:25:35 -07:00
sha1collisiondetection@855827c583 sha1dc: update from upstream 2019-05-14 16:45:01 +09:00
sha1dc sha1dc: update from upstream 2019-05-14 16:45:01 +09:00
sha256
t Sync with 2.22.2 2019-12-06 16:31:30 +01:00
templates
trace2 Merge branch 'sg/trace2-rename' 2019-05-30 10:50:45 -07:00
vcs-svn *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
xdiff Merge branch 'cb/xdiff-no-system-includes-in-dot-c' into maint 2019-08-09 15:18:19 -07:00
.clang-format clang-format: use git grep to generate the ForEachMacros list 2019-06-04 14:50:40 -07:00
.editorconfig
.gitattributes Mark .bat files as requiring CR/LF endings 2019-06-20 14:03:05 -07:00
.gitignore Merge branch 'js/visual-studio' 2019-08-02 13:12:02 -07:00
.gitmodules
.mailmap .mailmap: update email address of Philip Oakley 2019-08-11 15:07:51 -07:00
.travis.yml travis-ci: build with GCC 4.8 as well 2019-07-19 14:06:01 -07:00
.tsan-suppressions
abspath.c
aclocal.m4
advice.c Merge branch 'ra/cherry-pick-revert-skip' 2019-07-19 11:30:21 -07:00
advice.h Merge branch 'ra/cherry-pick-revert-skip' 2019-07-19 11:30:21 -07:00
alias.c
alias.h
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 apply: make parse_git_diff_header public 2019-07-11 14:29:27 -07:00
apply.h apply: make parse_git_diff_header public 2019-07-11 14:29:27 -07:00
archive-tar.c archive: convert struct archiver_args to object_id 2019-04-01 11:57:39 +09:00
archive-zip.c archive: convert struct archiver_args to object_id 2019-04-01 11:57:39 +09:00
archive.c tree-walk.c: remove the_repo from get_tree_entry() 2019-06-27 12:45:17 -07:00
archive.h Merge branch 'dl/no-extern-in-func-decl' 2019-05-13 23:50:32 +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 bisect: make diff-tree output prettier 2019-03-01 07:31:38 +09:00
bisect.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
blame.c Merge branch 'nd/tree-walk-with-repo' 2019-07-19 11:30:21 -07:00
blame.h Merge branch 'br/blame-ignore' 2019-07-19 11:30:20 -07:00
blob.c object: convert create_object() to use object_id 2019-06-20 10:20:51 -07:00
blob.h
branch.c Merge branch 'nd/switch-and-restore' 2019-07-09 15:25:44 -07:00
branch.h Merge branch 'nd/switch-and-restore' 2019-07-09 15:25:44 -07:00
builtin.h Merge branch 'ab/test-env' 2019-07-25 13:59:20 -07:00
bulk-checkin.c convert has_sha1_file() callers to has_object_file() 2019-01-08 09:41:06 -08:00
bulk-checkin.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
bundle.c bundle verify: error out if called without an object database 2019-05-28 13:04:14 -07:00
bundle.h create_bundle(): drop unused "header" parameter 2019-01-24 12:35:44 -08:00
cache-tree.c cache-tree/blame: avoid reusing the DEBUG constant 2019-06-20 14:03:05 -07: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 'sg/rebase-progress' into maint 2019-07-29 12:38:19 -07:00
chdir-notify.c
chdir-notify.h
check_bindir
check-builtins.sh
checkout.c
checkout.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
color.c
color.h
column.c column: drop unused "opts" parameter in item_length() 2019-01-24 12:35:44 -08:00
column.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
combine-diff.c Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
command-list.txt help: move git-diff and git-reset to different groups 2019-05-07 13:04:48 +09:00
commit-graph.c Merge branch 'ds/commit-graph-incremental' 2019-08-09 10:13:13 -07:00
commit-graph.h commit-graph: verify chains with --shallow mode 2019-06-19 20:46:26 -07: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-slab.h
commit.c Merge branch 'ds/close-object-store' into maint 2019-07-29 12:38:22 -07:00
commit.h Merge branch 'dl/no-extern-in-func-decl' 2019-05-13 23:50:32 +09:00
common-main.c trace2: report peak memory usage of the process 2019-04-16 13:37:07 +09:00
config.c config: work around bug with includeif:onbranch and early config 2019-07-31 15:20:56 -07:00
config.h Merge branch 'dl/no-extern-in-func-decl' 2019-05-13 23:50:32 +09:00
config.mak.dev Makefile: allow for combining DEVELOPER=1 and CFLAGS="..." 2019-02-24 07:35:07 -08:00
config.mak.in
config.mak.uname Sync with 2.22.2 2019-12-06 16:31:30 +01:00
configure.ac configure: Detect linking style for HP aCC on HP-UX 2019-06-07 10:06:11 -07:00
connect.c Sync with 2.21.1 2019-12-06 16:31:23 +01:00
connect.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
connected.c check_everything_connected: assume alternate ref tips are valid 2019-07-01 10:11:09 -07:00
connected.h clone: do faster object check for partial clones 2019-04-21 14:08:53 +09:00
convert.c Merge branch 'jh/resize-convert-scratch-buffer' 2019-04-10 02:14:22 +09:00
convert.h
copy.c
COPYING
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 *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
ctype.c
daemon.c
date.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
decorate.c hashmap: convert sha1hash() to oidhash() 2019-06-20 10:44:22 -07:00
decorate.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
delta-islands.c Merge branch 'jk/oidhash' 2019-07-09 15:25:43 -07:00
delta-islands.h delta-islands: respect progress flag 2019-06-20 13:29:49 -07:00
delta.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
detect-compiler
diff-delta.c
diff-lib.c mark_fsmonitor_valid(): mark the index as changed if needed 2019-05-28 12:43:43 -07:00
diff-no-index.c Merge branch 'nd/diff-parseopt-4' 2019-04-25 16:41:12 +09:00
diff.c Merge branch 'js/unmap-before-ext-diff' into maint 2019-07-29 12:38:11 -07:00
diff.h range-diff: suppress line count in outer diff 2019-07-11 14:29:27 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c wildmatch: remove unused wildopts parameter 2017-06-23 18:27:07 -07:00
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 'jk/oidhash' 2019-07-09 15:25:43 -07:00
diffcore.h
dir-iterator.c dir-iterator: add flags parameter to dir_iterator_begin 2019-07-11 13:52:15 -07:00
dir-iterator.h dir-iterator: add flags parameter to dir_iterator_begin 2019-07-11 13:52:15 -07:00
dir.c cleanup: fix possible overflow errors in binary search, part 2 2019-06-13 11:28:53 -07:00
dir.h Merge branch 'dl/no-extern-in-func-decl' 2019-05-13 23:50:32 +09:00
editor.c pager: add a helper function to clear the last line in the terminal 2019-06-24 13:38:46 -07:00
entry.c fill_stat_cache_info(): prepare for an fsmonitor fix 2019-05-28 12:43:42 -07:00
environment.c Sync with 2.20.2 2019-12-06 16:31:12 +01:00
exec-cmd.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
exec-cmd.h *.[ch]: remove extern from function declarations using sed 2019-05-05 15:20:08 +09:00
fast-import.c Sync with 2.22.2 2019-12-06 16:31:30 +01:00
fetch-negotiator.c
fetch-negotiator.h
fetch-object.c
fetch-object.h
fetch-pack.c Merge branch 'nd/fetch-capability-tweak' 2019-07-09 15:25:43 -07:00
fetch-pack.h fetch_pack(): drop unused parameters 2019-03-20 18:34:09 +09:00
fmt-merge-msg.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
fsck.c Sync with 2.22.2 2019-12-06 16:31:30 +01:00
fsck.h
fsmonitor.c Merge branch 'cb/fsmonitor-intfix' into maint 2019-07-29 12:38:15 -07:00
fsmonitor.h mark_fsmonitor_valid(): mark the index as changed if needed 2019-05-28 12:43:43 -07:00
fuzz-commit-graph.c fuzz-commit-graph: initialize repo object 2019-02-07 13:02:26 -08:00
fuzz-pack-headers.c
fuzz-pack-idx.c fuzz: add fuzz testing for packfile indices. 2018-10-15 14:29:03 +09:00
generate-cmdlist.sh help -a: do not list commands that are excluded from the build 2019-04-19 14:03:24 +09:00
gettext.c Merge branch 'ab/test-env' 2019-07-25 13:59:20 -07:00
gettext.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
git-add--interactive.perl Merge branch 'pw/add-p-recount' into maint 2019-07-29 12:38:22 -07:00
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 Sync with 2.22.2 2019-12-06 16:31:30 +01:00
git-cvsexportcommit.perl cvsexportcommit: force crlf translation 2019-05-07 18:23:27 +09:00
git-cvsimport.perl perl: call timegm and timelocal with 4-digit year 2018-02-23 14:47:06 -08:00
git-cvsserver.perl cvsserver: use safe_pipe_capture for constant commands as well 2017-09-11 14:52:29 +09:00
git-difftool--helper.sh mergetool: use get_merge_tool function 2019-05-13 23:11:59 +09:00
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-stash.sh legacy stash: fix "rudimentary backport of -q" 2019-03-08 10:37:58 +09:00
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh Merge branch 'dl/difftool-mergetool' 2019-05-19 16:45:30 +09:00
git-mergetool.sh mergetool: use shell variable magic instead of awk 2019-06-12 13:20:56 -07:00
git-p4.py Merge branch 'sw/git-p4-unshelve-branched-files' into maint 2019-07-25 14:27:15 -07: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--preserve-merges.sh rebase: fold git-rebase--common into the -p backend 2019-05-15 10:57:32 +09:00
git-request-pull.sh request-pull: warn if the remote object is not the same as the local one 2019-05-28 13:06:25 -07:00
git-send-email.perl Merge branch 'ab/send-email-transferencoding-fix' 2019-06-13 13:18:46 -07:00
git-sh-i18n.sh tests: make GIT_TEST_GETTEXT_POISON a boolean 2019-06-21 09:42:49 -07:00
git-sh-setup.sh stash: optionally use the scripted version again 2019-03-07 09:41:40 +09:00
git-submodule.sh Sync with 2.21.1 2019-12-06 16:31:23 +01:00
git-svn.perl
GIT-VERSION-GEN Git 2.23.1 2019-12-06 16:31:32 +01:00
git-web--browse.sh
git.c Merge branch 'js/visual-studio' 2019-08-02 13:12:02 -07:00
git.rc mingw: embed a manifest to trick UAC into Doing The Right Thing 2019-06-27 12:55:45 -07:00
gpg-interface.c gpg-interface: do not scan past the end of buffer 2019-07-16 12:15:12 -07:00
gpg-interface.h
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 'bb/grep-pcre2-bug-message-fix' 2019-07-29 12:39:13 -07:00
grep.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
hash.h hash.h: move object_id definition from cache.h 2019-06-20 10:40:42 -07:00
hashmap.c
hashmap.h hashmap: convert sha1hash() to oidhash() 2019-06-20 10:44:22 -07:00
help.c Merge branch 'jk/help-unknown-ref-fix' 2019-06-13 13:19:42 -07:00
help.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
hex.c
http-backend.c http-backend: allow 64-character hex names 2019-04-01 11:57:38 +09:00
http-fetch.c
http-push.c object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
http-walker.c Merge branch 'bc/hash-transition-16' 2019-04-25 16:41:17 +09:00
http.c Make fread/fwrite-like functions in http.c more like fread/fwrite. 2019-05-08 12:15:25 +09:00
http.h Merge branch 'dl/no-extern-in-func-decl' 2019-05-13 23:50:32 +09:00
ident.c Merge branch 'ps/stash-in-c' 2019-04-22 11:14:43 +09:00
imap-send.c Merge branch 'nd/imap-send-typofix' 2019-02-12 09:00:25 -08:00
INSTALL
interdiff.c
interdiff.h
iterator.h
json-writer.c
json-writer.h
khash.h hashmap: convert sha1hash() to oidhash() 2019-06-20 10:44:22 -07:00
kwset.c Merge branch 'rs/copy-array' into maint 2019-07-29 12:38:15 -07:00
kwset.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c tree-walk.c: remove the_repo from get_tree_entry() 2019-06-27 12:45:17 -07:00
line-log.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
line-range.c
line-range.h
linear-assignment.c
linear-assignment.h
list-objects-filter-options.c Merge branch 'md/list-objects-filter-parse-msgfix' 2019-06-21 11:24:10 -07:00
list-objects-filter-options.h list-objects-filter: disable 'sparse:path' filters 2019-05-29 11:05:34 -07:00
list-objects-filter.c Merge branch 'md/list-objects-filter-memfix' into maint 2019-07-25 14:27:12 -07:00
list-objects-filter.h
list-objects.c rev-list: detect broken root trees 2019-04-10 12:59:39 +09: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 *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
log-tree.c Merge branch 'wh/author-committer-ident-config' 2019-03-07 09:59:53 +09:00
log-tree.h
ls-refs.c upload-pack: strip namespace from symref data 2019-05-28 10:02:00 -07:00
ls-refs.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
mailinfo.c
mailinfo.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
mailmap.c
mailmap.h
Makefile Merge branch 'js/visual-studio' 2019-08-02 13:12:02 -07:00
match-trees.c match-trees.c: remove the_repo from shift_tree*() 2019-06-27 12:45:17 -07:00
mem-pool.c
mem-pool.h
merge-blobs.c
merge-blobs.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
merge-recursive.c Merge branch 'en/disable-dir-rename-in-recursive-merge' 2019-08-08 14:26:10 -07: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 midx: implement midx_repack() 2019-06-11 10:34:40 -07:00
midx.h multi-pack-index: prepare 'repack' subcommand 2019-06-11 10:34:40 -07:00
name-hash.c cleanup: fix possible overflow errors in binary search, part 2 2019-06-13 11:28:53 -07:00
notes-cache.c
notes-cache.h
notes-merge.c notes-merge: switch to use the_hash_algo 2019-04-01 11:57:37 +09:00
notes-merge.h
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.c: remove the_repo from get_tree_entry() 2019-06-27 12:45:17 -07:00
notes.h notes: correct documentation of format_display_notes() 2019-05-07 19:08:10 +09:00
object-store.h Merge branch 'ds/object-info-for-prefetch-fix' into maint 2019-07-25 14:27:08 -07:00
object.c Merge branch 'jk/oidhash' 2019-07-09 15:25:43 -07:00
object.h object: convert create_object() to use object_id 2019-06-20 10:20:51 -07:00
oidmap.c Merge branch 'cc/test-oidmap' 2019-07-19 11:30:19 -07:00
oidmap.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
oidset.c Merge branch 'br/blame-ignore' 2019-07-19 11:30:20 -07:00
oidset.h Merge branch 'br/blame-ignore' 2019-07-19 11:30:20 -07:00
pack-bitmap-write.c pack-bitmap: convert khash_sha1 maps into kh_oid_map 2019-06-20 10:35:05 -07:00
pack-bitmap.c pack-bitmap: convert khash_sha1 maps into kh_oid_map 2019-06-20 10:35:05 -07:00
pack-bitmap.h pack-bitmap: convert khash_sha1 maps into kh_oid_map 2019-06-20 10:35:05 -07:00
pack-check.c
pack-objects.c hashmap: convert sha1hash() to oidhash() 2019-06-20 10:44:22 -07:00
pack-objects.h pack-objects: convert packlist_find() to use object_id 2019-06-20 09:54:58 -07:00
pack-revindex.c pack-revindex: open index if necessary 2019-04-16 16:58:21 +09:00
pack-revindex.h pack-revindex: open index if necessary 2019-04-16 16:58:21 +09:00
pack-write.c
pack.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
packfile.c Merge branch 'ds/close-object-store' into maint 2019-07-29 12:38:22 -07:00
packfile.h Merge branch 'ds/close-object-store' into maint 2019-07-29 12:38:22 -07:00
pager.c pager: add a helper function to clear the last line in the terminal 2019-06-24 13:38:46 -07:00
parse-options-cb.c Merge branch 'nd/switch-and-restore' 2019-07-09 15:25:44 -07:00
parse-options.c Merge branch 'nd/diff-parseopt' 2019-05-30 10:50:44 -07:00
parse-options.h Merge branch 'nd/switch-and-restore' 2019-07-09 15:25:44 -07:00
patch-delta.c
patch-ids.c hashmap: convert sha1hash() to oidhash() 2019-06-20 10:44:22 -07:00
patch-ids.h format-patch: make --base patch-id output stable 2019-05-08 19:27:43 +09:00
path.c Sync with 2.21.1 2019-12-06 16:31:23 +01:00
path.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
pathspec.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
pathspec.h
pkt-line.c pkt-line: drop 'const'-ness of a param to set_packet_header() 2019-05-16 13:29:06 +09:00
pkt-line.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
preload-index.c mark_fsmonitor_valid(): mark the index as changed if needed 2019-05-28 12:43:43 -07:00
pretty.c use COPY_ARRAY for copying arrays 2019-06-17 18:15:04 -07:00
pretty.h Merge branch 'sb/more-repo-in-api' 2019-02-05 14:26:09 -08:00
prio-queue.c
prio-queue.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
progress.c Merge branch 'dr/progress-i18n' 2019-07-11 15:16:49 -07:00
progress.h Merge branch 'sg/overlong-progress-fix' 2019-04-25 16:41:19 +09:00
prompt.c
prompt.h
protocol.c tests: define GIT_TEST_PROTOCOL_VERSION 2019-03-07 10:02:42 +09:00
protocol.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
quote.c Indent code with TABs 2018-12-09 12:37:32 +09:00
quote.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
range-diff.c range-diff: add headers to the outer hunk header 2019-07-11 14:29:27 -07: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 object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
reachable.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
read-cache.c Sync with 2.22.2 2019-12-06 16:31:30 +01:00
README.md README: fix rendering of text in angle brackets 2019-07-18 14:47:46 -07:00
rebase-interactive.c rebase-interactive: rewrite edit_todo_list() to handle the initial edit 2019-03-07 09:17:57 +09:00
rebase-interactive.h rebase-interactive: rewrite edit_todo_list() to handle the initial edit 2019-03-07 09:17:57 +09:00
ref-filter.c Merge branch 'ma/ref-filter-leakfix' 2019-07-19 11:30:23 -07:00
ref-filter.h parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
reflog-walk.c
reflog-walk.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
refs.c object: convert lookup_unknown_object() to use object_id 2019-06-20 10:06:19 -07:00
refs.h Merge branch 'nd/worktree-name-sanitization' 2019-06-13 13:19:40 -07:00
refspec.c refspec: make hash size independent 2019-04-01 11:57:39 +09:00
refspec.h
RelNotes Git 2.23.1 2019-12-06 16:31:32 +01:00
remote-curl.c i18n: fix typos found during l10n for git 2.22.0 2019-06-03 11:10:53 -07:00
remote-testsvn.c
remote.c Merge branch 'dr/ref-filter-push-track-fix' 2019-05-09 00:37:26 +09:00
remote.h Merge branch 'dl/no-extern-in-func-decl' 2019-05-13 23:50:32 +09:00
replace-object.c Merge branch 'ds/commit-graph-with-grafts' into maint 2018-11-21 22:57:47 +09:00
replace-object.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
repository.c Merge branch 'ma/clear-repository-format' 2019-03-20 15:16:07 +09: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
resolve-undo.c
resolve-undo.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
revision.c Merge branch 'jk/check-connected-with-alternates' 2019-07-19 11:30:21 -07: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 *.[ch]: remove extern from function declarations using sed 2019-05-05 15:20:08 +09:00
send-pack.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
send-pack.h
sequencer.c rebase -i: stop checking out the tip of the branch to rebase 2020-01-24 10:29:42 -08:00
sequencer.h rebase -i: stop checking out the tip of the branch to rebase 2020-01-24 10:29:42 -08:00
serve.c pack-protocol.txt: accept error packets in any context 2019-01-02 13:05:30 -08:00
serve.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
server-info.c Merge branch 'ew/server-info-remove-crufts' 2019-06-17 10:15:15 -07:00
setup.c sha1-name.c: remove the_repo from maybe_die_on_misspelt_object_name 2019-04-16 18:56:53 +09:00
sh-i18n--envsubst.c cleanup: fix possible overflow errors in binary search, part 2 2019-06-13 11:28:53 -07: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 sha1-file: release strbuf after use 2019-08-07 12:28:57 -07:00
sha1-lookup.c
sha1-lookup.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
sha1-name.c Merge branch 'nd/tree-walk-with-repo' 2019-07-19 11:30:21 -07:00
sha1dc_git.c
sha1dc_git.h
shallow.c Use the right 'struct repository' instead of the_repository 2019-06-27 12:45:17 -07: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 l10n: localizable upload progress messages 2019-07-02 12:18:49 -07:00
strbuf.h l10n: localizable upload progress messages 2019-07-02 12:18:49 -07:00
streaming.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
streaming.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
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 *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
sub-process.c trace2:data: add trace2 sub-process classification 2019-02-22 15:28:12 -08:00
sub-process.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
submodule-config.c Sync with 2.21.1 2019-12-06 16:31:23 +01:00
submodule-config.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
submodule.c Sync with 2.22.2 2019-12-06 16:31:30 +01:00
submodule.h Sync with 2.22.2 2019-12-06 16:31:30 +01:00
symlinks.c Indent code with TABs 2018-12-09 12:37:32 +09:00
tag.c object: convert create_object() to use object_id 2019-06-20 10:20:51 -07:00
tag.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
tar.h
tempfile.c
tempfile.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
thread-utils.c
thread-utils.h
tmp-objdir.c
tmp-objdir.h
trace2.c Merge branch 'jh/trace2' 2019-05-13 23:50:35 +09:00
trace2.h trace2: rename environment variables to GIT_TRACE2* 2019-05-28 10:20:34 -07:00
trace.c
trace.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09: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 Sync with 2.21.1 2019-12-06 16:31:23 +01:00
transport-internal.h
transport.c Merge branch 'es/local-atomic-push-failure-with-http' 2019-07-25 13:59:22 -07:00
transport.h object-store.h: move for_each_alternate_ref() from transport.h 2019-07-01 09:47:29 -07:00
tree-diff.c tree-walk.c: remove the_repo from fill_tree_descriptor() 2019-06-27 12:45:17 -07:00
tree-walk.c Sync with 2.22.2 2019-12-06 16:31:30 +01:00
tree-walk.h tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks() 2019-06-27 12:45:17 -07:00
tree.c object: convert create_object() to use object_id 2019-06-20 10:20:51 -07:00
tree.h
unicode-width.h Merge branch 'bb/unicode-12.1-reiwa' 2019-06-17 10:15:18 -07:00
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Sync with 2.22.2 2019-12-06 16:31:30 +01:00
unpack-trees.h unpack-trees: rename "gently" flag to "quiet" 2019-03-24 21:35:34 +09:00
upload-pack.c Merge branch 'ds/close-object-store' into maint 2019-07-29 12:38:22 -07:00
upload-pack.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
url.c url: do not allow %00 to represent NUL in URLs 2019-06-04 14:48:25 -07:00
url.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
urlmatch.c
urlmatch.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
usage.c trace2: create new combined trace facility 2019-02-22 15:27:59 -08:00
userdiff.c Merge branch 'ml/userdiff-rust' 2019-06-21 11:24:08 -07:00
userdiff.h
utf8.c utf8: handle systems that don't write BOM for UTF-16 2019-02-11 18:20:07 -08:00
utf8.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
varint.c
varint.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
version.c
version.h
versioncmp.c
walker.c object: convert lookup_unknown_object() to use object_id 2019-06-20 10:06:19 -07:00
walker.h
wildmatch.c
wildmatch.h
worktree.c Merge branch 'nd/corrupt-worktrees' into maint 2019-07-25 14:27:07 -07:00
worktree.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
wrap-for-bin.sh
wrapper.c wrapper: avoid undefined behaviour in macOS 2019-06-19 07:41:31 -07:00
write-or-die.c
ws.c
wt-status.c Merge branch 'jl/status-reduce-vertical-blank' 2019-07-19 11:30:23 -07:00
wt-status.h Merge branch 'jk/no-system-includes-in-dot-c' 2019-07-31 14:38:56 -07:00
xdiff-interface.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
xdiff-interface.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
zlib.c

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-<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).

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