Go to file
Jeff King 4d7f95ed1f sparse-checkout: pass string literals directly to add_pattern()
The add_pattern() function takes a pattern string, but neither makes a
copy of it nor takes ownership of the memory. So it is the caller's
responsibility to make sure the string hangs around as long as the
pattern_list which references it.

There are a few cases in sparse-checkout where we use string literal
patterns by stuffing them into a strbuf, detaching the buffer, and then
passing the result into add_pattern(). This creates a leak when the
pattern_list is eventually cleared, since we don't retain a copy of the
detached buffer to free.

But we can observe that the whole strbuf dance is unnecessary. The point
was presumably[1] to satisfy the lifetime requirement of the string. But
string literals have static duration; we can count on them lasting for
the whole program.

So we can fix the leak by just passing them directly. And as a bonus,
that simplifies the code. The leaks can be seen in t7002, which drops
from 25 leaks to 22 with this patch. It also makes t3602 and t1090
leak-free.

In the long run, we will also want to clean up this (undocumented!)
memory lifetime requirement of add_pattern(). But that can come in a
later patch; passing the string literals directly will be the right
thing either way.

[1] The code in question comes from 416adc8711 (sparse-checkout: update
    working directory in-process for 'init', 2019-11-21) and 99dfa6f970
    (sparse-checkout: use in-process update for disable subcommand,
    2019-11-21), but I didn't see anything in their commit messages or
    on the list explaining the strbufs.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-06-04 10:38:23 -07:00
.github Merge branch 'jt/port-ci-whitespace-check-to-gitlab' 2024-05-15 09:52:54 -07:00
Documentation The eighth batch 2024-05-28 11:17:11 -07:00
block-sha1
builtin sparse-checkout: pass string literals directly to add_pattern() 2024-06-04 10:38:23 -07:00
ci ci: add missing dependency for TTY prereq 2024-05-27 11:19:57 -07:00
compat Merge branch 'jc/compat-regex-calloc-fix' 2024-05-20 11:20:05 -07:00
contrib Merge branch 'kn/osxkeychain-skip-idempotent-store' 2024-05-28 11:17:11 -07:00
ewah
git-gui Makefile(s): do not enforce "all indents must be done with tab" 2024-04-08 16:36:05 -07:00
gitk-git Makefile(s): avoid recipe prefix in conditional statements 2024-04-08 14:42:32 -07:00
gitweb
mergetools Switch grep from non-portable BRE to portable ERE 2024-05-17 12:13:18 -07:00
negotiator cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
oss-fuzz repository: drop `initialize_the_repository()` 2024-04-18 12:30:43 -07:00
perl
po Merge branch 'master' of github.com:alshopov/git-po 2024-04-29 14:50:23 +08:00
refs Merge branch 'ps/pseudo-ref-terminology' 2024-05-28 11:17:06 -07:00
reftable Merge branch 'ps/reftable-write-optim' 2024-05-08 10:18:43 -07:00
sha1
sha1collisiondetection@855827c583
sha1dc
sha256
t sparse-checkout: pass string literals directly to add_pattern() 2024-06-04 10:38:23 -07:00
templates
trace2
xdiff
.cirrus.yml
.clang-format
.editorconfig editorconfig: add Makefiles to "text files" 2024-03-23 11:42:31 -07:00
.gitattributes
.gitignore
.gitlab-ci.yml Merge branch 'jt/port-ci-whitespace-check-to-gitlab' 2024-05-15 09:52:54 -07:00
.gitmodules
.mailmap mailmap: change primary address for Linus Arver 2024-04-16 22:25:11 -07:00
.tsan-suppressions
CODE_OF_CONDUCT.md
COPYING
GIT-VERSION-GEN Start the 2.46 cycle 2024-04-30 14:52:20 -07:00
INSTALL Sync with 2.42.2 2024-04-19 12:38:50 +02:00
LGPL-2.1
Makefile Merge branch 'ps/leakfixes' into jk/leakfixes 2024-05-30 08:54:58 -07:00
README.md Merge branch 'jc/majordomo-to-subspace' into maint-2.43 2024-02-13 14:44:50 -08:00
RelNotes Start the 2.46 cycle 2024-04-30 14:52:20 -07:00
SECURITY.md
abspath.c
abspath.h
aclocal.m4
add-interactive.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
add-interactive.h
add-patch.c Merge branch 'rj/add-p-typo-reaction' 2024-05-08 10:18:45 -07:00
advice.c advice: add --no-advice global option 2024-05-03 10:36:59 -07:00
advice.h sequencer: allow disabling conflict advice 2024-03-18 09:28:40 -07:00
alias.c config: plug various memory leaks 2024-05-27 11:20:00 -07:00
alias.h
alloc.c
alloc.h
apply.c Merge branch 'rj/add-i-leak-fix' 2024-04-25 10:34:24 -07:00
apply.h
archive-tar.c
archive-zip.c
archive.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
archive.h
attr.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
attr.h config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
banned.h
base85.c
base85.h
bisect.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
bisect.h
blame.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
blame.h
blob.c
blob.h
bloom.c
bloom.h
branch.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
branch.h typo: replace 'commitish' with 'committish' 2024-04-11 15:14:56 -07:00
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle-uri.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
bundle-uri.h
bundle.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
bundle.h
cache-tree.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
cache-tree.h
cbtree.c
cbtree.h
chdir-notify.c
chdir-notify.h
check-builtins.sh
checkout.c checkout: clarify memory ownership in `unique_tracking_name()` 2024-05-27 11:19:58 -07:00
checkout.h checkout: clarify memory ownership in `unique_tracking_name()` 2024-05-27 11:19:58 -07:00
chunk-format.c
chunk-format.h
color.c color: add support for 12-bit RGB colors 2024-05-02 09:30:38 -07:00
color.h color: add support for 12-bit RGB colors 2024-05-02 09:30:38 -07:00
column.c
column.h
combine-diff.c Merge branch 'js/check-null-from-read-object-file' 2024-02-14 15:36:06 -08:00
command-list.txt
commit-graph.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
commit-graph.h
commit-reach.c commit-reach: fix memory leak in `ahead_behind()` 2024-05-27 11:20:01 -07:00
commit-reach.h commit-reach(repo_get_merge_bases_many_dirty): pass on errors 2024-02-29 08:06:01 -08:00
commit-slab-decl.h
commit-slab-impl.h
commit-slab.h
commit.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
commit.h Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
common-main.c repository: drop `initialize_the_repository()` 2024-04-18 12:30:43 -07:00
config.c Merge branch 'ps/leakfixes' into jk/leakfixes 2024-05-30 08:54:58 -07:00
config.h Merge branch 'ps/leakfixes' into jk/leakfixes 2024-05-30 08:54:58 -07:00
config.mak.dev
config.mak.in
config.mak.uname Merge branch 'js/build-fuzz-more-often' 2024-04-30 14:49:44 -07:00
configure.ac
connect.c
connect.h
connected.c
connected.h
convert.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
convert.h convert: refactor code to clarify ownership of check_roundtrip_encoding 2024-05-27 11:19:59 -07:00
copy.c Sync with 2.41.1 2024-04-19 12:38:46 +02:00
copy.h Sync with 2.40.2 2024-04-19 12:38:42 +02:00
credential.c credential: add method for querying capabilities 2024-04-16 22:39:08 -07:00
credential.h credential: add method for querying capabilities 2024-04-16 22:39:08 -07:00
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c date: make DATE_MODE thread-safe 2024-04-05 15:21:14 -07:00
date.h date: make DATE_MODE thread-safe 2024-04-05 15:21:14 -07:00
decorate.c
decorate.h
delta-islands.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
delta-islands.h
delta.h
detect-compiler
diagnose.c
diagnose.h
diff-delta.c
diff-lib.c Merge branch 'rs/diff-parseopts-cleanup' 2024-05-08 10:18:46 -07:00
diff-merges.c
diff-merges.h
diff-no-index.c
diff.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
diff.h
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore-rotate.c
diffcore.h
dir-iterator.c dir-iterator: support iteration in sorted order 2024-02-21 09:58:05 -08:00
dir-iterator.h dir-iterator: support iteration in sorted order 2024-02-21 09:58:05 -08:00
dir.c Sync with 2.44.1 2024-04-29 20:42:30 +02:00
dir.h Sync with 2.44.1 2024-04-29 20:42:30 +02:00
editor.c launch_editor: waiting message on error 2024-04-15 10:13:32 -07:00
editor.h
entry.c Sync with 2.42.2 2024-04-19 12:38:50 +02:00
entry.h
environment.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
environment.h config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
exec-cmd.c
exec-cmd.h
fetch-negotiator.c
fetch-negotiator.h
fetch-pack.c Merge branch 'ps/leakfixes' into jk/leakfixes 2024-05-30 08:54:58 -07:00
fetch-pack.h
fmt-merge-msg.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
fmt-merge-msg.h
fsck.c config: clarify memory ownership in `git_config_pathname()` 2024-05-27 11:19:59 -07:00
fsck.h Sync with 2.42.2 2024-04-19 12:38:50 +02:00
fsmonitor--daemon.h
fsmonitor-ipc.c
fsmonitor-ipc.h
fsmonitor-ll.h
fsmonitor-path-utils.h
fsmonitor-settings.c config: clarify memory ownership in `git_config_pathname()` 2024-05-27 11:19:59 -07:00
fsmonitor-settings.h
fsmonitor.c fsmonitor: support case-insensitive events 2024-03-06 09:10:06 -08:00
fsmonitor.h
generate-cmdlist.sh
generate-configlist.sh
generate-hooklist.sh
gettext.c
gettext.h
git-archimport.perl
git-compat-util.h Merge branch 'rs/no-openssl-compilation-fix-on-macos' 2024-04-23 11:52:38 -07:00
git-curl-compat.h remote-curl: add Transfer-Encoding header only for older curl 2024-04-10 19:24:48 +02:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh git-difftool--helper: honor `--trust-exit-code` with `--dir-diff` 2024-02-20 09:30:32 -08:00
git-filter-branch.sh
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh
git-p4.py git-p4: show Perforce error to the user 2024-05-08 15:44:14 -07:00
git-quiltimport.sh git-quiltimport: avoid an unnecessary subshell 2024-03-16 11:08:57 -07:00
git-request-pull.sh
git-send-email.perl send-email: move newline characters out of a few translatable strings 2024-04-10 09:11:10 -07:00
git-sh-i18n.sh
git-sh-setup.sh
git-submodule.sh
git-svn.perl
git-web--browse.sh
git-zlib.c
git-zlib.h
git.c advice: add --no-advice global option 2024-05-03 10:36:59 -07:00
git.rc
gpg-interface.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
gpg-interface.h
graph.c
graph.h
grep.c grep: improve errors for unmatched ( and ) 2024-03-25 11:40:53 -07:00
grep.h
hash-ll.h
hash-lookup.c
hash-lookup.h
hash.h
hashmap.c
hashmap.h
help.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
help.h
hex-ll.c
hex-ll.h
hex.c
hex.h
hook.c Sync with 2.41.1 2024-04-19 12:38:46 +02:00
hook.h
http-backend.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
http-fetch.c
http-push.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
http-walker.c
http.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
http.h http: add support for authtype and credential 2024-04-16 22:39:07 -07:00
ident.c
ident.h
imap-send.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
iterator.h
json-writer.c
json-writer.h
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c
line-log.h
line-range.c
line-range.h
linear-assignment.c
linear-assignment.h
list-objects-filter-options.c
list-objects-filter-options.h
list-objects-filter.c oidset: refactor oidset_insert_from_set() 2024-02-14 09:39:14 -08:00
list-objects-filter.h
list-objects.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
list-objects.h
list.h
lockfile.c
lockfile.h lockfile: report when rollback fails 2024-03-07 12:34:13 -08:00
log-tree.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
log-tree.h format-patch: return an allocated string from log_write_email_headers() 2024-03-19 17:54:16 -07:00
loose.c
loose.h
ls-refs.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
ls-refs.h
mailinfo.c
mailinfo.h
mailmap.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
mailmap.h config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
match-trees.c
match-trees.h
mem-pool.c don't report vsnprintf(3) error as bug 2024-04-21 12:27:07 -07:00
mem-pool.h mem-pool: add mem_pool_strfmt() 2024-02-26 09:35:40 -08:00
merge-blobs.c
merge-blobs.h
merge-ll.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
merge-ll.h merge options: add a conflict style member 2024-03-14 10:08:52 -07:00
merge-ort-wrappers.c
merge-ort-wrappers.h
merge-ort.c Merge branch 'pw/checkout-conflict-errorfix' 2024-04-01 13:21:33 -07:00
merge-ort.h
merge-recursive.c Merge branch 'pw/checkout-conflict-errorfix' 2024-04-01 13:21:33 -07:00
merge-recursive.h merge options: add a conflict style member 2024-03-14 10:08:52 -07:00
merge.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
merge.h
mergesort.h
midx-write.c Merge branch 'tb/pack-bitmap-write-cleanups' 2024-05-28 11:17:07 -07:00
midx.c Merge branch 'ps/missing-btmp-fix' 2024-04-23 11:52:40 -07:00
midx.h midx-write: move writing-related functions from midx.c 2024-04-01 14:18:16 -07:00
name-hash.c name-hash: add index_dir_find() 2024-02-26 15:34:01 -08:00
name-hash.h name-hash: add index_dir_find() 2024-02-26 15:34:01 -08:00
notes-cache.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
notes-cache.h
notes-merge.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
notes-merge.h
notes-utils.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
notes-utils.h
notes.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
notes.h
object-file-convert.c
object-file-convert.h
object-file.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
object-file.h
object-name.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
object-name.h
object-store-ll.h
object-store.h
object.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
object.h object.h: add flags allocated by pack-bitmap.h 2024-05-15 06:52:31 -07:00
oid-array.c
oid-array.h
oidmap.c
oidmap.h
oidset.c oidset: refactor oidset_insert_from_set() 2024-02-14 09:39:14 -08:00
oidset.h oidset: refactor oidset_insert_from_set() 2024-02-14 09:39:14 -08:00
oidtree.c
oidtree.h
pack-bitmap-write.c pack-bitmap: introduce `bitmap_writer_free()` 2024-05-15 06:53:46 -07:00
pack-bitmap.c Merge branch 'ps/missing-btmp-fix' 2024-04-23 11:52:40 -07:00
pack-bitmap.h pack-bitmap: introduce `bitmap_writer_free()` 2024-05-15 06:53:46 -07:00
pack-check.c
pack-mtimes.c
pack-mtimes.h
pack-objects.c
pack-objects.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
packfile.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
packfile.h
pager.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
pager.h
parallel-checkout.c
parallel-checkout.h
parse-options-cb.c
parse-options.c parse-options: rearrange long_name matching code 2024-03-03 09:49:22 -08:00
parse-options.h
parse.c
parse.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c Sync with 2.44.1 2024-04-29 20:42:30 +02:00
path.h Merge branch 'rs/apply-lift-path-length-limit' 2024-04-15 14:11:42 -07:00
pathspec.c
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
preload-index.h
pretty.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
pretty.h Merge branch 'rs/date-mode-pass-by-value' 2024-04-16 14:50:29 -07:00
prio-queue.c
prio-queue.h
progress.c
progress.h
promisor-remote.c Sync with 2.44.1 2024-04-29 20:42:30 +02:00
promisor-remote.h config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
prompt.c
prompt.h
protocol-caps.c
protocol-caps.h
protocol.c
protocol.h
prune-packed.c
prune-packed.h
quote.c
quote.h
range-diff.c
range-diff.h format-patch: run range-diff with larger creation-factor 2024-05-06 11:57:22 -07:00
reachable.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
reachable.h
read-cache-ll.h revision: optionally record matches with pathspec elements 2024-04-03 14:55:21 -07:00
read-cache.c Sync with 2.44.1 2024-04-29 20:42:30 +02:00
read-cache.h
rebase-interactive.c strbuf: accept a comment string for strbuf_add_commented_lines() 2024-03-12 13:28:10 -07:00
rebase-interactive.h
rebase.c
rebase.h
ref-filter.c Merge branch 'ps/pseudo-ref-terminology' 2024-05-28 11:17:06 -07:00
ref-filter.h ref-filter: properly distinuish pseudo and root refs 2024-05-15 07:30:52 -07:00
reflog-walk.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
reflog-walk.h date: make DATE_MODE thread-safe 2024-04-05 15:21:14 -07:00
reflog.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
reflog.h
refs.c Merge branch 'ps/pseudo-ref-terminology' 2024-05-28 11:17:06 -07:00
refs.h Merge branch 'ps/pseudo-ref-terminology' 2024-05-28 11:17:06 -07:00
refspec.c
refspec.h
remote-curl.c Merge branch 'bc/credential-scheme-enhancement' 2024-05-08 10:18:44 -07:00
remote.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
remote.h config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
replace-object.c
replace-object.h
repo-settings.c
repository.c Git 2.45.1 2024-05-13 18:29:15 -07:00
repository.h repository: drop `initialize_the_repository()` 2024-04-18 12:30:43 -07:00
rerere.c Merge branch 'mr/rerere-crash-fix' 2024-04-23 11:52:41 -07:00
rerere.h
reset.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
reset.h
resolve-undo.c
resolve-undo.h
revision.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
revision.h revision: optionally record matches with pathspec elements 2024-04-03 14:55:21 -07:00
run-command.c run-command: introduce function to prepare auto-maintenance process 2024-04-17 08:42:26 -07:00
run-command.h run-command: introduce function to prepare auto-maintenance process 2024-04-17 08:42:26 -07:00
sane-ctype.h
scalar.c scalar: avoid segfault in reconfigure --all 2024-05-07 17:51:12 -07:00
send-pack.c
send-pack.h
sequencer.c Merge branch 'ps/leakfixes' into jk/leakfixes 2024-05-30 08:54:58 -07:00
sequencer.h Merge branch 'pw/rebase-m-signoff-fix' 2024-04-30 14:49:41 -07:00
serve.c upload-pack: disallow object-info capability by default 2024-02-28 14:42:01 -08:00
serve.h
server-info.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
server-info.h
setup.c config: clarify memory ownership in `git_config_pathname()` 2024-05-27 11:19:59 -07:00
setup.h Sync with 2.44.1 2024-04-29 20:42:30 +02:00
sh-i18n--envsubst.c
sha1dc_git.c
sha1dc_git.h
shallow.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
shallow.h
shared.mak
shell.c
shortlog.h
sideband.c sideband: avoid short write(2) 2024-03-02 11:12:16 -08:00
sideband.h
sigchain.c
sigchain.h
simple-ipc.h
sparse-index.c
sparse-index.h
split-index.c
split-index.h
stable-qsort.c
statinfo.c
statinfo.h
strbuf.c strbuf: fix leak when `appendwholeline()` fails with EOF 2024-05-27 11:19:58 -07:00
strbuf.h Merge branch 'jk/core-comment-string' 2024-04-05 10:49:49 -07:00
streaming.c
streaming.h
string-list.c
string-list.h
strmap.c
strmap.h
strvec.c strvec: add functions to replace and remove strings 2024-05-27 11:20:02 -07:00
strvec.h strvec: add functions to replace and remove strings 2024-05-27 11:20:02 -07:00
sub-process.c
sub-process.h
submodule-config.c submodule: fix leaking memory for submodule entries 2024-05-27 11:20:01 -07:00
submodule-config.h
submodule.c Merge branch 'ps/refs-without-the-repository' 2024-05-16 10:10:14 -07:00
submodule.h Sync with 2.39.4 2024-04-19 12:38:37 +02:00
symlinks.c
symlinks.h
tag.c
tag.h
tar.h
tempfile.c lockfile: report when rollback fails 2024-03-07 12:34:13 -08:00
tempfile.h lockfile: report when rollback fails 2024-03-07 12:34:13 -08:00
thread-utils.c
thread-utils.h
tmp-objdir.c
tmp-objdir.h
trace.c
trace.h
trace2.c trace2: emit 'def_param' set with 'cmd_name' event 2024-03-07 10:24:34 -08:00
trace2.h
trailer.c Merge branch 'la/hide-trailer-info' 2024-05-23 11:04:27 -07:00
trailer.h Merge branch 'la/hide-trailer-info' 2024-05-23 11:04:27 -07:00
transport-helper.c transport-helper: fix leaking helper name 2024-05-27 11:19:57 -07:00
transport-internal.h
transport.c transport-helper: fix leaking helper name 2024-05-27 11:19:57 -07:00
transport.h
tree-diff.c
tree-walk.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
tree-walk.h Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
tree.c Merge branch 'eb/hash-transition' 2024-03-28 14:13:50 -07:00
tree.h
unicode-width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unix-stream-server.c
unix-stream-server.h
unpack-trees.c
unpack-trees.h
upload-pack.c config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
upload-pack.h
url.c
url.h
urlmatch.c
urlmatch.h
usage.c usage: report vsnprintf(3) failure 2024-04-05 15:16:27 -07:00
userdiff.c userdiff: better method/property matching for C# 2024-04-05 15:21:43 -07:00
userdiff.h config: clarify memory ownership in `git_config_string()` 2024-05-27 11:20:00 -07:00
utf8.c
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c
versioncmp.h
walker.c Merge branch 'kn/ref-transaction-symref' 2024-05-20 11:20:04 -07:00
walker.h
wildmatch.c
wildmatch.h
worktree.c config: add --comment option to add a comment 2024-03-15 12:25:35 -07:00
worktree.h
wrap-for-bin.sh
wrapper.c don't report vsnprintf(3) error as bug 2024-04-21 12:27:07 -07:00
wrapper.h
write-or-die.c
write-or-die.h
ws.c
ws.h
wt-status.c cocci: apply rules to rewrite callers of "refs" interfaces 2024-05-07 10:06:59 -07:00
wt-status.h status: unify parsing of --untracked= and status.showUntrackedFiles 2024-03-13 10:43:32 -07:00
xdiff-interface.c xdiff-interface: refactor parsing of merge.conflictstyle 2024-03-14 10:08:52 -07:00
xdiff-interface.h xdiff-interface: refactor parsing of merge.conflictstyle 2024-03-14 10:08:52 -07:00

README.md

Build status

Git - fast, scalable, distributed revision control system

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

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

Please read the file INSTALL for installation instructions.

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

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-<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