Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Tao Klerks bdaf1dfae7 branch: new autosetupmerge option 'simple' for matching branches
With the default push.default option, "simple", beginners are
protected from accidentally pushing to the "wrong" branch in
centralized workflows: if the remote tracking branch they would push
to does not have the same name as the local branch, and they try to do
a "default push", they get an error and explanation with options.

There is a particular centralized workflow where this often happens:
a user branches to a new local topic branch from an existing
remote branch, eg with "checkout -b feature1 origin/master". With
the default branch.autosetupmerge configuration (value "true"), git
will automatically add origin/master as the upstream tracking branch.

When the user pushes with a default "git push", with the intention of
pushing their (new) topic branch to the remote, they get an error, and
(amongst other things) a suggestion to run "git push origin HEAD".

If they follow this suggestion the push succeeds, but on subsequent
default pushes they continue to get an error - so eventually they
figure out to add "-u" to change the tracking branch, or they spelunk
the push.default config doc as proposed and set it to "current", or
some GUI tooling does one or the other of these things for them.

When one of their coworkers later works on the same topic branch,
they don't get any of that "weirdness". They just "git checkout
feature1" and everything works exactly as they expect, with the shared
remote branch set up as remote tracking branch, and push and pull
working out of the box.

The "stable state" for this way of working is that local branches have
the same-name remote tracking branch (origin/feature1 in this
example), and multiple people can work on that remote feature branch
at the same time, trusting "git pull" to merge or rebase as required
for them to be able to push their interim changes to that same feature
branch on that same remote.

(merging from the upstream "master" branch, and merging back to it,
are separate more involved processes in this flow).

There is a problem in this flow/way of working, however, which is that
the first user, when they first branched from origin/master, ended up
with the "wrong" remote tracking branch (different from the stable
state). For a while, before they pushed (and maybe longer, if they
don't use -u/--set-upstream), their "git pull" wasn't getting other
users' changes to the feature branch - it was getting any changes from
the remote "master" branch instead (a completely different class of
changes!)

An experienced git user might say "well yeah, that's what it means to
have the remote tracking branch set to origin/master!" - but the
original user above didn't *ask* to have the remote master branch
added as remote tracking branch - that just happened automatically
when they branched their feature branch. They didn't necessarily even
notice or understand the meaning of the "set up to track 'origin/master'"
message when they created the branch - especially if they are using a
GUI.

Looking at how to fix this, you might think "OK, so disable auto setup
of remote tracking - set branch.autosetupmerge to false" - but that
will inconvenience the *second* user in this story - the one who just
wanted to start working on the topic branch. The first and second
users swap roles at different points in time of course - they should
both have a sane configuration that does the right thing in both
situations.

Make this "branches have the same name locally as on the remote"
workflow less painful / more obvious by introducing a new
branch.autosetupmerge option called "simple", to match the same-name
"push.default" option that makes similar assumptions.

This new option automatically sets up tracking in a *subset* of the
current default situations: when the original ref is a remote tracking
branch *and* has the same branch name on the remote (as the new local
branch name).

Update the error displayed when the 'push.default=simple' configuration
rejects a mismatching-upstream-name default push, to offer this new
branch.autosetupmerge option that will prevent this class of error.

With this new configuration, in the example situation above, the first
user does *not* get origin/master set up as the tracking branch for
the new local branch. If they "git pull" in their new local-only
branch, they get an error explaining there is no upstream branch -
which makes sense and is helpful. If they "git push", they get an
error explaining how to push *and* suggesting they specify
--set-upstream - which is exactly the right thing to do for them.

This new option is likely not appropriate for users intentionally
implementing a "triangular workflow" with a shared upstream tracking
branch, that they "git pull" in and a "private" feature branch that
they push/force-push to just for remote safe-keeping until they are
ready to push up to the shared branch explicitly/separately. Such
users are likely to prefer keeping the current default
merge.autosetupmerge=true behavior, and change their push.default to
"current".

Also extend the existing branch tests with three new cases testing
this option - the obvious matching-name and non-matching-name cases,
and also a non-matching-ref-type case. The matching-name case needs to
temporarily create an independent repo to fetch from, as the general
strategy of using the local repo as the remote in these tests
precludes locally branching with the same name as in the "remote".

Signed-off-by: Tao Klerks <tao@klerks.biz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-04-29 11:20:55 -07:00
.github Merge branch 'ab/ci-updates' 2021-12-15 09:39:49 -08:00
block-sha1 block-sha1: remove use of obsolete x86 assembly 2022-03-10 11:18:05 -08:00
builtin branch: new autosetupmerge option 'simple' for matching branches 2022-04-29 11:20:55 -07:00
ci compat: auto-detect if zlib has uncompress2() 2022-01-26 09:05:55 -08:00
compat Git 2.35.2 2022-04-11 16:44:45 -07:00
contrib Merge branch 'ab/make-optim-noop' 2022-04-06 15:21:58 -07:00
Documentation branch: new autosetupmerge option 'simple' for matching branches 2022-04-29 11:20:55 -07:00
ewah use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
git-gui Merge https://github.com/prati0100/git-gui 2021-03-04 12:38:50 -08:00
gitk-git Merge remote-tracking branch 'paulus/master' into pm/gitk-update 2020-10-03 10:06:27 -07:00
gitweb gitweb: remove invalid http-equiv="content-type" 2022-03-08 10:10:16 -08:00
mergetools mergetools/xxdiff: prevent segfaults from stopping difftool 2021-10-13 11:04:04 -07:00
negotiator use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
perl perl Git.pm: don't ignore signalled failure in _cmd_close() 2022-02-01 15:21:19 -08:00
po l10n: sv.po: Update Swedish translation (5282t0f0u) 2022-04-17 18:13:34 +01:00
ppc *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
refs Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'" 2022-04-13 15:51:33 -07:00
reftable reftable: make assignments portable to AIX xlc v12.01 2022-03-28 13:58:10 -07:00
sha1collisiondetection@855827c583 sha1dc: update from upstream 2019-05-14 16:45:01 +09:00
sha1dc Merge branch 'jk/lore-is-the-archive' 2019-12-06 15:09:23 -08:00
sha256 hash: implement and use a context cloning function 2020-02-24 09:33:21 -08:00
t branch: new autosetupmerge option 'simple' for matching branches 2022-04-29 11:20:55 -07:00
templates Makefile: add "$(QUIET)" boilerplate to shared.mak 2022-03-03 14:14:55 -08:00
trace2 trace2: use designated initializers for "struct tr2_dst" 2022-02-24 15:58:55 -08:00
xdiff xdiff: handle allocation failure when merging 2022-02-16 10:58:16 -08:00
.cirrus.yml ci: update freebsd 12 cirrus job 2021-08-12 14:00:52 -07:00
.clang-format clang-format: use git grep to generate the ForEachMacros list 2019-06-04 14:50:40 -07:00
.editorconfig editorconfig: indent text files with tabs 2020-01-06 08:46:32 -08:00
.gitattributes CoC: explicitly take any whitespace breakage 2021-01-04 09:44:49 -08:00
.gitignore fsmonitor--daemon: add a built-in fsmonitor daemon 2022-03-25 16:04:15 -07:00
.gitmodules sha1dc: optionally use sha1collisiondetection as a submodule 2017-07-03 10:09:34 -07:00
.mailmap mailmap: change primary address for Derrick Stolee 2022-02-14 13:27:31 -08:00
.tsan-suppressions replace-object: make replace operations thread-safe 2020-01-17 13:52:14 -08:00
abspath.c abspath: add a function to resolve paths with missing components 2020-12-12 23:35:47 -08:00
aclocal.m4 configure: use AC_LANG_PROGRAM consistently 2011-02-14 10:55:15 -08:00
add-interactive.c Merge branch 'pw/single-key-interactive' 2022-03-21 15:14:24 -07:00
add-interactive.h built-in add -p: respect the interactive.singlekey config setting 2020-01-15 12:06:17 -08:00
add-patch.c Merge branch 'pw/add-p-hunk-split-fix' 2022-02-09 14:20:59 -08:00
advice.c Merge branch 'tk/ambiguous-fetch-refspec' 2022-04-04 10:56:24 -07:00
advice.h Merge branch 'tk/ambiguous-fetch-refspec' 2022-04-04 10:56:24 -07: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 commit: move members graph_pos, generation to a slab 2020-06-17 14:37:30 -07:00
alloc.h object: drop parsed_object_pool->commit_count 2020-06-17 14:37:14 -07:00
apply.c Merge branch 'ab/object-file-api-updates' 2022-03-16 17:53:08 -07:00
apply.h range-diff: plug memory leak in common invocation 2022-03-04 13:24:19 -08:00
archive-tar.c archive-*.c: use designated initializers for "struct archiver" 2022-02-24 15:59:20 -08:00
archive-zip.c Merge branch 'ab/c99-designated-initializers' 2022-03-06 21:25:32 -08:00
archive.c i18n: remove from i18n strings that do not hold translatable parts 2022-02-04 13:58:28 -08:00
archive.h archive: expand only a single %(describe) per archive 2021-03-11 13:22:44 -08:00
attr.c Merge branch 'ab/refs-various-fixes' 2022-03-29 12:22:02 -07:00
attr.h attr.h: remove duplicate struct definition 2022-03-14 05:41:08 +00:00
banned.h C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code 2022-02-21 19:14:19 -08:00
base85.c base85.c: have SP around arithmetic operators 2013-10-16 10:27:26 -07:00
bisect.c bisect--helper: double-check run command on exit code 126 and 127 2022-01-19 09:35:03 -08:00
bisect.h bisect--helper: double-check run command on exit code 126 and 127 2022-01-19 09:35:03 -08:00
blame.c Merge branch 'ab/diff-free-more' 2022-02-25 15:47:36 -08:00
blame.h blame: simplify 'setup_blame_bloom_data' interface 2020-11-01 15:54:15 -08:00
blob.c object: drop parsed_object_pool->commit_count 2020-06-17 14:37:14 -07:00
blob.h blob: allow lookup_blob to handle arbitrary repositories 2018-06-29 10:43:39 -07:00
bloom.c Merge branch 'ah/plugleaks' 2021-05-07 12:47:41 +09:00
bloom.h bloom: encode out-of-bounds filters as non-empty 2020-09-17 21:55:50 -07:00
branch.c branch: new autosetupmerge option 'simple' for matching branches 2022-04-29 11:20:55 -07:00
branch.h branch: new autosetupmerge option 'simple' for matching branches 2022-04-29 11:20:55 -07:00
builtin.h fsmonitor--daemon: add a built-in fsmonitor daemon 2022-03-25 16:04:15 -07:00
bulk-checkin.c Merge branch 'ns/core-fsyncmethod' 2022-03-25 16:38:24 -07:00
bulk-checkin.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
bundle.c bundle: output hash information in 'verify' 2022-03-23 13:14:09 -07:00
bundle.h bundle: parse filter capability 2022-03-09 10:25:27 -08:00
cache-tree.c object-file API: have hash_object_file() take "enum object_type" 2022-02-25 17:16:32 -08:00
cache-tree.h cache-tree: extract subtree_pos() 2021-01-23 17:14:07 -08:00
cache.h Merge branch 'jh/builtin-fsmonitor-part2' 2022-04-04 10:56:24 -07:00
cbtree.c cbtree: remove broken and unused cb_unlink 2021-12-07 15:18:35 -08:00
cbtree.h cbtree: remove broken and unused cb_unlink 2021-12-07 15:18:35 -08:00
chdir-notify.c add chdir-notify API 2018-03-30 12:49:57 -07:00
chdir-notify.h add chdir-notify API 2018-03-30 12:49:57 -07:00
check-builtins.sh check-builtins: strip executable suffix $X when enumerating builtins 2015-02-05 12:03:27 -08:00
checkout.c *.[ch] *_INIT macros: use { 0 } for a "zero out" idiom 2021-09-27 14:47:59 -07:00
checkout.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
chunk-format.c csum-file.h: increase hashfile buffer size 2021-05-19 16:41:21 +09:00
chunk-format.h chunk-format: create read chunk API 2021-02-18 13:38:16 -08:00
CODE_OF_CONDUCT.md CODE_OF_CONDUCT.md: update PLC members list 2022-02-18 12:36:29 -08:00
color.c color: allow colors to be prefixed with "reset" 2021-10-28 09:37:18 -07:00
color.h color: allow colors to be prefixed with "reset" 2021-10-28 09:37:18 -07:00
column.c Merge branch 'jk/strvec' 2020-08-10 10:23:57 -07:00
column.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
combine-diff.c Merge branch 'ab/pickaxe-pcre2' 2021-07-13 16:52:50 -07:00
command-list.txt hook: add 'run' subcommand 2022-01-07 15:19:34 -08:00
commit-graph.c Merge branch 'ns/core-fsyncmethod' 2022-03-25 16:38:24 -07:00
commit-graph.h commit-graph: fix memory leak in misused string_list API 2022-03-04 13:24:18 -08:00
commit-reach.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
commit-reach.h commit-graph: return 64-bit generation number 2021-01-18 16:21:18 -08:00
commit-slab-decl.h Merge branch 'sg/commit-graph-cleanups' into master 2020-07-30 13:20:30 -07:00
commit-slab-impl.h commit-slab: add a function to deep free entries on the slab 2020-06-08 12:28:49 -07:00
commit-slab.h commit-slab: add a function to deep free entries on the slab 2020-06-08 12:28:49 -07:00
commit.c Merge branch 'ab/racy-hooks' 2022-03-30 18:01:10 -07:00
commit.h shallow: reset commit grafts when shallow is reset 2022-03-17 17:44:38 -07:00
common-main.c Merge branch 'en/keep-cwd' 2022-01-05 14:01:28 -08:00
config.c branch: new autosetupmerge option 'simple' for matching branches 2022-04-29 11:20:55 -07:00
config.h fsmonitor: config settings are repository-specific 2022-03-25 16:04:15 -07:00
config.mak.dev config.mak.dev: alternative workaround to gcc 12 warning in http.c 2022-04-15 16:27:04 -07: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/builtin-fsmonitor-part2' 2022-04-04 10:56:24 -07:00
configure.ac configure.ac: fix HAVE_SYNC_FILE_RANGE definition 2022-04-06 09:36:19 -07:00
connect.c ls-remote & transport API: release "struct transport_ls_refs_options" 2022-02-06 18:02:34 -08:00
connect.h Merge branch 'bc/sha-256-part-2' 2020-07-06 22:09:13 -07:00
connected.c run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
connected.h connected: refactor iterator to return next object ID directly 2021-09-01 12:43:56 -07:00
convert.c Merge branch 'ab/object-file-api-updates' 2022-03-16 17:53:08 -07:00
convert.h Merge branch 'ds/sparse-index-protections' 2021-04-30 13:50:26 +09: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.c urlmatch.c: add and use a *_release() function 2022-03-04 13:24:18 -08:00
credential.h *.h: move some *_INIT to designated initializers 2021-07-01 12:31:45 -07:00
csum-file.c core.fsync: introduce granular fsync control infrastructure 2022-03-10 15:10:22 -08:00
csum-file.h core.fsync: introduce granular fsync control infrastructure 2022-03-10 15:10:22 -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 'rs/daemon-plug-leak' 2022-01-05 14:01:31 -08:00
date.c date API: add and use a date_mode_release() 2022-02-16 09:40:00 -08:00
date.h date API: add and use a date_mode_release() 2022-02-16 09:40:00 -08:00
decorate.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
decorate.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
delta-islands.c oid_array: rename source file from sha1-array 2020-03-30 10:59:08 -07:00
delta-islands.h delta-islands: respect progress flag 2019-06-20 13:29:49 -07:00
delta.h odb: guard against data loss checking out a huge file 2021-11-03 11:22:27 -07:00
detect-compiler build: catch clang that identifies itself as "$VENDOR clang" 2021-08-06 13:35:37 -07:00
diff-delta.c diff-delta: set size out-parameter to 0 for NULL delta 2019-09-06 11:03:39 -07:00
diff-lib.c Merge branch 'dd/diff-files-unmerged-fix' into maint 2021-10-12 13:51:40 -07:00
diff-merges.c Merge branch 'ja/i18n-common-messages' 2022-02-25 15:47:35 -08:00
diff-merges.h diff-index: restore -c/--cc options handling 2021-09-07 11:11:35 -07:00
diff-no-index.c dir: introduce readdir_skip_dot_and_dotdot() helper 2021-05-27 14:02:37 +09:00
diff.c Merge branch 'ab/plug-random-leaks' 2022-03-23 14:09:31 -07:00
diff.h Merge branch 'js/diff-filter-negation-fix' 2022-02-16 15:14:30 -08:00
diffcore-break.c diff: restrict when prefetching occurs 2020-04-07 16:09:29 -07:00
diffcore-delta.c diffcore-delta.c: LLP64 compatibility, upcast unity for left shift 2021-12-01 14:48:10 -08:00
diffcore-order.c wildmatch: remove unused wildopts parameter 2017-06-23 18:27:07 -07:00
diffcore-pickaxe.c xdiff-interface: replace discard_hunk_line() with a flag 2021-05-11 12:47:31 +09:00
diffcore-rename.c object-file API: have hash_object_file() take "enum object_type" 2022-02-25 17:16:32 -08:00
diffcore-rotate.c diff: --{rotate,skip}-to=<path> 2021-02-16 09:30:42 -08:00
diffcore.h merge-ort: store filepairs and filespecs in our mem_pool 2021-07-30 09:01:19 -07:00
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 Merge branch 'vd/sparse-read-tree' 2022-03-16 17:53:08 -07:00
dir.h dir: new flag to remove_dir_recurse() to spare the original_cwd 2021-12-09 13:33:13 -08:00
editor.c run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
entry.c Merge branch 'mc/clean-smudge-with-llp64' 2021-11-29 15:41:51 -08:00
entry.h Merge branch 'mc/clean-smudge-with-llp64' 2021-11-29 15:41:51 -08:00
environment.c Merge branch 'jh/builtin-fsmonitor-part2' 2022-04-04 10:56:24 -07:00
environment.h environment: make getenv_safe() a public function 2021-01-15 13:03:45 -08:00
exec-cmd.c strvec: rename struct fields 2020-07-30 19:18:06 -07:00
exec-cmd.h argv-array: rename to strvec 2020-07-28 15:02:17 -07:00
fetch-negotiator.c fetch-negotiator: add specific noop initializer 2022-03-28 10:25:52 -07:00
fetch-negotiator.h fetch-negotiator: add specific noop initializer 2022-03-28 10:25:52 -07:00
fetch-pack.c fetch-pack: add refetch 2022-03-28 10:25:52 -07:00
fetch-pack.h fetch-pack: add refetch 2022-03-28 10:25:52 -07:00
fmt-merge-msg.c Merge branch 'fs/ssh-signing-key-lifetime' 2022-01-12 15:11:41 -08:00
fmt-merge-msg.h merge: allow to pretend a merge is made into a different branch 2021-12-20 14:55:02 -08:00
fsck.c fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW 2021-05-04 11:52:02 +09:00
fsck.h fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW 2021-05-04 11:52:02 +09:00
fsmonitor--daemon.h fsmonitor--daemon: use a cookie file to sync with file system 2022-03-25 16:04:17 -07:00
fsmonitor-ipc.c fsmonitor-ipc: create client routines for git-fsmonitor--daemon 2022-03-25 16:04:15 -07:00
fsmonitor-ipc.h fsmonitor-ipc: create client routines for git-fsmonitor--daemon 2022-03-25 16:04:15 -07:00
fsmonitor-settings.c fsmonitor: config settings are repository-specific 2022-03-25 16:04:15 -07:00
fsmonitor-settings.h fsmonitor: config settings are repository-specific 2022-03-25 16:04:15 -07:00
fsmonitor.c fsmonitor: force update index after large responses 2022-03-25 16:04:17 -07:00
fsmonitor.h fsmonitor: config settings are repository-specific 2022-03-25 16:04:15 -07:00
fuzz-commit-graph.c commit-graph: pass a 'struct repository *' in more places 2020-09-09 12:51:48 -07: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 generate-cmdlist.sh: don't parse command-list.txt thrice 2021-11-05 12:01:13 -07:00
generate-configlist.sh help: move list_config_help to builtin/help 2020-04-16 15:22:16 -07:00
generate-hooklist.sh hook-list.h: add a generated list of hooks, like config-list.h 2021-09-27 09:44:54 -07:00
gettext.c *.c static functions: add missing __attribute__((format)) 2021-07-13 15:20:20 -07:00
gettext.h gettext: remove optional non-standard parens in N_() definition 2021-09-03 11:40:30 -07:00
git-add--interactive.perl add -p: avoid use of undefined $key when ReadKey -> EOF 2021-11-28 15:14:09 -08:00
git-archimport.perl archimport: use safe_pipe_capture for user input 2017-09-12 11:08:15 +09:00
git-bisect.sh Merge branch 'mr/bisect-in-c-4' 2021-09-23 13:44:48 -07:00
git-compat-util.h Git 2.35.2 2022-04-11 16:44:45 -07:00
git-curl-compat.h http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors 2021-09-27 10:58:07 -07:00
git-cvsexportcommit.perl cvsexportcommit: do not run git programs in dashed form 2020-08-26 14:49:52 -07:00
git-cvsimport.perl git-cvsimport: port to SHA-256 2020-06-22 11:21:07 -07:00
git-cvsserver.perl tests: disable fsync everywhere 2021-10-29 10:22:40 -07:00
git-difftool--helper.sh mergetool: break setup_tool out into separate initialization function 2021-02-09 14:09:16 -08:00
git-filter-branch.sh git-sh-setup: remove "sane_grep", it's not needed anymore 2021-10-21 16:17:57 -07:00
git-instaweb.sh git-sh-setup: remove "sane_grep", it's not needed anymore 2021-10-21 16:17:57 -07:00
git-merge-octopus.sh Merge branch 'ma/up-to-date' 2017-09-10 17:08:22 +09:00
git-merge-one-file.sh merge-one-file: compute empty blob object ID 2018-05-02 13:59:53 +09:00
git-merge-resolve.sh scripts: use "git foo" not "git-foo" 2017-08-07 12:04:45 -07:00
git-mergetool--lib.sh Merge branch 'sh/mergetool-hideresolved' 2021-02-17 17:21:41 -08:00
git-mergetool.sh mergetool: do not enable hideResolved by default 2021-03-13 15:30:29 -08:00
git-p4.py Merge branch 'ab/config-based-hooks-2' 2022-02-09 14:21:00 -08:00
git-quiltimport.sh git-quiltimport: add --keep-non-patch option 2019-01-07 15:29:34 -08: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 i18n: fix some badly formatted i18n strings 2022-04-11 14:13:46 -07:00
git-sh-i18n.sh git-sh-i18n: remove unused eval_ngettext() 2021-10-21 16:04:29 -07:00
git-sh-setup.sh git-sh-setup: remove remnant bits referring to git-legacy-stash 2022-01-27 18:00:09 -08:00
git-submodule.sh submodule: move core cmd_update() logic to C 2022-03-16 15:07:43 -07:00
git-svn.perl git-svn: drop support for --preserve-merges 2021-09-07 21:45:33 -07:00
GIT-VERSION-GEN Some regression fixes for 2.36 2022-04-28 10:46:04 -07: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 fsmonitor--daemon: add a built-in fsmonitor daemon 2022-03-25 16:04:15 -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 Merge branch 'fs/gpgsm-update' 2022-03-13 22:56:17 +00:00
gpg-interface.h ssh signing: make verify-commit consider key lifetime 2021-12-09 13:38:04 -08:00
graph.c log: fix memory leak if --graph is passed multiple times 2022-02-11 10:06:40 -08:00
graph.h log: fix memory leak if --graph is passed multiple times 2022-02-11 10:06:40 -08:00
grep.c Merge branch 'rs/pcre-invalid-utf8-fix-fix' 2022-02-25 15:47:38 -08:00
grep.h grep: simplify config parsing and option parsing 2022-02-15 18:00:50 -08:00
hash-lookup.c oid_pos(): access table through const pointers 2021-01-28 12:03:26 -08:00
hash-lookup.h oid_pos(): access table through const pointers 2021-01-28 12:03:26 -08:00
hash.h hash.h: provide constants for the hash IDs 2021-09-07 10:47:43 -07:00
hashmap.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
hashmap.h hashmap: provide deallocation function names 2020-11-02 12:15:50 -08:00
help.c Merge branch 'jh/builtin-fsmonitor-part2' 2022-04-04 10:56:24 -07:00
help.h help: add --no-[external-commands|aliases] for use with --all 2022-02-23 13:41:37 -08:00
hex.c hex: print objects using the hash algorithm member 2021-04-27 16:31:39 +09:00
hook.c hooks: fix an obscure TOCTOU "did we just run a hook?" race 2022-03-07 13:00:53 -08:00
hook.h hooks: fix an obscure TOCTOU "did we just run a hook?" race 2022-03-07 13:00:53 -08:00
http-backend.c date API: create a date.h, split from cache.h 2022-02-16 09:40:00 -08:00
http-fetch.c i18n: factorize "--foo requires --bar" and the like 2022-01-05 13:31:00 -08:00
http-push.c object-file API: add a format_object_header() function 2022-02-25 17:16:31 -08:00
http-walker.c http: rename CURLOPT_FILE to CURLOPT_WRITEDATA 2021-07-30 16:01:54 -07:00
http.c run-command API users: use strvec_pushv(), not argv assignment 2021-11-25 22:15:07 -08:00
http.h http: check CURLE_SSL_PINNEDPUBKEYNOTMATCH when emitting errors 2021-09-27 10:58:07 -07:00
ident.c date API: create a date.h, split from cache.h 2022-02-16 09:40:00 -08:00
imap-send.c Merge branch 'bc/csprng-mktemps' 2022-04-06 15:21:59 -07:00
INSTALL INSTALL: mention that we need libcurl 7.19.4 or newer to build 2021-09-13 10:39:03 -07:00
iterator.h refs: introduce an iterator interface 2016-06-20 11:38:20 -07:00
json-writer.c *.c *_init(): define in terms of corresponding *_INIT macro 2021-07-01 12:32:22 -07:00
json-writer.h *.h: move some *_INIT to designated initializers 2021-07-01 12:31:45 -07:00
khash.h khash: clarify that allocations never fail 2021-07-06 13:07:50 -07:00
kwset.c Merge branch 'rs/copy-array' into maint 2019-07-29 12:38:15 -07:00
kwset.h kset.h, tar.h: add missing header guard to prevent multiple inclusion 2019-11-07 20:12:04 +09: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 use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
line-log.h line-log: more responsive, incremental 'git log -L' 2020-05-11 09:33:56 -07:00
line-range.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
line-range.h line-range.c: remove implicit dependency on the_index 2018-09-21 09:51:18 -07:00
linear-assignment.c linear-assignment: fix potential out of bounds memory access 2018-09-14 09:10:26 -07:00
linear-assignment.h linear-assignment: a function to solve least-cost assignment problems 2018-08-13 10:44:50 -07:00
list-objects-filter-options.c pack-objects: lazily set up "struct rev_info", don't leak 2022-03-28 09:57:21 -07:00
list-objects-filter-options.h pack-objects: lazily set up "struct rev_info", don't leak 2022-03-28 09:57:21 -07:00
list-objects-filter.c list-objects: implement object type filter 2021-04-19 14:09:11 -07:00
list-objects-filter.h list-objects: support filtering by tag and commit 2021-04-12 09:35:50 -07:00
list-objects.c list-objects: handle NULL function pointers 2022-03-09 10:25:27 -08:00
list-objects.h list-objects: consolidate traverse_commit_list[_filtered] 2022-03-09 10:25:27 -08:00
list.h *.h: move some *_INIT to designated initializers 2021-09-27 14:48:00 -07:00
ll-merge.c ll-merge: make callers responsible for showing warnings 2022-02-02 10:02:27 -08:00
ll-merge.h ll-merge: make callers responsible for showing warnings 2022-02-02 10:02:27 -08:00
lockfile.c lockfile.c: introduce 'hold_lock_file_for_update_mode' 2020-04-27 11:27:36 -07:00
lockfile.h *.[ch] *_INIT macros: use { 0 } for a "zero out" idiom 2021-09-27 14:47:59 -07:00
log-tree.c Merge branch 'jc/diff-tree-stdin-fix' 2022-04-28 10:46:04 -07:00
log-tree.h log-tree.h: remove unused function declarations 2021-10-01 14:39:46 -07:00
ls-refs.c i18n: factorize "invalid value" messages 2022-02-04 13:58:28 -08:00
ls-refs.h serve.[ch]: don't pass "struct strvec *keys" to commands 2021-08-05 08:59:37 -07:00
mailinfo.c Merge branch 'ar/mailinfo-memcmp-to-skip-prefix' 2021-07-08 13:15:03 -07:00
mailinfo.h am: learn to process quoted lines that ends with CRLF 2021-05-10 15:06:22 +09:00
mailmap.c string-list API: change "nr" and "alloc" to "size_t" 2022-03-07 12:02:04 -08:00
mailmap.h shortlog: remove unused(?) "repo-abbrev" feature 2021-01-12 14:04:42 -08:00
Makefile Merge branch 'bc/csprng-mktemps' 2022-04-06 15:21:59 -07:00
match-trees.c object-file API: have write_object_file() take "enum object_type" 2022-02-25 17:16:31 -08:00
mem-pool.c mem-pool: don't assume uintmax_t is aligned enough for all types 2022-01-24 10:26:40 -08:00
mem-pool.h mem-pool: use consistent pool variable name 2020-08-18 12:16:08 -07:00
merge-blobs.c ll-merge: make callers responsible for showing warnings 2022-02-02 10:02:27 -08:00
merge-blobs.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
merge-ort-wrappers.c merge(s): apply consistent punctuation to "up to date" messages 2021-05-03 14:14:56 +09:00
merge-ort-wrappers.h merge-ort-wrappers: new convience wrappers to mimic the old merge API 2020-10-26 22:36:14 -07:00
merge-ort.c Merge branch 'ab/string-list-count-in-size-t' 2022-03-16 17:53:09 -07:00
merge-ort.h show, log: include conflict/warning messages in --remerge-diff headers 2022-02-02 10:02:28 -08:00
merge-recursive.c Merge branch 'ab/object-file-api-updates' 2022-03-16 17:53:08 -07:00
merge-recursive.h merge-ort: format messages slightly different for use in headers 2022-02-02 10:02:27 -08:00
merge.c unpack-trees: introduce preserve_ignored to unpack_trees_options 2021-09-27 13:38:37 -07:00
mergesort.c mergesort: avoid left shift overflow 2021-11-18 12:42:06 -08:00
mergesort.h mergesort: rename it to llist_mergesort() 2012-04-17 11:07:01 -07:00
midx.c core.fsync: introduce granular fsync control infrastructure 2022-03-10 15:10:22 -08:00
midx.h midx: read RIDX chunk when present 2022-01-27 12:07:53 -08:00
name-hash.c Merge branch 'ds/sparse-index-protections' 2021-04-30 13:50:26 +09:00
notes-cache.c object-file API: have write_object_file() take "enum object_type" 2022-02-25 17:16:31 -08:00
notes-cache.h notes-cache.c: remove the_repository references 2018-11-12 14:50:06 +09:00
notes-merge.c misc *.c: use designated initializers for struct assignments 2022-03-17 10:36:42 -07:00
notes-merge.h notes-merge.c: remove implicit dependency on the_index 2018-11-12 14:50:05 +09:00
notes-utils.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
notes-utils.h notes-utils.c: remove the_repository references 2019-01-14 12:13:04 -08:00
notes.c object-file API: have write_object_file() take "enum object_type" 2022-02-25 17:16:31 -08:00
notes.h Merge branch 'dl/format-patch-notes-config-fixup' 2019-12-25 11:21:58 -08:00
object-file.c object-file: pass filename to fsync_or_die 2022-03-30 14:46:47 -07:00
object-name.c Merge branch 'ab/date-mode-release' 2022-02-25 15:47:36 -08:00
object-store.h object-file API: have hash_object_file() take "enum object_type" 2022-02-25 17:16:32 -08:00
object.c object-file API: have hash_object_file() take "enum object_type" 2022-02-25 17:16:32 -08:00
object.h reflog: libify delete reflog function and helpers 2022-03-02 15:24:47 -08:00
oid-array.c oid_pos(): access table through const pointers 2021-01-28 12:03:26 -08:00
oid-array.h *.[ch] *_INIT macros: use { 0 } for a "zero out" idiom 2021-09-27 14:47:59 -07:00
oidmap.c hashmap: provide deallocation function names 2020-11-02 12:15:50 -08:00
oidmap.h hashmap: use *_entry APIs for iteration 2019-10-07 10:20:11 +09:00
oidset.c oidset: make oidset_size() an inline function 2021-09-12 16:14:32 -07:00
oidset.h oidset: make oidset_size() an inline function 2021-09-12 16:14:32 -07:00
oidtree.c oidtree: avoid unaligned access to crit-bit tree 2021-08-15 13:13:50 -07:00
oidtree.h oidtree: a crit-bit tree for odb_loose_cache 2021-07-07 21:28:04 -07:00
pack-bitmap-write.c core.fsync: introduce granular fsync control infrastructure 2022-03-10 15:10:22 -08:00
pack-bitmap.c list-objects: consolidate traverse_commit_list[_filtered] 2022-03-09 10:25:27 -08:00
pack-bitmap.h pack-bitmap: drop filter in prepare_bitmap_walk() 2022-03-09 10:25:27 -08:00
pack-check.c object-file API: have hash_object_file() take "enum object_type" 2022-02-25 17:16:32 -08:00
pack-objects.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
pack-objects.h pack-objects: move static inline from a header to the sole consumer 2021-05-27 12:14:41 +09:00
pack-revindex.c midx: read RIDX chunk when present 2022-01-27 12:07:53 -08:00
pack-revindex.h pack-revindex.h: correct the time complexity descriptions 2021-09-15 22:16:25 -07:00
pack-write.c core.fsync: introduce granular fsync control infrastructure 2022-03-10 15:10:22 -08:00
pack.h pack-write: split up finish_tmp_packfile() function 2021-09-09 18:23:11 -07:00
packfile.c Merge branch 'jt/pack-header-lshift-overflow' 2022-01-12 15:11:41 -08:00
packfile.h Merge branch 'tb/pack-revindex-on-disk-cleanup' 2021-12-15 09:39:50 -08:00
pager.c pager: fix crash when pager program doesn't exist 2021-11-24 16:14:10 -08:00
parallel-checkout.c i18n: factorize "invalid value" messages 2022-02-04 13:58:28 -08:00
parallel-checkout.h parallel-checkout: support progress displaying 2021-04-19 11:57:05 -07:00
parse-options-cb.c branch: add flags and config to inherit tracking 2021-12-20 22:40:21 -08:00
parse-options.c Merge branch 'ja/i18n-common-messages' 2022-02-25 15:47:35 -08:00
parse-options.h Merge branch 'ja/i18n-common-messages' 2022-02-25 15:47:35 -08:00
patch-delta.c patch-delta: handle truncated copy parameters 2018-08-30 10:30:23 -07:00
patch-ids.c use CALLOC_ARRAY 2021-03-13 16:00:09 -08:00
patch-ids.h patch-ids: handle duplicate hashmap entries 2021-01-12 11:13:32 -08:00
path.c Sync with 2.33.2 2022-03-24 00:31:36 +01:00
path.h repository.c: free the "path cache" in repo_clear() 2022-03-04 13:24:19 -08:00
pathspec.c add: skip tracked paths outside sparse-checkout cone 2021-09-28 10:31:02 -07:00
pathspec.h pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>) 2021-12-07 12:31:17 -08:00
pkt-line.c fetch-pack: redact packfile urls in traces 2021-11-11 10:07:43 -08:00
pkt-line.h fetch-pack: redact packfile urls in traces 2021-11-11 10:07:43 -08:00
preload-index.c preload-index: log the number of lstat calls to trace2 2021-02-16 17:14:34 -08:00
pretty.c Merge branch 'es/pretty-describe-more' 2021-12-15 09:39:48 -08:00
pretty.h date API: create a date.h, split from cache.h 2022-02-16 09:40:00 -08:00
prio-queue.c prio-queue: add 'peek' operation 2018-11-02 12:14:21 +09:00
prio-queue.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
progress.c progress API: unify stop_progress{,_msg}(), fix trace2 bug 2022-02-03 15:39:59 -08:00
progress.h progress API: unify stop_progress{,_msg}(), fix trace2 bug 2022-02-03 15:39:59 -08:00
promisor-remote.c Merge branch 'jt/partial-clone-submodule-1' 2021-07-16 17:42:53 -07:00
promisor-remote.h promisor-remote: support per-repository config 2021-06-28 09:57:42 -07:00
prompt.c run-command API users: use strvec_push(), not argv construction 2021-11-25 22:15:07 -08:00
prompt.h interactive: refactor code asking the user for interactive input 2020-04-10 10:26:31 -07:00
protocol-caps.c Merge branch 'ab/serve-cleanup' 2021-09-20 15:20:43 -07:00
protocol-caps.h serve.[ch]: don't pass "struct strvec *keys" to commands 2021-08-05 08:59:37 -07:00
protocol.c connect, protocol: log negotiated protocol version 2021-08-10 11:46:33 -07:00
protocol.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
prune-packed.c Lib-ify prune-packed 2020-03-24 15:04:44 -07:00
prune-packed.h Lib-ify prune-packed 2020-03-24 15:04:44 -07:00
quote.c ref-filter: --format=%(raw) support --perl 2021-07-26 12:01:25 -07:00
quote.h Merge branch 'zh/ref-filter-raw-data' 2021-08-24 15:32:37 -07:00
range-diff.c range-diff: plug memory leak in read_patches() 2022-03-04 13:24:19 -08:00
range-diff.h Merge branch 'js/range-diff-one-side-only' 2021-02-17 17:21:41 -08:00
reachable.c pack-bitmap: drop filter in prepare_bitmap_walk() 2022-03-09 10:25:27 -08:00
reachable.h *.[ch]: manually align parameter lists 2019-05-05 15:20:10 +09:00
read-cache.c Merge branch 'vd/mv-refresh-stat' 2022-04-04 10:56:24 -07:00
README.md Merge branch 'po/readme-mention-contributor-hints' 2022-02-09 14:20:59 -08:00
rebase-interactive.c rebase: remove a no-longer-used function 2021-09-07 21:45:33 -07:00
rebase-interactive.h rebase: remove a no-longer-used function 2021-09-07 21:45:33 -07:00
rebase.c pull: remove support for --rebase=preserve 2021-09-07 21:45:32 -07:00
rebase.h pull: remove support for --rebase=preserve 2021-09-07 21:45:32 -07:00
ref-filter.c date API: add and use a date_mode_release() 2022-02-16 09:40:00 -08:00
ref-filter.h for-each-ref: delay parsing of --sort=<atom> options 2021-10-20 14:33:07 -07:00
reflog-walk.c refs: make repo_dwim_log() accept a NULL oid 2021-08-25 13:27:37 -07:00
reflog-walk.h date API: create a date.h, split from cache.h 2022-02-16 09:40:00 -08:00
reflog.c Merge branch 'ab/reflog-parse-options' 2022-04-04 10:56:21 -07:00
reflog.h reflog: libify delete reflog function and helpers 2022-03-02 15:24:47 -08:00
refs.c Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'" 2022-04-13 15:51:33 -07:00
refs.h Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'" 2022-04-13 15:51:33 -07:00
refspec.c refspec.c: use designated initializers for "struct refspec_item" 2022-02-24 15:59:53 -08:00
refspec.h Merge branch 'sb/clone-origin' 2020-10-27 15:09:50 -07:00
RelNotes Some regression fixes for 2.36 2022-04-28 10:46:04 -07:00
remote-curl.c Merge branch 'rc/fetch-refetch' 2022-04-04 10:56:23 -07:00
remote.c remote: read symbolic refs via refs_read_symbolic_ref() 2022-03-01 10:13:46 -08:00
remote.h remote: die if branch is not found in repository 2021-11-18 22:31:19 -08:00
replace-object.c replace-object: make replace operations thread-safe 2020-01-17 13:52:14 -08:00
replace-object.h replace-object: make replace operations thread-safe 2020-01-17 13:52:14 -08:00
repo-settings.c compat/fsmonitor/fsm-listen-win32: stub in backend for Windows 2022-03-25 16:04:15 -07:00
repository.c Merge branch 'ab/plug-random-leaks' 2022-03-13 22:56:18 +00:00
repository.h Merge branch 'jh/builtin-fsmonitor-part2' 2022-04-04 10:56:24 -07:00
rerere.c ll-merge: make callers responsible for showing warnings 2022-02-02 10:02:27 -08:00
rerere.h rerere.c: remove the_repository references 2018-11-12 14:50:06 +09:00
reset.c Merge branch 'pw/use-in-process-checkout-in-rebase' 2022-02-18 13:53:27 -08:00
reset.h rebase --apply: set ORIG_HEAD correctly 2022-01-26 12:08:53 -08:00
resolve-undo.c Merge branch 'ds/sparse-index-protections' 2021-04-30 13:50:26 +09:00
resolve-undo.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
revision.c list-objects-filter: remove CL_ARG__FILTER 2022-03-23 13:13:17 -07:00
revision.h revision: put object filter into struct rev_info 2022-03-09 10:25:26 -08:00
run-command.c Merge branch 'ab/config-based-hooks-2' 2022-02-09 14:21:00 -08:00
run-command.h run-command: remove old run_hook_{le,ve}() hook API 2022-01-07 15:19:35 -08:00
SECURITY.md SECURITY: describe how to report vulnerabilities 2021-03-27 15:13:02 -07:00
send-pack.c Merge branch 'fs/ssh-signing' 2021-10-25 16:06:58 -07:00
send-pack.h Add missing includes and forward declarations 2018-08-15 11:52:09 -07:00
sequencer.c Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'" 2022-04-13 15:51:33 -07:00
sequencer.h create_autostash(): remove unneeded parameter 2022-01-26 12:08:53 -08:00
serve.c serve: reject commands used as capabilities 2021-09-15 12:25:19 -07:00
serve.h serve.[ch]: remove "serve_options", split up --advertise-refs code 2021-08-05 08:59:37 -07:00
server-info.c *.c static functions: add missing __attribute__((format)) 2021-07-13 15:20:20 -07:00
setup.c Git 2.35.3 2022-04-13 15:26:32 -07:00
sh-i18n--envsubst.c builtins + test helpers: use return instead of exit() in cmd_* 2021-06-09 09:15:58 +09:00
sha1dc_git.c hex: drop sha1_to_hex() 2019-11-13 10:09:10 +09:00
sha1dc_git.h sha1dc_git.h: re-arrange an ifdef chain for a subsequent change 2017-12-08 15:01:01 -08:00
shallow.c shallow: reset commit grafts when shallow is reset 2022-03-17 17:44:38 -07:00
shallow.h *.h: move some *_INIT to designated initializers 2021-09-27 14:48:00 -07:00
shared.mak Makefile: use ' ', not non-existing $(wspfx_SQ) 2022-03-21 09:03:45 -07:00
shell.c builtins + test helpers: use return instead of exit() in cmd_* 2021-06-09 09:15:58 +09:00
shortlog.h shortlog: remove unused(?) "repo-abbrev" feature 2021-01-12 14:04:42 -08:00
sideband.c sideband: don't lose clear-to-eol at packet boundary 2021-06-17 14:11:36 +09:00
sideband.h sideband: diagnose more sideband anomalies 2020-10-29 09:23:29 -07:00
sigchain.c Replace all die("BUG: ...") calls by BUG() ones 2018-05-06 19:06:13 +09:00
sigchain.h sigchain: move doc to sigchain.h 2019-11-18 15:21:29 +09:00
simple-ipc.h Merge branch 'jh/builtin-fsmonitor-part1' 2021-10-13 15:15:58 -07:00
sparse-index.c Merge branch 'en/present-despite-skipped' 2022-03-09 13:38:23 -08:00
sparse-index.h repo_read_index: clear SKIP_WORKTREE bit from files present in worktree 2022-01-14 14:43:22 -08:00
split-index.c split-index: it really is incompatible with the sparse index 2022-01-23 17:06:23 -08:00
split-index.h split-index: convert struct split_index to object_id 2018-05-02 13:59:50 +09:00
stable-qsort.c stable-qsort: avoid using potentially unaligned access 2022-01-07 15:48:40 -08:00
strbuf.c gettext API users: don't explicitly cast ngettext()'s "n" 2022-03-07 11:57:52 -08:00
strbuf.h strbuf.h: use BUG(...) not die("BUG: ...") 2021-12-07 12:31:16 -08:00
streaming.c object-file.c: stop dying in parse_loose_header() 2021-10-01 15:06:00 -07:00
streaming.h streaming: allow open_istream() to handle any repo 2020-01-31 10:45:39 -08:00
string-list.c string-list.[ch]: remove string_list_init() compatibility function 2021-09-28 14:43:38 -07:00
string-list.h string-list API: change "nr" and "alloc" to "size_t" 2022-03-07 12:02:04 -08:00
strmap.c *.c *_init(): define in terms of corresponding *_INIT macro 2021-07-01 12:32:22 -07:00
strmap.h strmap: make callers of strmap_remove() to call it in void context 2020-12-15 15:30:44 -08:00
strvec.c *.c *_init(): define in terms of corresponding *_INIT macro 2021-07-01 12:32:22 -07:00
strvec.h *.h: move some *_INIT to designated initializers 2021-09-27 14:48:00 -07:00
sub-process.c run-command API: remove "argv" member, always use "args" 2021-11-25 22:15:07 -08:00
sub-process.h hashmap_entry: remove first member requirement from docs 2019-10-07 10:20:12 +09:00
submodule-config.c Merge branch 'ja/i18n-common-messages' 2022-02-25 15:47:35 -08:00
submodule-config.h branch: add --recurse-submodules option for branch creation 2022-02-04 08:16:39 -08:00
submodule.c Merge branch 'jt/reset-grafts-when-resetting-shallow' 2022-03-29 12:22:03 -07:00
submodule.h submodule: fix latent check_has_commit() bug 2022-03-16 16:08:59 -07:00
symlinks.c symlinks: do not include startup_info->original_cwd in dir removal 2021-12-09 13:33:13 -08:00
tag.c ssh signing: make verify-tag consider key lifetime 2021-12-09 13:38:04 -08:00
tag.h tag: factor out get_tagged_oid() 2019-09-05 14:10:18 -07:00
tar.h kset.h, tar.h: add missing header guard to prevent multiple inclusion 2019-11-07 20:12:04 +09:00
tempfile.c tempfile.c: introduce 'create_tempfile_mode' 2020-04-27 11:27:35 -07:00
tempfile.h tempfile.c: introduce 'create_tempfile_mode' 2020-04-27 11:27:35 -07: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 log: clean unneeded objects during log --remerge-diff 2022-02-02 10:02:27 -08:00
tmp-objdir.h log: clean unneeded objects during log --remerge-diff 2022-02-02 10:02:27 -08:00
trace2.c trace2: add stats for fsync operations 2022-03-30 11:15:55 -07:00
trace2.h C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code 2022-02-21 19:14:19 -08:00
trace.c C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code 2022-02-21 19:14:19 -08:00
trace.h C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code 2022-02-21 19:14:19 -08:00
trailer.c run-command API: remove "env" member, always use "env_array" 2021-11-25 22:15:08 -08:00
trailer.h pretty format %(trailers): add a "key_value_separator" 2020-12-09 14:16:42 -08:00
transport-helper.c fetch: add --refetch option 2022-03-28 10:25:52 -07:00
transport-internal.h transport: rename "fetch" in transport_vtable to "fetch_refs" 2021-08-05 08:59:36 -07:00
transport.c Merge branch 'rc/fetch-refetch' 2022-04-04 10:56:23 -07:00
transport.h fetch: add --refetch option 2022-03-28 10:25:52 -07:00
tree-diff.c pathspec: use BUG(...) not die("BUG:%s:%d....", <file>, <line>) 2021-12-07 12:31:17 -08:00
tree-walk.c object-file API: pass an enum to read_object_with_reference() 2022-02-25 17:16:32 -08:00
tree-walk.h tree-walk.c: break circular dependency with unpack-trees 2020-02-04 10:32:15 -08:00
tree.c tree.h API: simplify read_tree_recursive() signature 2021-03-20 16:09:26 -07:00
tree.h tree.h API: simplify read_tree_recursive() signature 2021-03-20 16:09:26 -07:00
unicode-width.h unicode: update the width tables to Unicode 14 2021-09-17 17:26:21 -07:00
unimplemented.sh unimplemented.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
unix-socket.c unix-socket: disallow chdir() when creating unix domain sockets 2021-03-15 14:32:51 -07:00
unix-socket.h unix-socket: disallow chdir() when creating unix domain sockets 2021-03-15 14:32:51 -07:00
unix-stream-server.c unix-stream-server: create unix domain socket under lock 2021-03-15 14:32:51 -07:00
unix-stream-server.h unix-stream-server: create unix domain socket under lock 2021-03-15 14:32:51 -07:00
unpack-trees.c Revert "unpack-trees: improve performance of next_cache_entry" 2022-03-17 09:13:21 -07:00
unpack-trees.h unpack-trees: refuse to remove startup_info->original_cwd 2021-12-09 13:33:12 -08:00
upload-pack.c upload-pack: look up "want" lines via commit-graph 2022-03-01 10:13:45 -08:00
upload-pack.h serve.[ch]: remove "serve_options", split up --advertise-refs code 2021-08-05 08:59:37 -07:00
url.c Fix spelling errors in code comments 2019-11-10 16:00:54 +09:00
url.h list-objects-filter: implement composite filters 2019-06-28 08:41:53 -07:00
urlmatch.c urlmatch.c: add and use a *_release() function 2022-03-04 13:24:18 -08:00
urlmatch.h urlmatch.c: add and use a *_release() function 2022-03-04 13:24:18 -08:00
usage.c C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code 2022-02-21 19:14:19 -08:00
userdiff.c Merge branch 'jd/userdiff-kotlin' 2022-03-23 14:09:29 -07:00
userdiff.h userdiff: add and use for_each_userdiff_driver() 2021-04-08 12:19:10 -07:00
utf8.c t0060: test ntfs/hfs-obscured dotfiles 2021-05-04 11:52:02 +09:00
utf8.h t0060: test ntfs/hfs-obscured dotfiles 2021-05-04 11:52:02 +09:00
varint.c cleanups: ensure that git-compat-util.h is included first 2014-09-15 12:05:14 -07:00
varint.h *.[ch]: remove extern from function declarations using spatch 2019-05-05 15:20:06 +09:00
version.c version --build-options: report commit, too, if possible 2017-12-14 22:53:04 -08:00
version.h version --build-options: report commit, too, if possible 2017-12-14 22:53:04 -08:00
versioncmp.c config: don't include config.h by default 2017-06-15 12:56:22 -07:00
walker.c lookup_unknown_object(): take a repository argument 2021-04-13 13:18:46 -07:00
walker.h remote-curl: show progress for fetches over dumb HTTP 2020-03-03 13:15:40 -08:00
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 'ds/sparse-checkout-requires-per-worktree-config' 2022-02-25 15:47:33 -08:00
worktree.h worktree: create init_worktree_config() 2022-02-08 09:49:20 -08:00
wrap-for-bin.sh Make running git under other debugger-like programs easy 2018-04-25 10:47:22 +09:00
wrapper.c trace2: add stats for fsync operations 2022-03-30 11:15:55 -07:00
write-or-die.c core.fsync: introduce granular fsync control infrastructure 2022-03-10 15:10:22 -08:00
ws.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
wt-status.c Merge branch 'ab/string-list-count-in-size-t' 2022-03-16 17:53:09 -07:00
wt-status.h status: skip sparse-checkout percentage with sparse-index 2021-07-14 13:42:49 -07:00
xdiff-interface.c xdiff: implement a zealous diff3, or "zdiff3" 2021-12-01 14:45:58 -08:00
xdiff-interface.h xdiff-interface: replace discard_hunk_line() with a flag 2021-05-11 12:47:31 +09:00
zlib.c Replace all die("BUG: ...") calls by BUG() ones 2018-05-06 19:06:13 +09:00

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 and Documentation/CodingGuidelines).

Those wishing to help with error message, usage and informational message string translations (localization l10) should see po/README.md (a po file is a Portable Object file that holds the translations).

To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org (not the Git list). The mailing list archives are available at https://lore.kernel.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