https://github.com/git/git
Revision 150e6b0aedf57d224c3c49038c306477fa159886 authored by Patrick Steinhardt on 15 April 2024, 11:30:26 UTC, committed by Johannes Schindelin on 16 April 2024, 22:01:25 UTC
When a user performs a local clone without `--no-local`, then we end up
copying the source repository into the target repository directly. To
optimize this even further, we try to hardlink files into place instead
of copying data over, which helps both disk usage and speed.

There is an important edge case in this context though, namely when we
try to hardlink symlinks from the source repository into the target
repository. Depending on both platform and filesystem the resulting
behaviour here can be different:

  - On macOS and NetBSD, calling link(3P) with a symlink target creates
    a hardlink to the file pointed to by the symlink.

  - On Linux, calling link(3P) instead creates a hardlink to the symlink
    itself.

To unify this behaviour, 36596fd2df (clone: better handle symlinked
files at .git/objects/, 2019-07-10) introduced logic to resolve symlinks
before we try to link(3P) files. Consequently, the new behaviour was to
always create a hard link to the target of the symlink on all platforms.

Eventually though, we figured out that following symlinks like this can
cause havoc when performing a local clone of a malicious repository,
which resulted in CVE-2022-39253. This issue was fixed via 6f054f9fb3
(builtin/clone.c: disallow `--local` clones with symlinks, 2022-07-28),
by refusing symlinks in the source repository.

But even though we now shouldn't ever link symlinks anymore, the code
that resolves symlinks still exists. In the best case the code does not
end up doing anything because there are no symlinks anymore. In the
worst case though this can be abused by an adversary that rewrites the
source file after it has been checked not to be a symlink such that it
actually is a symlink when we call link(3P). Thus, it is still possible
to recreate CVE-2022-39253 due to this time-of-check-time-of-use bug.

Remove the call to `realpath()`. This doesn't yet address the actual
vulnerability, which will be handled in a subsequent commit.

Reported-by: Apple Product Security <product-security@apple.com>
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent 9e06401
History
Tip revision: 150e6b0aedf57d224c3c49038c306477fa159886 authored by Patrick Steinhardt on 15 April 2024, 11:30:26 UTC
builtin/clone: stop resolving symlinks when copying files
Tip revision: 150e6b0
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.3 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.8 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.4 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-- 104.4 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-- 45.8 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-- 67.5 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