Revision 9cf85473209ea8ae2b56c13145c4704d12ee1374 authored by Filip Hejsek on 28 January 2024, 04:09:17 UTC, committed by Johannes Schindelin on 17 April 2024, 20:30:01 UTC
While it is expected to have several git dirs within the `.git/modules/`
tree, it is important that they do not interfere with each other. For
example, if one submodule was called "captain" and another submodule
"captain/hooks", their respective git dirs would clash, as they would be
located in `.git/modules/captain/` and `.git/modules/captain/hooks/`,
respectively, i.e. the latter's files could clash with the actual Git
hooks of the former.

To prevent these clashes, and in particular to prevent hooks from being
written and then executed as part of a recursive clone, we introduced
checks as part of the fix for CVE-2019-1387 in a8dee3ca61 (Disallow
dubiously-nested submodule git directories, 2019-10-01).

It is currently possible to bypass the check for clashing submodule
git dirs in two ways:

1. parallel cloning
2. checkout --recurse-submodules

Let's check not only before, but also after parallel cloning (and before
checking out the submodule), that the git dir is not clashing with
another one, otherwise fail. This addresses the parallel cloning issue.

As to the parallel checkout issue: It requires quite a few manual steps
to create clashing git dirs because Git itself would refuse to
initialize the inner one, as demonstrated by the test case.

Nevertheless, let's teach the recursive checkout (namely, the
`submodule_move_head()` function that is used by the recursive checkout)
to be careful to verify that it does not use a clashing git dir, and if
it does, disable it (by deleting the `HEAD` file so that subsequent Git
calls won't recognize it as a git dir anymore).

Note: The parallel cloning test case contains a `cat err` that proved to
be highly useful when analyzing the racy nature of the operation (the
operation can fail with three different error messages, depending on
timing), and was left on purpose to ease future debugging should the
need arise.

Signed-off-by: Filip Hejsek <filip.hejsek@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent b20c10f
History
File Mode Size
.github
Documentation
block-sha1
builtin
ci
compat
contrib
ewah
git-gui
gitk-git
gitweb
mergetools
negotiator
oss-fuzz
perl
po
refs
reftable
sha1collisiondetection @ 855827c
sha1dc
sha256
t
templates
trace2
xdiff
.cirrus.yml -rw-r--r-- 491 bytes
.clang-format -rw-r--r-- 5.0 KB
.editorconfig -rw-r--r-- 288 bytes
.gitattributes -rw-r--r-- 575 bytes
.gitignore -rw-r--r-- 3.5 KB
.gitmodules -rw-r--r-- 153 bytes
.mailmap -rw-r--r-- 16.8 KB
.tsan-suppressions -rw-r--r-- 689 bytes
CODE_OF_CONDUCT.md -rw-r--r-- 5.9 KB
COPYING -rw-r--r-- 18.3 KB
GIT-VERSION-GEN -rwxr-xr-x 752 bytes
INSTALL -rw-r--r-- 9.8 KB
LGPL-2.1 -rw-r--r-- 26.2 KB
Makefile -rw-r--r-- 117.6 KB
README.md -rw-r--r-- 3.6 KB
RelNotes l--------- 33 bytes
SECURITY.md -rw-r--r-- 1.9 KB
abspath.c -rw-r--r-- 7.2 KB
aclocal.m4 -rw-r--r-- 1.4 KB
add-interactive.c -rw-r--r-- 30.6 KB
add-interactive.h -rw-r--r-- 965 bytes
add-patch.c -rw-r--r-- 50.6 KB
advice.c -rw-r--r-- 8.6 KB
advice.h -rw-r--r-- 2.2 KB
alias.c -rw-r--r-- 2.3 KB
alias.h -rw-r--r-- 310 bytes
alloc.c -rw-r--r-- 2.7 KB
alloc.h -rw-r--r-- 486 bytes
apply.c -rw-r--r-- 133.7 KB
apply.h -rw-r--r-- 5.2 KB
archive-tar.c -rw-r--r-- 13.8 KB
archive-zip.c -rw-r--r-- 17.1 KB
archive.c -rw-r--r-- 19.1 KB
archive.h -rw-r--r-- 1.5 KB
attr.c -rw-r--r-- 28.7 KB
attr.h -rw-r--r-- 6.6 KB
banned.h -rw-r--r-- 977 bytes
base85.c -rw-r--r-- 2.8 KB
bisect.c -rw-r--r-- 30.3 KB
bisect.h -rw-r--r-- 2.4 KB
blame.c -rw-r--r-- 83.0 KB
blame.h -rw-r--r-- 5.6 KB
blob.c -rw-r--r-- 417 bytes
blob.h -rw-r--r-- 654 bytes
bloom.c -rw-r--r-- 8.0 KB
bloom.h -rw-r--r-- 3.0 KB
branch.c -rw-r--r-- 24.6 KB
branch.h -rw-r--r-- 5.5 KB
builtin.h -rw-r--r-- 12.5 KB
bulk-checkin.c -rw-r--r-- 10.3 KB
bulk-checkin.h -rw-r--r-- 1.1 KB
bundle-uri.c -rw-r--r-- 13.6 KB
bundle-uri.h -rw-r--r-- 2.4 KB
bundle.c -rw-r--r-- 17.0 KB
bundle.h -rw-r--r-- 1.9 KB
cache-tree.c -rw-r--r-- 24.4 KB
cache-tree.h -rw-r--r-- 2.2 KB
cache.h -rw-r--r-- 66.8 KB
cbtree.c -rw-r--r-- 3.4 KB
cbtree.h -rw-r--r-- 1.5 KB
chdir-notify.c -rw-r--r-- 1.8 KB
chdir-notify.h -rw-r--r-- 2.5 KB
check-builtins.sh -rwxr-xr-x 596 bytes
checkout.c -rw-r--r-- 1.9 KB
checkout.h -rw-r--r-- 369 bytes
chunk-format.c -rw-r--r-- 4.3 KB
chunk-format.h -rw-r--r-- 2.0 KB
color.c -rw-r--r-- 10.5 KB
color.h -rw-r--r-- 5.3 KB
column.c -rw-r--r-- 9.4 KB
column.h -rw-r--r-- 1.4 KB
combine-diff.c -rw-r--r-- 43.1 KB
command-list.txt -rw-r--r-- 12.9 KB
commit-graph.c -rw-r--r-- 69.4 KB
commit-graph.h -rw-r--r-- 6.2 KB
commit-reach.c -rw-r--r-- 23.8 KB
commit-reach.h -rw-r--r-- 3.8 KB
commit-slab-decl.h -rw-r--r-- 1.4 KB
commit-slab-impl.h -rw-r--r-- 3.1 KB
commit-slab.h -rw-r--r-- 2.5 KB
commit.c -rw-r--r-- 43.6 KB
commit.h -rw-r--r-- 14.2 KB
common-main.c -rw-r--r-- 2.1 KB
config.c -rw-r--r-- 93.8 KB
config.h -rw-r--r-- 22.5 KB
config.mak.dev -rw-r--r-- 3.4 KB
config.mak.in -rw-r--r-- 540 bytes
config.mak.uname -rw-r--r-- 25.4 KB
configure.ac -rw-r--r-- 37.3 KB
connect.c -rw-r--r-- 36.0 KB
connect.h -rw-r--r-- 1.2 KB
connected.c -rw-r--r-- 4.5 KB
connected.h -rw-r--r-- 1.9 KB
convert.c -rw-r--r-- 49.4 KB
convert.h -rw-r--r-- 7.3 KB
copy.c -rw-r--r-- 1.3 KB
credential.c -rw-r--r-- 12.2 KB
credential.h -rw-r--r-- 6.4 KB
csum-file.c -rw-r--r-- 5.3 KB
csum-file.h -rw-r--r-- 1.9 KB
ctype.c -rw-r--r-- 2.6 KB
daemon.c -rw-r--r-- 34.5 KB
date.c -rw-r--r-- 31.7 KB
date.h -rw-r--r-- 2.2 KB
decorate.c -rw-r--r-- 1.7 KB
decorate.h -rw-r--r-- 1.4 KB
delta-islands.c -rw-r--r-- 12.3 KB
delta-islands.h -rw-r--r-- 572 bytes
delta.h -rw-r--r-- 3.4 KB
detect-compiler -rwxr-xr-x 997 bytes
diagnose.c -rw-r--r-- 7.5 KB
diagnose.h -rw-r--r-- 348 bytes
diff-delta.c -rw-r--r-- 15.5 KB
diff-lib.c -rw-r--r-- 18.9 KB
diff-merges.c -rw-r--r-- 4.3 KB
diff-merges.h -rw-r--r-- 687 bytes
diff-no-index.c -rw-r--r-- 7.3 KB
diff.c -rw-r--r-- 197.3 KB
diff.h -rw-r--r-- 21.5 KB
diffcore-break.c -rw-r--r-- 9.3 KB
diffcore-delta.c -rw-r--r-- 5.5 KB
diffcore-order.c -rw-r--r-- 2.4 KB
diffcore-pickaxe.c -rw-r--r-- 7.1 KB
diffcore-rename.c -rw-r--r-- 51.2 KB
diffcore-rotate.c -rw-r--r-- 1.0 KB
diffcore.h -rw-r--r-- 7.6 KB
dir-iterator.c -rw-r--r-- 5.9 KB
dir-iterator.h -rw-r--r-- 4.5 KB
dir.c -rw-r--r-- 107.3 KB
dir.h -rw-r--r-- 19.5 KB
editor.c -rw-r--r-- 3.0 KB
entry.c -rw-r--r-- 14.9 KB
entry.h -rw-r--r-- 1.8 KB
environment.c -rw-r--r-- 11.1 KB
environment.h -rw-r--r-- 246 bytes
exec-cmd.c -rw-r--r-- 8.0 KB
exec-cmd.h -rw-r--r-- 475 bytes
fetch-negotiator.c -rw-r--r-- 712 bytes
fetch-negotiator.h -rw-r--r-- 1.8 KB
fetch-pack.c -rw-r--r-- 62.1 KB
fetch-pack.h -rw-r--r-- 3.1 KB
fmt-merge-msg.c -rw-r--r-- 18.1 KB
fmt-merge-msg.h -rw-r--r-- 444 bytes
fsck.c -rw-r--r-- 34.8 KB
fsck.h -rw-r--r-- 7.2 KB
fsmonitor--daemon.h -rw-r--r-- 5.7 KB
fsmonitor-ipc.c -rw-r--r-- 3.9 KB
fsmonitor-ipc.h -rw-r--r-- 1.3 KB
fsmonitor-path-utils.h -rw-r--r-- 1.4 KB
fsmonitor-settings.c -rw-r--r-- 7.4 KB
fsmonitor-settings.h -rw-r--r-- 1.8 KB
fsmonitor.c -rw-r--r-- 18.1 KB
fsmonitor.h -rw-r--r-- 3.7 KB
generate-cmdlist.sh -rwxr-xr-x 1.7 KB
generate-configlist.sh -rwxr-xr-x 370 bytes
generate-hooklist.sh -rwxr-xr-x 299 bytes
gettext.c -rw-r--r-- 3.2 KB
gettext.h -rw-r--r-- 1.4 KB
git-add--interactive.perl -rwxr-xr-x 46.6 KB
git-archimport.perl -rwxr-xr-x 36.1 KB
git-bisect.sh -rwxr-xr-x 1.6 KB
git-compat-util.h -rw-r--r-- 43.8 KB
git-curl-compat.h -rw-r--r-- 4.1 KB
git-cvsexportcommit.perl -rwxr-xr-x 12.8 KB
git-cvsimport.perl -rwxr-xr-x 31.3 KB
git-cvsserver.perl -rwxr-xr-x 159.9 KB
git-difftool--helper.sh -rwxr-xr-x 2.4 KB
git-filter-branch.sh -rwxr-xr-x 15.5 KB
git-instaweb.sh -rwxr-xr-x 21.6 KB
git-merge-octopus.sh -rwxr-xr-x 2.4 KB
git-merge-one-file.sh -rwxr-xr-x 3.6 KB
git-merge-resolve.sh -rwxr-xr-x 1.2 KB
git-mergetool--lib.sh -rw-r--r-- 9.7 KB
git-mergetool.sh -rwxr-xr-x 11.3 KB
git-p4.py -rwxr-xr-x 168.5 KB
git-quiltimport.sh -rwxr-xr-x 3.6 KB
git-request-pull.sh -rwxr-xr-x 4.0 KB
git-send-email.perl -rwxr-xr-x 61.3 KB
git-sh-i18n.sh -rw-r--r-- 1.7 KB
git-sh-setup.sh -rw-r--r-- 8.2 KB
git-submodule.sh -rwxr-xr-x 10.2 KB
git-svn.perl -rwxr-xr-x 63.1 KB
git-web--browse.sh -rwxr-xr-x 4.3 KB
git.c -rw-r--r-- 27.7 KB
git.rc -rw-r--r-- 635 bytes
gpg-interface.c -rw-r--r-- 28.6 KB
gpg-interface.h -rw-r--r-- 2.5 KB
graph.c -rw-r--r-- 40.1 KB
graph.h -rw-r--r-- 8.7 KB
grep.c -rw-r--r-- 47.3 KB
grep.h -rw-r--r-- 6.4 KB
hash-lookup.c -rw-r--r-- 3.2 KB
hash-lookup.h -rw-r--r-- 1.3 KB
hash.h -rw-r--r-- 9.3 KB
hashmap.c -rw-r--r-- 8.4 KB
hashmap.h -rw-r--r-- 19.8 KB
help.c -rw-r--r-- 20.5 KB
help.h -rw-r--r-- 3.3 KB
hex.c -rw-r--r-- 4.4 KB
hook.c -rw-r--r-- 3.7 KB
hook.h -rw-r--r-- 2.3 KB
http-backend.c -rw-r--r-- 19.0 KB
http-fetch.c -rw-r--r-- 4.3 KB
http-push.c -rw-r--r-- 49.8 KB
http-walker.c -rw-r--r-- 14.9 KB
http.c -rw-r--r-- 67.5 KB
http.h -rw-r--r-- 7.1 KB
ident.c -rw-r--r-- 17.6 KB
imap-send.c -rw-r--r-- 36.7 KB
iterator.h -rw-r--r-- 2.1 KB
json-writer.c -rw-r--r-- 8.5 KB
json-writer.h -rw-r--r-- 4.2 KB
khash.h -rw-r--r-- 12.8 KB
kwset.c -rw-r--r-- 20.6 KB
kwset.h -rw-r--r-- 2.5 KB
levenshtein.c -rw-r--r-- 2.5 KB
levenshtein.h -rw-r--r-- 203 bytes
line-log.c -rw-r--r-- 32.9 KB
line-log.h -rw-r--r-- 1.7 KB
line-range.c -rw-r--r-- 6.6 KB
line-range.h -rw-r--r-- 1.4 KB
linear-assignment.c -rw-r--r-- 4.1 KB
linear-assignment.h -rw-r--r-- 736 bytes
list-objects-filter-options.c -rw-r--r-- 10.9 KB
list-objects-filter-options.h -rw-r--r-- 5.7 KB
list-objects-filter.c -rw-r--r-- 22.0 KB
list-objects-filter.h -rw-r--r-- 3.2 KB
list-objects.c -rw-r--r-- 10.8 KB
list-objects.h -rw-r--r-- 860 bytes
list.h -rw-r--r-- 5.6 KB
ll-merge.c -rw-r--r-- 11.2 KB
ll-merge.h -rw-r--r-- 3.2 KB
lockfile.c -rw-r--r-- 5.6 KB
lockfile.h -rw-r--r-- 11.3 KB
log-tree.c -rw-r--r-- 31.6 KB
log-tree.h -rw-r--r-- 1.4 KB
ls-refs.c -rw-r--r-- 5.2 KB
ls-refs.h -rw-r--r-- 235 bytes
mailinfo.c -rw-r--r-- 28.6 KB
mailinfo.h -rw-r--r-- 1.3 KB
mailmap.c -rw-r--r-- 8.6 KB
mailmap.h -rw-r--r-- 272 bytes
match-trees.c -rw-r--r-- 8.5 KB
mem-pool.c -rw-r--r-- 4.2 KB
mem-pool.h -rw-r--r-- 1.6 KB
merge-blobs.c -rw-r--r-- 2.2 KB
merge-blobs.h -rw-r--r-- 232 bytes
merge-ort-wrappers.c -rw-r--r-- 1.4 KB
merge-ort-wrappers.h -rw-r--r-- 638 bytes
merge-ort.c -rw-r--r-- 163.8 KB
merge-ort.h -rw-r--r-- 3.6 KB
merge-recursive.c -rw-r--r-- 118.6 KB
merge-recursive.h -rw-r--r-- 3.7 KB
merge.c -rw-r--r-- 2.7 KB
mergesort.h -rw-r--r-- 2.9 KB
midx.c -rw-r--r-- 53.5 KB
midx.h -rw-r--r-- 2.9 KB
name-hash.c -rw-r--r-- 19.1 KB
notes-cache.c -rw-r--r-- 2.3 KB
notes-cache.h -rw-r--r-- 541 bytes
notes-merge.c -rw-r--r-- 22.7 KB
notes-merge.h -rw-r--r-- 2.9 KB
notes-utils.c -rw-r--r-- 5.0 KB
notes-utils.h -rw-r--r-- 1.5 KB
notes.c -rw-r--r-- 37.5 KB
notes.h -rw-r--r-- 12.6 KB
object-file.c -rw-r--r-- 70.3 KB
object-name.c -rw-r--r-- 51.2 KB
object-store.h -rw-r--r-- 17.2 KB
object.c -rw-r--r-- 14.4 KB
object.h -rw-r--r-- 7.3 KB
oid-array.c -rw-r--r-- 1.8 KB
oid-array.h -rw-r--r-- 4.2 KB
oidmap.c -rw-r--r-- 1.5 KB
oidmap.h -rw-r--r-- 2.3 KB
oidset.c -rw-r--r-- 1.8 KB
oidset.h -rw-r--r-- 3.1 KB
oidtree.c -rw-r--r-- 2.5 KB
oidtree.h -rw-r--r-- 584 bytes
pack-bitmap-write.c -rw-r--r-- 19.9 KB
pack-bitmap.c -rw-r--r-- 59.2 KB
pack-bitmap.h -rw-r--r-- 3.7 KB
pack-check.c -rw-r--r-- 5.3 KB
pack-mtimes.c -rw-r--r-- 2.9 KB
pack-mtimes.h -rw-r--r-- 658 bytes
pack-objects.c -rw-r--r-- 5.1 KB
pack-objects.h -rw-r--r-- 8.8 KB
pack-revindex.c -rw-r--r-- 12.9 KB
pack-revindex.h -rw-r--r-- 4.2 KB
pack-write.c -rw-r--r-- 15.8 KB
pack.h -rw-r--r-- 4.0 KB
packfile.c -rw-r--r-- 58.2 KB
packfile.h -rw-r--r-- 7.0 KB
pager.c -rw-r--r-- 5.3 KB
parallel-checkout.c -rw-r--r-- 18.4 KB
parallel-checkout.h -rw-r--r-- 3.3 KB
parse-options-cb.c -rw-r--r-- 6.9 KB
parse-options.c -rw-r--r-- 32.5 KB
parse-options.h -rw-r--r-- 14.9 KB
patch-delta.c -rw-r--r-- 2.4 KB
patch-ids.c -rw-r--r-- 3.6 KB
patch-ids.h -rw-r--r-- 1.2 KB
path.c -rw-r--r-- 38.9 KB
path.h -rw-r--r-- 5.5 KB
pathspec.c -rw-r--r-- 21.4 KB
pathspec.h -rw-r--r-- 5.9 KB
pkt-line.c -rw-r--r-- 15.6 KB
pkt-line.h -rw-r--r-- 8.9 KB
preload-index.c -rw-r--r-- 4.2 KB
pretty.c -rw-r--r-- 55.7 KB
pretty.h -rw-r--r-- 4.8 KB
prio-queue.c -rw-r--r-- 2.0 KB
prio-queue.h -rw-r--r-- 1.6 KB
progress.c -rw-r--r-- 9.1 KB
progress.h -rw-r--r-- 852 bytes
promisor-remote.c -rw-r--r-- 6.7 KB
promisor-remote.h -rw-r--r-- 1.3 KB
prompt.c -rw-r--r-- 1.6 KB
prompt.h -rw-r--r-- 223 bytes
protocol-caps.c -rw-r--r-- 2.5 KB
protocol-caps.h -rw-r--r-- 194 bytes
protocol.c -rw-r--r-- 2.5 KB
protocol.h -rw-r--r-- 1.1 KB
prune-packed.c -rw-r--r-- 959 bytes
prune-packed.h -rw-r--r-- 152 bytes
quote.c -rw-r--r-- 12.5 KB
quote.h -rw-r--r-- 3.9 KB
range-diff.c -rw-r--r-- 15.7 KB
range-diff.h -rw-r--r-- 711 bytes
reachable.c -rw-r--r-- 6.5 KB
reachable.h -rw-r--r-- 520 bytes
read-cache.c -rw-r--r-- 103.7 KB
rebase-interactive.c -rw-r--r-- 7.6 KB
rebase-interactive.h -rw-r--r-- 597 bytes
rebase.c -rw-r--r-- 1.1 KB
rebase.h -rw-r--r-- 226 bytes
ref-filter.c -rw-r--r-- 75.9 KB
ref-filter.h -rw-r--r-- 4.4 KB
reflog-walk.c -rw-r--r-- 8.5 KB
reflog-walk.h -rw-r--r-- 965 bytes
reflog.c -rw-r--r-- 10.9 KB
reflog.h -rw-r--r-- 1.3 KB
refs.c -rw-r--r-- 64.9 KB
refs.h -rw-r--r-- 35.9 KB
refspec.c -rw-r--r-- 6.4 KB
refspec.h -rw-r--r-- 2.3 KB
remote-curl.c -rw-r--r-- 41.7 KB
remote.c -rw-r--r-- 73.6 KB
remote.h -rw-r--r-- 13.1 KB
replace-object.c -rw-r--r-- 2.2 KB
replace-object.h -rw-r--r-- 1.4 KB
repo-settings.c -rw-r--r-- 3.8 KB
repository.c -rw-r--r-- 8.1 KB
repository.h -rw-r--r-- 6.4 KB
rerere.c -rw-r--r-- 31.9 KB
rerere.h -rw-r--r-- 1.4 KB
reset.c -rw-r--r-- 5.2 KB
reset.h -rw-r--r-- 1.5 KB
resolve-undo.c -rw-r--r-- 4.5 KB
resolve-undo.h -rw-r--r-- 581 bytes
revision.c -rw-r--r-- 120.6 KB
revision.h -rw-r--r-- 15.3 KB
run-command.c -rw-r--r-- 42.9 KB
run-command.h -rw-r--r-- 18.3 KB
scalar.c -rw-r--r-- 22.6 KB
send-pack.c -rw-r--r-- 19.6 KB
send-pack.h -rw-r--r-- 914 bytes
sequencer.c -rw-r--r-- 175.8 KB
sequencer.h -rw-r--r-- 8.2 KB
serve.c -rw-r--r-- 7.8 KB
serve.h -rw-r--r-- 150 bytes
server-info.c -rw-r--r-- 7.5 KB
setup.c -rw-r--r-- 46.4 KB
sh-i18n--envsubst.c -rw-r--r-- 10.2 KB
sha1dc_git.c -rw-r--r-- 889 bytes
sha1dc_git.h -rw-r--r-- 690 bytes
shallow.c -rw-r--r-- 22.1 KB
shallow.h -rw-r--r-- 2.6 KB
shared.mak -rw-r--r-- 3.3 KB
shell.c -rw-r--r-- 5.4 KB
shortlog.h -rw-r--r-- 788 bytes
sideband.c -rw-r--r-- 6.6 KB
sideband.h -rw-r--r-- 1.0 KB
sigchain.c -rw-r--r-- 1.1 KB
sigchain.h -rw-r--r-- 1.7 KB
simple-ipc.h -rw-r--r-- 6.7 KB
sparse-index.c -rw-r--r-- 15.4 KB
sparse-index.h -rw-r--r-- 1.5 KB
split-index.c -rw-r--r-- 13.7 KB
split-index.h -rw-r--r-- 1.2 KB
stable-qsort.c -rw-r--r-- 986 bytes
strbuf.c -rw-r--r-- 25.9 KB
strbuf.h -rw-r--r-- 24.0 KB
streaming.c -rw-r--r-- 12.4 KB
streaming.h -rw-r--r-- 513 bytes
string-list.c -rw-r--r-- 7.7 KB
string-list.h -rw-r--r-- 10.1 KB
strmap.c -rw-r--r-- 4.3 KB
strmap.h -rw-r--r-- 6.8 KB
strvec.c -rw-r--r-- 2.0 KB
strvec.h -rw-r--r-- 2.8 KB
sub-process.c -rw-r--r-- 5.5 KB
sub-process.h -rw-r--r-- 3.1 KB
submodule-config.c -rw-r--r-- 23.1 KB
submodule-config.h -rw-r--r-- 4.4 KB
submodule.c -rw-r--r-- 68.0 KB
submodule.h -rw-r--r-- 6.1 KB
symlinks.c -rw-r--r-- 10.0 KB
tag.c -rw-r--r-- 5.6 KB
tag.h -rw-r--r-- 727 bytes
tar.h -rw-r--r-- 693 bytes
tempfile.c -rw-r--r-- 9.2 KB
tempfile.h -rw-r--r-- 9.9 KB
thread-utils.c -rw-r--r-- 2.6 KB
thread-utils.h -rw-r--r-- 1.4 KB
tmp-objdir.c -rw-r--r-- 7.0 KB
tmp-objdir.h -rw-r--r-- 2.6 KB
trace.c -rw-r--r-- 10.4 KB
trace.h -rw-r--r-- 8.1 KB
trace2.c -rw-r--r-- 21.2 KB
trace2.h -rw-r--r-- 21.3 KB
trailer.c -rw-r--r-- 31.1 KB
trailer.h -rw-r--r-- 3.8 KB
transport-helper.c -rw-r--r-- 42.0 KB
transport-internal.h -rw-r--r-- 2.2 KB
transport.c -rw-r--r-- 41.5 KB
transport.h -rw-r--r-- 9.8 KB
tree-diff.c -rw-r--r-- 18.0 KB
tree-walk.c -rw-r--r-- 32.4 KB
tree-walk.h -rw-r--r-- 6.9 KB
tree.c -rw-r--r-- 3.7 KB
tree.h -rw-r--r-- 1.2 KB
unicode-width.h -rw-r--r-- 9.6 KB
unimplemented.sh -rw-r--r-- 101 bytes
unix-socket.c -rw-r--r-- 2.7 KB
unix-socket.h -rw-r--r-- 370 bytes
unix-stream-server.c -rw-r--r-- 2.9 KB
unix-stream-server.h -rw-r--r-- 760 bytes
unpack-trees.c -rw-r--r-- 82.5 KB
unpack-trees.h -rw-r--r-- 3.4 KB
upload-pack.c -rw-r--r-- 47.0 KB
upload-pack.h -rw-r--r-- 371 bytes
url.c -rw-r--r-- 2.5 KB
url.h -rw-r--r-- 697 bytes
urlmatch.c -rw-r--r-- 18.5 KB
urlmatch.h -rw-r--r-- 2.8 KB
usage.c -rw-r--r-- 7.4 KB
userdiff.c -rw-r--r-- 15.2 KB
userdiff.h -rw-r--r-- 1.3 KB
utf8.c -rw-r--r-- 20.1 KB
utf8.h -rw-r--r-- 3.6 KB
varint.c -rw-r--r-- 660 bytes
varint.h -rw-r--r-- 154 bytes
version.c -rw-r--r-- 718 bytes
version.h -rw-r--r-- 230 bytes
versioncmp.c -rw-r--r-- 5.2 KB
walker.c -rw-r--r-- 7.7 KB
walker.h -rw-r--r-- 1.1 KB
wildmatch.c -rw-r--r-- 7.8 KB
wildmatch.h -rw-r--r-- 264 bytes
worktree.c -rw-r--r-- 20.8 KB
worktree.h -rw-r--r-- 6.3 KB
wrap-for-bin.sh -rw-r--r-- 946 bytes
wrapper.c -rw-r--r-- 17.1 KB
write-or-die.c -rw-r--r-- 2.4 KB
ws.c -rw-r--r-- 9.3 KB
wt-status.c -rw-r--r-- 72.7 KB
wt-status.h -rw-r--r-- 4.8 KB
xdiff-interface.c -rw-r--r-- 7.6 KB
xdiff-interface.h -rw-r--r-- 2.7 KB
zlib.c -rw-r--r-- 6.1 KB

README.md

back to top