Go to file
Patrick Steinhardt 1568d1562e wrapper: allow generating insecure random bytes
The `csprng_bytes()` function generates randomness and writes it into a
caller-provided buffer. It abstracts over a couple of implementations,
where the exact one that is used depends on the platform.

These implementations have different guarantees: while some guarantee to
never fail (arc4random(3)), others may fail. There are two significant
failures to distinguish from one another:

  - Systemic failure, where e.g. opening "/dev/urandom" fails or when
    OpenSSL doesn't have a provider configured.

  - Entropy failure, where the entropy pool is exhausted, and thus the
    function cannot guarantee strong cryptographic randomness.

While we cannot do anything about the former, the latter failure can be
acceptable in some situations where we don't care whether or not the
randomness can be predicted.

Introduce a new `CSPRNG_BYTES_INSECURE` flag that allows callers to opt
into weak cryptographic randomness. The exact behaviour of the flag
depends on the underlying implementation:

    - `arc4random_buf()` never returns an error, so it doesn't change.

    - `getrandom()` pulls from "/dev/urandom" by default, which never
      blocks on modern systems even when the entropy pool is empty.

    - `getentropy()` seems to block when there is not enough randomness
      available, and there is no way of changing that behaviour.

    - `GtlGenRandom()` doesn't mention anything about its specific
      failure mode.

    - The fallback reads from "/dev/urandom", which also returns bytes in
      case the entropy pool is drained in modern Linux systems.

That only leaves OpenSSL with `RAND_bytes()`, which returns an error in
case the returned data wouldn't be cryptographically safe. This function
is replaced with a call to `RAND_pseudo_bytes()`, which can indicate
whether or not the returned data is cryptographically secure via its
return value. If it is insecure, and if the `CSPRNG_BYTES_INSECURE` flag
is set, then we ignore the insecurity and return the data regardless.

It is somewhat questionable whether we really need the flag in the first
place, or whether we wouldn't just ignore the potentially-insecure data.
But the risk of doing that is that we might have or grow callsites that
aren't aware of the potential insecureness of the data in places where
it really matters. So using a flag to opt-in to that behaviour feels
like the more secure choice.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-01-07 09:04:18 -08:00
.github Merge branch 'ps/ci-meson' 2024-12-23 09:32:25 -08:00
bin-wrappers Introduce support for the Meson build system 2024-12-07 07:52:14 +09:00
block-sha1 sha1: do not redefine platform_SHA_CTX and friends 2024-09-27 11:27:47 -07:00
builtin wrapper: allow generating insecure random bytes 2025-01-07 09:04:18 -08:00
ci Merge branch 'jk/lsan-race-ignore-false-positive' 2025-01-02 13:37:08 -08:00
compat Merge branch 'js/mingw-rename-fix' 2024-12-23 09:32:16 -08:00
contrib GIT-BUILD-OPTIONS: wire up NO_GITWEB option 2024-12-27 08:17:19 -08:00
Documentation Merge branch 'jc/doc-opt-tilde-expand' 2025-01-06 08:23:29 -08:00
ewah global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
git-gui Merge branch 'master' of https://github.com/j6t/git-gui 2025-01-06 06:51:37 -08:00
gitk-git Merge branch 'master' of https://github.com/j6t/gitk 2025-01-06 06:52:05 -08:00
gitweb Merge branch 'ps/build' 2024-12-15 17:54:33 -08:00
mergetools Merge branch 'ak/typofix-2.46-maint' 2024-10-04 14:21:40 -07:00
negotiator prio-queue: use size_t rather than int for size 2024-12-20 07:21:45 -08:00
oss-fuzz Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
perl Introduce support for the Meson build system 2024-12-07 07:52:14 +09:00
po gitk: Update Bulgarian translation (327t) 2024-12-24 11:58:09 +01:00
refs Merge branch 'kn/reflog-migration' 2024-12-23 09:32:29 -08:00
reftable wrapper: allow generating insecure random bytes 2025-01-07 09:04:18 -08:00
sha1 sha1: do not redefine platform_SHA_CTX and friends 2024-09-27 11:27:47 -07:00
sha1collisiondetection@855827c583
sha1dc
sha256
subprojects Introduce support for the Meson build system 2024-12-07 07:52:14 +09:00
t wrapper: allow generating insecure random bytes 2025-01-07 09:04:18 -08:00
templates Introduce support for the Meson build system 2024-12-07 07:52:14 +09:00
trace2 global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
xdiff global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
.cirrus.yml ci: update FreeBSD image to 13.4 2024-09-20 14:40:41 -07:00
.clang-format clang-format: align consecutive macro definitions 2024-10-18 17:37:16 -04:00
.editorconfig editorconfig: add Makefiles to "text files" 2024-03-23 11:42:31 -07:00
.gitattributes Makefile(s): do not enforce "all indents must be done with tab" 2024-05-05 16:54:35 +02:00
.gitignore Makefile: allow "bin-wrappers/" directory to exist 2024-12-07 07:52:11 +09:00
.gitlab-ci.yml Merge branch 'ps/ci-meson' 2024-12-23 09:32:25 -08:00
.gitmodules
.mailmap .mailmap document current address. 2024-09-06 09:31:15 -07:00
.tsan-suppressions
abspath.c
abspath.h
aclocal.m4
add-interactive.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
add-interactive.h
add-patch.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
advice.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
advice.h fetch set_head: move warn advice into advise_if_enabled 2024-12-06 02:59:16 +09:00
alias.c config: make dependency on repo in read_early_config() explicit 2024-09-12 10:15:40 -07:00
alias.h
alloc.c
alloc.h
apply.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
apply.h apply: support --ours, --theirs, and --union for three-way merges 2024-09-09 10:07:24 -07:00
archive-tar.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
archive-zip.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
archive.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
archive.h
attr.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
attr.h fuzz: port fuzz-parse-attr-line from OSS-Fuzz 2024-10-16 18:14:11 -04:00
banned.h
base85.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
base85.h
bisect.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
bisect.h bisect: fix leaking good/bad terms when reading multipe times 2024-11-21 08:23:40 +09:00
blame.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
blame.h builtin/blame: fix leaking blame entries with --incremental 2024-11-21 08:23:40 +09:00
blob.c
blob.h
bloom.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
bloom.h Merge branch 'ak/typofixes' 2024-09-23 10:35:07 -07:00
branch.c Merge branch 'jc/forbid-head-as-tagname' 2024-12-15 17:54:26 -08:00
branch.h typo: replace 'commitish' with 'committish' 2024-04-11 15:14:56 -07:00
builtin.h builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h 2024-09-13 14:32:24 -07:00
bulk-checkin.c Merge branch 'ps/weak-sha1-for-tail-sum-fix' 2025-01-01 09:21:14 -08:00
bulk-checkin.h
bundle-uri.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
bundle-uri.h
bundle.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
bundle.h bundle: support fsck message configuration 2024-11-28 12:07:58 +09:00
cache-tree.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
cache-tree.h cache-tree: refactor verification to return error codes 2024-10-07 15:08:11 -07:00
cbtree.c cbtree: fix a typo 2024-09-16 10:46:00 -07:00
cbtree.h
chdir-notify.c
chdir-notify.h
check-builtins.sh
checkout.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
checkout.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
chunk-format.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
chunk-format.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
CODE_OF_CONDUCT.md
color.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
color.h color: add support for 12-bit RGB colors 2024-05-02 09:30:38 -07:00
column.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
column.h
combine-diff.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
command-list.txt builtin/refs: new command to migrate ref storage formats 2024-06-06 09:04:34 -07:00
commit-graph.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
commit-graph.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
commit-reach.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
commit-reach.h commit-reach: add get_branch_base_for_tip 2024-08-14 10:10:05 -07:00
commit-slab-decl.h
commit-slab-impl.h
commit-slab.h
commit.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
commit.h Merge branch 'jc/pass-repo-to-builtins' 2024-09-23 10:35:09 -07:00
common-main.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
config.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
config.h config: make dependency on repo in read_early_config() explicit 2024-09-12 10:15:40 -07:00
config.mak.dev config.mak.dev: drop -Wno-sign-compare 2024-12-06 20:20:02 +09:00
config.mak.in
config.mak.uname cmake/vcxproj: stop special-casing remote-ext 2024-12-17 12:48:54 -08:00
configure.ac Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
connect.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
connect.h
connected.c packfile: add repository to struct packed_git 2024-12-04 08:21:53 +09:00
connected.h
convert.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
convert.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
copy.c Merge branch 'fixes/2.45.1/2.41' into fixes/2.45.1/2.42 2024-05-24 16:57:43 -07:00
copy.h Merge branch 'fixes/2.45.1/2.40' into fixes/2.45.1/2.41 2024-05-24 16:57:02 -07:00
COPYING
credential.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
credential.h credential: clear expired c->credential, unify secret clearing 2024-06-06 11:42:40 -07:00
csum-file.c csum-file: fix -Wsign-compare warning on 32-bit platform 2024-12-06 20:20:03 +09:00
csum-file.h Merge branch 'ps/leakfixes-part-4' 2024-08-23 09:02:33 -07:00
ctype.c
daemon.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
date.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
date.h date: make DATE_MODE thread-safe 2024-04-05 15:21:14 -07:00
decorate.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
decorate.h t/: migrate helper/test-example-decorate to the unit testing framework 2024-05-28 13:53:36 -07:00
delta-islands.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
delta-islands.h
delta.h
detect-compiler
diagnose.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
diagnose.h
diff-delta.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
diff-lib.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
diff-merges.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
diff-merges.h
diff-no-index.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
diff.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
diff.h diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
diffcore-break.c diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
diffcore-delta.c
diffcore-order.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
diffcore-pickaxe.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
diffcore-rename.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
diffcore-rotate.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
diffcore.h diff: improve lifecycle management of diff queues 2024-09-30 11:23:05 -07:00
dir-iterator.c
dir-iterator.h
dir.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
dir.h win32: override fspathcmp() with a directory separator-aware version 2024-07-13 16:23:36 -07:00
editor.c global: prepare for hiding away repo-less config functions 2024-08-13 10:01:05 -07:00
editor.h editor: do not rely on the_repository for interactive edits 2024-08-13 10:01:00 -07:00
entry.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
entry.h
environment.c config: make packed_git_(limit|window_size) non-global variables 2024-12-04 08:21:55 +09:00
environment.h config: make delta_base_cache_limit a non-global variable 2024-12-04 08:21:55 +09:00
exec-cmd.c exec_cmd: RUNTIME_PREFIX on z/OS systems 2024-08-22 08:58:46 -07:00
exec-cmd.h
fetch-negotiator.c
fetch-negotiator.h
fetch-pack.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
fetch-pack.h fetch-pack: split out fsck config parsing 2024-11-28 12:07:58 +09:00
fmt-merge-msg.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
fmt-merge-msg.h
fsck.c packfile: pass down repository to for_each_packed_object 2024-12-04 08:21:54 +09:00
fsck.h ref: add symlink ref content check for files backend 2024-11-21 08:21:34 +09:00
fsmonitor--daemon.h
fsmonitor-ipc.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
fsmonitor-ipc.h
fsmonitor-ll.h
fsmonitor-path-utils.h
fsmonitor-settings.c fsmonitor-settings: fix a typo 2024-09-19 13:46:00 -07:00
fsmonitor-settings.h
fsmonitor.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
fsmonitor.h
generate-cmdlist.sh Makefile: refactor generators to be PWD-independent 2024-12-07 07:52:11 +09:00
generate-configlist.sh Makefile: refactor generators to be PWD-independent 2024-12-07 07:52:11 +09:00
generate-hooklist.sh Makefile: refactor generators to be PWD-independent 2024-12-07 07:52:11 +09:00
generate-perl.sh Makefile: use "generate-perl.sh" to massage Perl library 2024-12-07 07:52:10 +09:00
generate-python.sh Makefile: extract script to massage Python scripts 2024-12-07 07:52:10 +09:00
generate-script.sh Makefile: extract script to massage Shell scripts 2024-12-07 07:52:10 +09:00
gettext.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
gettext.h
git-archimport.perl Require Perl 5.26.0 2024-10-23 16:16:36 -04:00
GIT-BUILD-OPTIONS.in GIT-BUILD-OPTIONS: wire up NO_GITWEB option 2024-12-27 08:17:19 -08:00
git-compat-util.h git-compat-util: introduce macros to disable "-Wsign-compare" warnings 2024-12-06 20:20:01 +09:00
git-curl-compat.h git-curl-compat: remove check for curl 7.56.0 2024-10-23 16:16:35 -04:00
git-cvsexportcommit.perl Require Perl 5.26.0 2024-10-23 16:16:36 -04:00
git-cvsimport.perl Require Perl 5.26.0 2024-10-23 16:16:36 -04:00
git-cvsserver.perl Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
git-difftool--helper.sh git-difftool--helper.sh: exit upon initialize_merge_tool errors 2024-11-25 11:59:19 +09:00
git-filter-branch.sh
git-instaweb.sh Makefile: consistently use PERL_PATH 2024-12-07 07:52:09 +09:00
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh git-mergetool--lib.sh: add error message for unknown tool variant 2024-11-25 11:59:19 +09:00
git-mergetool.sh
git-p4.py git-p4: fix typos 2024-09-19 13:46:00 -07:00
git-quiltimport.sh git-quiltimport: avoid an unnecessary subshell 2024-03-16 11:08:57 -07:00
git-request-pull.sh Makefile: consistently use PERL_PATH 2024-12-07 07:52:09 +09:00
git-send-email.perl Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
git-sh-i18n.sh Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
git-sh-setup.sh Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
git-submodule.sh builtin/submodule: allow "add" to use different ref storage format 2024-08-08 09:22:21 -07:00
git-svn.perl Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
GIT-VERSION-FILE.in Makefile: refactor GIT-VERSION-GEN to be reusable 2024-12-07 07:52:08 +09:00
GIT-VERSION-GEN Git 2.48-rc2 2025-01-06 08:24:43 -08:00
git-web--browse.sh
git-zlib.c
git-zlib.h
git.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
git.rc.in Makefile: generate "git.rc" via GIT-VERSION-GEN 2024-12-07 07:52:09 +09:00
gpg-interface.c gpg-interface: address -Wsign-comparison warnings 2024-12-06 20:20:04 +09:00
gpg-interface.h gpg-interface: fix misdesigned signing key interfaces 2024-09-05 08:49:11 -07:00
graph.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
graph.h
grep.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
grep.h
hash-lookup.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
hash-lookup.h
hash.h hash.h: set NEEDS_CLONE_HELPER_UNSAFE in fallback mode 2024-10-03 11:18:36 -07:00
hashmap.c
hashmap.h
help.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
help.h global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
hex-ll.c
hex-ll.h
hex.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
hex.h hex: guard declarations with USE_THE_REPOSITORY_VARIABLE 2024-06-14 10:26:35 -07:00
hook.c Merge branch 'bf/explicit-config-set-in-advice-messages' 2024-12-15 17:54:28 -08:00
hook.h hooks: remove implicit dependency on the_repository 2024-08-13 10:01:01 -07:00
http-backend.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
http-fetch.c http-fetch: clear leaking git-index-pack(1) arguments 2024-09-25 10:24:52 -07:00
http-push.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
http-walker.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
http.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
http.h http: fix leak of http_object_request struct 2024-09-25 10:24:55 -07:00
ident.c ident: add casts for fallback name and GECOS 2024-06-07 10:30:51 -07:00
ident.h
imap-send.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
INSTALL Require Perl 5.26.0 2024-10-23 16:16:36 -04:00
iterator.h
json-writer.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
json-writer.h
khash.h
kwset.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
kwset.h
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
line-log.h
line-range.c line-range: plug leaking find functions 2024-06-11 13:15:08 -07:00
line-range.h
linear-assignment.c
linear-assignment.h
list-objects-filter-options.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
list-objects-filter-options.h
list-objects-filter.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
list-objects-filter.h
list-objects.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
list-objects.h
list.h
lockfile.c
lockfile.h
log-tree.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
log-tree.h rebase-update-refs: extract load_branch_decorations 2024-10-09 10:52:45 -07:00
loose.c loose: don't rely on repository global state 2024-10-09 11:51:31 -07:00
loose.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
ls-refs.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
ls-refs.h
mailinfo.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
mailinfo.h
mailmap.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
mailmap.h check-mailmap: add options for additional mailmap sources 2024-08-27 14:51:29 -07:00
Makefile Revert barrier-based LSan threading race workaround 2025-01-01 14:13:01 -08:00
match-trees.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
match-trees.h
mem-pool.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
mem-pool.h __attribute__: add a few missing format attributes 2024-06-10 09:16:30 -07:00
merge-blobs.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
merge-blobs.h
merge-ll.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
merge-ll.h merge options: add a conflict style member 2024-03-14 10:08:52 -07:00
merge-ort-wrappers.c merge: fix leaking merge bases 2024-06-11 13:15:08 -07:00
merge-ort-wrappers.h merge: fix leaking merge bases 2024-06-11 13:15:08 -07:00
merge-ort.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
merge-ort.h Merge branch 'ps/leakfixes-more' 2024-07-08 14:53:10 -07:00
merge-recursive.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
merge-recursive.h merge-recursive: honor diff.algorithm 2024-07-13 18:10:49 -07:00
merge.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
merge.h
mergesort.h
meson_options.txt meson: wire up support for AsciiDoctor 2024-12-27 08:28:09 -08:00
meson.build meson: enable auto-discovered "gitweb" 2024-12-27 08:17:19 -08:00
midx-write.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
midx.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
midx.h midx: pass down hash_algo to functions using global variables 2024-12-04 10:32:21 +09:00
name-hash.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
name-hash.h
notes-cache.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
notes-cache.h
notes-merge.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
notes-merge.h
notes-utils.c Merge branch 'ps/leakfixes-more' 2024-07-08 14:53:10 -07:00
notes-utils.h commit: fix leaking parents when calling commit_tree_extended() 2024-06-11 13:15:07 -07:00
notes.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
notes.h environment: stop storing "core.notesRef" globally 2024-09-12 10:15:44 -07:00
object-file-convert.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
object-file-convert.h
object-file.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
object-file.h finalize_object_file(): implement collision check 2024-09-27 11:27:47 -07:00
object-name.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
object-name.h object-name: free leaking object contexts 2024-06-11 13:15:05 -07:00
object-store-ll.h packfile: pass down repository to for_each_packed_object 2024-12-04 08:21:54 +09:00
object-store.h
object.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
object.h object: clear grafts when clearing parsed object pool 2024-09-05 08:49:11 -07:00
oid-array.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
oid-array.h
oidmap.c
oidmap.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
oidset.c oidset: pass hash algorithm when parsing file 2024-06-14 10:26:34 -07:00
oidset.h oidset: pass hash algorithm when parsing file 2024-06-14 10:26:34 -07:00
oidtree.c global: Fix duplicate word typos 2024-10-21 16:05:04 -04:00
oidtree.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
pack-bitmap-write.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
pack-bitmap.c Merge branch 'tb/bitmap-fix-pack-reuse' 2024-12-23 09:32:22 -08:00
pack-bitmap.h pack-bitmap: tag bitmapped packs with their corresponding MIDX 2024-08-27 14:50:26 -07:00
pack-check.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
pack-mtimes.c
pack-mtimes.h
pack-objects.c
pack-objects.h config: make delta_base_cache_limit a non-global variable 2024-12-04 08:21:55 +09:00
pack-revindex.c midx: pass down hash_algo to functions using global variables 2024-12-04 10:32:21 +09:00
pack-revindex.h
pack-write.c config: make delta_base_cache_limit a non-global variable 2024-12-04 08:21:55 +09:00
pack.h config: make delta_base_cache_limit a non-global variable 2024-12-04 08:21:55 +09:00
packfile.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
packfile.h config: make packed_git_(limit|window_size) non-global variables 2024-12-04 08:21:55 +09:00
pager.c config: make dependency on repo in read_early_config() explicit 2024-09-12 10:15:40 -07:00
pager.h pager: introduce wait_for_pager 2024-07-25 09:03:00 -07:00
parallel-checkout.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
parallel-checkout.h
parse-options-cb.c Merge branch 'ps/use-the-repository' 2024-07-02 09:59:00 -07:00
parse-options.c parse-options: free previous value of OPTION_FILENAME 2024-09-27 08:25:35 -07:00
parse-options.h t: introduce compatibility options to clar-based tests 2024-12-13 06:48:47 -08:00
parse.c config: introduce git_config_double() 2024-05-24 11:40:42 -07:00
parse.h config: introduce git_config_double() 2024-05-24 11:40:42 -07:00
patch-delta.c
patch-ids.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
patch-ids.h
path.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
path.h Merge branch 'bc/allow-upload-pack-from-other-people' 2024-12-10 10:04:55 +09:00
pathspec.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
pathspec.h Merge branch 'as/pathspec-h-typofix' 2024-07-12 08:41:57 -07:00
pkt-line.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
pkt-line.h
preload-index.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
preload-index.h
pretty.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
pretty.h Merge branch 'rs/date-mode-pass-by-value' 2024-04-16 14:50:29 -07:00
prio-queue.c prio-queue: use size_t rather than int for size 2024-12-20 07:21:45 -08:00
prio-queue.h prio-queue: use size_t rather than int for size 2024-12-20 07:21:45 -08:00
progress.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
progress.h
promisor-remote.c packfile: pass down repository to for_each_packed_object 2024-12-04 08:21:54 +09:00
promisor-remote.h config: clarify memory ownership in git_config_string() 2024-05-27 11:20:00 -07:00
prompt.c environment: guard state depending on a repository 2024-09-12 10:15:42 -07:00
prompt.h
protocol-caps.c protocol-caps: use hash algorithm from passed-in repository 2024-06-14 10:26:34 -07:00
protocol-caps.h
protocol.c global: prepare for hiding away repo-less config functions 2024-08-13 10:01:05 -07:00
protocol.h
prune-packed.c packfile: pass down repository to has_object[_kept]_pack 2024-12-04 08:21:54 +09:00
prune-packed.h
pseudo-merge.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
pseudo-merge.h pseudo-merge: fix various memory leaks 2024-09-30 11:23:06 -07:00
quote.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
quote.h
range-diff.c Merge branch 'js/range-diff-diff-merges' 2024-12-23 09:32:17 -08:00
range-diff.h range-diff: optionally include merge commits' diffs in the analysis 2024-12-16 08:45:48 -08:00
reachable.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
reachable.h
read-cache-ll.h global: Fix duplicate word typos 2024-10-21 16:05:04 -04:00
read-cache.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
read-cache.h
README.md git-gui: note the new maintainer 2024-05-11 17:22:17 +02:00
rebase-interactive.c Merge branch 'ps/use-the-repository' 2024-07-02 09:59:00 -07:00
rebase-interactive.h rebase -i: pass struct replay_opts to parse_insn_line() 2024-05-30 10:02:56 -07:00
rebase.c rebase: fix a typo 2024-09-19 13:46:01 -07:00
rebase.h
ref-filter.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
ref-filter.h ref-filter: add ref_format_clear() function 2024-09-09 16:26:11 -07:00
reflog-walk.c diff.h: fix index used to loop through unsigned integer 2024-12-06 20:20:03 +09:00
reflog-walk.h date: make DATE_MODE thread-safe 2024-04-05 15:21:14 -07:00
reflog.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
reflog.h
refs.c Merge branch 'kn/reflog-migration' 2024-12-23 09:32:29 -08:00
refs.h Merge branch 'kn/reflog-migration' 2024-12-23 09:32:29 -08:00
refspec.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
refspec.h refspec: store raw refspecs inside refspec_item 2024-11-12 18:16:48 +09:00
RelNotes Prepare for 2.47.1 2024-11-20 14:43:30 +09:00
remote-curl.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
remote.c Merge branch 'sk/calloc-not-malloc-plus-memset' 2024-12-23 09:32:18 -08:00
remote.h fetch set_head: add warn-if-not-$branch option 2024-12-06 02:59:40 +09:00
replace-object.c refs: add referent to each_ref_fn 2024-08-09 08:47:34 -07:00
replace-object.h
repo-settings.c config: make packed_git_(limit|window_size) non-global variables 2024-12-04 08:21:55 +09:00
repo-settings.h config: make packed_git_(limit|window_size) non-global variables 2024-12-04 08:21:55 +09:00
repository.c worktree: add relativeWorktrees extension 2024-12-02 09:36:16 +09:00
repository.h worktree: add relativeWorktrees extension 2024-12-02 09:36:16 +09:00
rerere.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
rerere.h
reset.c hooks: remove implicit dependency on the_repository 2024-08-13 10:01:01 -07:00
reset.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
resolve-undo.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
resolve-undo.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
revision.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
revision.h revision: fix a typo 2024-09-19 13:46:12 -07:00
run-command.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
run-command.h run-command: fix a typo 2024-09-19 13:46:12 -07:00
sane-ctype.h
scalar.c scalar: address -Wsign-compare warnings 2024-12-06 20:20:05 +09:00
SECURITY.md
send-pack.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
send-pack.h
sequencer.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
sequencer.h Merge branch 'pw/rebase-i-error-message' into maint-2.45 2024-07-02 09:27:56 -07:00
serve.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
serve.h
server-info.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
server-info.h
setup.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
setup.h worktree: add relativeWorktrees extension 2024-12-02 09:36:16 +09:00
sh-i18n--envsubst.c
sha1dc_git.c
sha1dc_git.h sha1: do not redefine platform_SHA_CTX and friends 2024-09-27 11:27:47 -07:00
shallow.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
shallow.h
shared.mak GIT-VERSION-GEN: fix overriding GIT_BUILT_FROM_COMMIT and GIT_DATE 2024-12-20 12:36:45 -08:00
shell.c shell: fix leaking strings 2024-09-30 11:23:03 -07:00
shortlog.h
sideband.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
sideband.h
sigchain.c
sigchain.h
simple-ipc.h simple-ipc: split async server initialization and running 2024-10-08 12:03:56 -07:00
sparse-index.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
sparse-index.h sparse-checkout: disable advice in 'disable' 2024-09-23 13:19:01 -07:00
split-index.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
split-index.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
stable-qsort.c
statinfo.c environment: guard state depending on a repository 2024-09-12 10:15:42 -07:00
statinfo.h
strbuf.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
strbuf.h refs: move ref name helpers around 2024-12-03 12:38:49 +09:00
streaming.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
streaming.h
string-list.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
string-list.h
strmap.c
strmap.h
strvec.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
strvec.h strvec: introduce new strvec_splice() function 2024-11-21 08:23:42 +09:00
sub-process.c
sub-process.h
submodule-config.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
submodule-config.h submodule: fix leaking submodule entry list 2024-09-30 11:23:03 -07:00
submodule.c Merge branch 'sk/calloc-not-malloc-plus-memset' 2024-12-23 09:32:18 -08:00
submodule.h submodule: fix leaking update strategy 2024-09-27 08:25:34 -07:00
symlinks.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
symlinks.h
tag.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
tag.h refs: pass repo when peeling objects 2024-05-17 10:33:39 -07:00
tar.h
tempfile.c
tempfile.h
thread-utils.c
thread-utils.h Revert barrier-based LSan threading race workaround 2025-01-01 14:13:01 -08:00
tmp-objdir.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
tmp-objdir.h
trace2.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
trace2.h refs/reftable: wire up support for exclude patterns 2024-09-16 13:57:19 -07:00
trace.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
trace.h
trailer.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
trailer.h trailer: spread usage of "trailer_block" language 2024-10-14 12:33:02 -04:00
transport-helper.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
transport-internal.h
transport.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
transport.h transport: introduce parse_transport_option() method 2024-10-08 10:22:06 -07:00
tree-diff.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
tree-walk.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
tree-walk.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07:00
tree.c global: introduce USE_THE_REPOSITORY_VARIABLE macro 2024-06-14 10:26:33 -07:00
tree.h
unicode-width.h unicode: update the width tables to Unicode 16 2024-09-12 14:20:44 -07:00
unimplemented.sh Makefile: consistently use @PLACEHOLDER@ to substitute 2024-12-07 07:52:08 +09:00
unix-socket.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
unix-socket.h
unix-stream-server.c
unix-stream-server.h
unpack-trees.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
unpack-trees.h
upload-pack.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
upload-pack.h
url.c
url.h
urlmatch.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
urlmatch.h
usage.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
userdiff.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
userdiff.h userdiff: fix leaking memory for configured diff drivers 2024-08-14 10:08:01 -07:00
utf8.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
utf8.h utf8.h: squelch unused-parameter warnings with NO_ICONV 2024-10-02 15:52:48 -07:00
varint.c
varint.h
version-def.h.in Makefile: propagate Git version via generated header 2024-12-07 07:52:08 +09:00
version.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
version.h
versioncmp.c global: trivial conversions to fix -Wsign-compare warnings 2024-12-06 20:20:04 +09:00
versioncmp.h
walker.c refs: allow passing flags when setting up a transaction 2024-11-21 07:59:14 +09:00
walker.h http-walker: use object_id instead of bare hash 2024-10-25 17:35:46 -04:00
wildmatch.c
wildmatch.h
worktree.c Merge branch 'ps/build-sign-compare' 2024-12-23 09:32:11 -08:00
worktree.h worktree: add relative cli/config options to repair command 2024-12-02 09:36:17 +09:00
wrapper.c wrapper: allow generating insecure random bytes 2025-01-07 09:04:18 -08:00
wrapper.h wrapper: allow generating insecure random bytes 2025-01-07 09:04:18 -08:00
write-or-die.c
write-or-die.h
ws.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
ws.h
wt-status.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
wt-status.h status: unify parsing of --untracked= and status.showUntrackedFiles 2024-03-13 10:43:32 -07:00
xdiff-interface.c global: mark code units that generate warnings with -Wsign-compare 2024-12-06 20:20:02 +09:00
xdiff-interface.h hash-ll: merge with "hash.h" 2024-06-14 10:26:33 -07: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 to git+subscribe@vger.kernel.org (see https://subspace.kernel.org/subscribing.html for details). The mailing list archives are available at https://lore.kernel.org/git/, https://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