https://github.com/git/git
Revision 82ba1191ffeaf1482fce9fd9e72334c8dbc3bbbe authored by Johannes Schindelin on 29 July 2022, 10:05:52 UTC, committed by Junio C Hamano on 29 July 2022, 18:24:04 UTC
Files' attributes can indicate more than just whether they are files or
directories. It was reported in Git for Windows that on certain network
shares, this led to a nasty problem trying to create tags:

	$ git tag -a -m "automatic tag creation"  test_dir/test_tag
	fatal: cannot lock ref 'refs/tags/test_dir/test_tag': unable to resolve reference 'refs/tags/test_dir/test_tag': Not a directory

Note: This does not necessarily happen with all types of network shares.
One setup where it _did_ happen is a Windows Server 2019 VM, and as
hinted in

	http://woshub.com/slow-network-shared-folder-refresh-windows-server/

in the indicated instance the following commands worked around the bug:

	Set-SmbClientConfiguration -DirectoryCacheLifetime 0
	Set-SmbClientConfiguration -FileInfoCacheLifetime 0
	Set-SmbClientConfiguration -FileNotFoundCacheLifetime 0

This would impact performance negatively, though, as it essentially
turns off all caching, therefore we do not want to require users to do
that just to be able to use Git on Windows.

The underlying bug is in the code added in 4b0abd5c695 (mingw: let
lstat() fail with errno == ENOTDIR when appropriate, 2016-01-26) that
emulates the POSIX behavior where `lstat()` should return `ENOENT` if
the file or directory simply does not exist but could be created, and
`ENOTDIR` if there is no file or directory nor could there be because a
leading path already exists and is not a directory.

In that code, the return value of `GetFileAttributesW()` is interpreted
as an enum value, not as a bit field, so that a perfectly fine leading
directory can be misdetected as "not a directory".

As a consequence, the `read_refs_internal()` function would return
`ENOTDIR`, suggesting not only that the tag in the `git tag` invocation
above does not exist, but that it cannot even be created.

Let's fix the code so that it interprets the return value of the
`GetFileAttributesW()` call correctly.

This fixes https://github.com/git-for-windows/git/issues/3727

Reported-by: Pierre Garnier <pgarnier@mega.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent fd59c5b
History
Tip revision: 82ba1191ffeaf1482fce9fd9e72334c8dbc3bbbe authored by Johannes Schindelin on 29 July 2022, 10:05:52 UTC
lstat(mingw): correctly detect ENOTDIR scenarios
Tip revision: 82ba119
File Mode Size
.github
Documentation
block-sha1
builtin
ci
compat
contrib
ewah
git-gui
gitk-git
gitweb
mergetools
negotiator
perl
po
ppc
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.7 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-- 10.0 KB
LGPL-2.1 -rw-r--r-- 26.2 KB
Makefile -rw-r--r-- 106.0 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.5 KB
add-interactive.h -rw-r--r-- 965 bytes
add-patch.c -rw-r--r-- 50.2 KB
advice.c -rw-r--r-- 7.9 KB
advice.h -rw-r--r-- 2.2 KB
alias.c -rw-r--r-- 2.1 KB
alias.h -rw-r--r-- 310 bytes
alloc.c -rw-r--r-- 3.2 KB
alloc.h -rw-r--r-- 527 bytes
apply.c -rw-r--r-- 131.7 KB
apply.h -rw-r--r-- 5.2 KB
archive-tar.c -rw-r--r-- 12.3 KB
archive-zip.c -rw-r--r-- 17.1 KB
archive.c -rw-r--r-- 17.9 KB
archive.h -rw-r--r-- 1.5 KB
attr.c -rw-r--r-- 28.9 KB
attr.h -rw-r--r-- 6.3 KB
banned.h -rw-r--r-- 977 bytes
base85.c -rw-r--r-- 2.8 KB
bisect.c -rw-r--r-- 30.0 KB
bisect.h -rw-r--r-- 2.3 KB
blame.c -rw-r--r-- 83.3 KB
blame.h -rw-r--r-- 5.6 KB
blob.c -rw-r--r-- 461 bytes
blob.h -rw-r--r-- 688 bytes
bloom.c -rw-r--r-- 8.0 KB
bloom.h -rw-r--r-- 3.0 KB
branch.c -rw-r--r-- 22.0 KB
branch.h -rw-r--r-- 5.3 KB
builtin.h -rw-r--r-- 12.4 KB
bulk-checkin.c -rw-r--r-- 7.8 KB
bulk-checkin.h -rw-r--r-- 323 bytes
bundle.c -rw-r--r-- 16.7 KB
bundle.h -rw-r--r-- 1.5 KB
cache-tree.c -rw-r--r-- 24.4 KB
cache-tree.h -rw-r--r-- 2.2 KB
cache.h -rw-r--r-- 67.1 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.1 KB
chunk-format.h -rw-r--r-- 1.9 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-- 42.9 KB
command-list.txt -rw-r--r-- 11.6 KB
commit-graph.c -rw-r--r-- 69.4 KB
commit-graph.h -rw-r--r-- 5.4 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.2 KB
commit.h -rw-r--r-- 13.6 KB
common-main.c -rw-r--r-- 1.6 KB
config.c -rw-r--r-- 92.1 KB
config.h -rw-r--r-- 21.9 KB
config.mak.dev -rw-r--r-- 2.3 KB
config.mak.in -rw-r--r-- 540 bytes
config.mak.uname -rw-r--r-- 25.3 KB
configure.ac -rw-r--r-- 37.6 KB
connect.c -rw-r--r-- 35.9 KB
connect.h -rw-r--r-- 1.2 KB
connected.c -rw-r--r-- 4.4 KB
connected.h -rw-r--r-- 1.7 KB
convert.c -rw-r--r-- 49.4 KB
convert.h -rw-r--r-- 7.2 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.6 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-- 11.7 KB
delta-islands.h -rw-r--r-- 572 bytes
delta.h -rw-r--r-- 3.4 KB
detect-compiler -rwxr-xr-x 997 bytes
diff-delta.c -rw-r--r-- 15.5 KB
diff-lib.c -rw-r--r-- 18.7 KB
diff-merges.c -rw-r--r-- 4.2 KB
diff-merges.h -rw-r--r-- 687 bytes
diff-no-index.c -rw-r--r-- 7.2 KB
diff.c -rw-r--r-- 195.6 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.5 KB
dir-iterator.c -rw-r--r-- 5.8 KB
dir-iterator.h -rw-r--r-- 4.3 KB
dir.c -rw-r--r-- 103.7 KB
dir.h -rw-r--r-- 17.5 KB
editor.c -rw-r--r-- 3.0 KB
entry.c -rw-r--r-- 14.7 KB
entry.h -rw-r--r-- 1.9 KB
environment.c -rw-r--r-- 11.0 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-- 59.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-- 33.9 KB
fsck.h -rw-r--r-- 6.7 KB
fsmonitor--daemon.h -rw-r--r-- 5.5 KB
fsmonitor-ipc.c -rw-r--r-- 3.8 KB
fsmonitor-ipc.h -rw-r--r-- 1.3 KB
fsmonitor-settings.c -rw-r--r-- 2.5 KB
fsmonitor-settings.h -rw-r--r-- 615 bytes
fsmonitor.c -rw-r--r-- 17.0 KB
fsmonitor.h -rw-r--r-- 3.2 KB
fuzz-commit-graph.c -rw-r--r-- 465 bytes
fuzz-pack-headers.c -rw-r--r-- 309 bytes
fuzz-pack-idx.c -rw-r--r-- 277 bytes
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.3 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 2.1 KB
git-compat-util.h -rw-r--r-- 41.2 KB
git-curl-compat.h -rw-r--r-- 3.6 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.8 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 944 bytes
git-mergetool--lib.sh -rw-r--r-- 9.5 KB
git-mergetool.sh -rwxr-xr-x 11.3 KB
git-p4.py -rwxr-xr-x 160.7 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.5 KB
git-submodule.sh -rwxr-xr-x 11.0 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.6 KB
git.rc -rw-r--r-- 635 bytes
gpg-interface.c -rw-r--r-- 28.0 KB
gpg-interface.h -rw-r--r-- 2.2 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-- 19.7 KB
help.h -rw-r--r-- 3.2 KB
hex.c -rw-r--r-- 4.4 KB
hook.c -rw-r--r-- 3.8 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-- 65.2 KB
http.h -rw-r--r-- 6.7 KB
ident.c -rw-r--r-- 15.9 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-- 33.0 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-- 11.1 KB
list-objects-filter-options.h -rw-r--r-- 5.6 KB
list-objects-filter.c -rw-r--r-- 21.8 KB
list-objects-filter.h -rw-r--r-- 3.2 KB
list-objects.c -rw-r--r-- 11.9 KB
list-objects.h -rw-r--r-- 860 bytes
list.h -rw-r--r-- 5.6 KB
ll-merge.c -rw-r--r-- 11.1 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-- 4.9 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.7 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-- 151.1 KB
merge-ort.h -rw-r--r-- 2.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.c -rw-r--r-- 2.0 KB
mergesort.h -rw-r--r-- 574 bytes
midx.c -rw-r--r-- 51.1 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.4 KB
notes.h -rw-r--r-- 12.6 KB
object-file.c -rw-r--r-- 65.8 KB
object-name.c -rw-r--r-- 50.7 KB
object-store.h -rw-r--r-- 16.9 KB
object.c -rw-r--r-- 14.1 KB
object.h -rw-r--r-- 7.1 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-- 17.1 KB
pack-bitmap.c -rw-r--r-- 50.6 KB
pack-bitmap.h -rw-r--r-- 3.4 KB
pack-check.c -rw-r--r-- 5.3 KB
pack-objects.c -rw-r--r-- 4.9 KB
pack-objects.h -rw-r--r-- 8.3 KB
pack-revindex.c -rw-r--r-- 12.9 KB
pack-revindex.h -rw-r--r-- 4.3 KB
pack-write.c -rw-r--r-- 14.0 KB
pack.h -rw-r--r-- 3.9 KB
packfile.c -rw-r--r-- 57.9 KB
packfile.h -rw-r--r-- 7.0 KB
pager.c -rw-r--r-- 5.3 KB
parallel-checkout.c -rw-r--r-- 18.2 KB
parallel-checkout.h -rw-r--r-- 3.2 KB
parse-options-cb.c -rw-r--r-- 6.9 KB
parse-options.c -rw-r--r-- 29.1 KB
parse-options.h -rw-r--r-- 14.2 KB
patch-delta.c -rw-r--r-- 2.4 KB
patch-ids.c -rw-r--r-- 3.7 KB
patch-ids.h -rw-r--r-- 1.2 KB
path.c -rw-r--r-- 38.7 KB
path.h -rw-r--r-- 5.5 KB
pathspec.c -rw-r--r-- 18.7 KB
pathspec.h -rw-r--r-- 5.4 KB
pkt-line.c -rw-r--r-- 15.5 KB
pkt-line.h -rw-r--r-- 8.7 KB
preload-index.c -rw-r--r-- 4.0 KB
pretty.c -rw-r--r-- 54.6 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.3 KB
promisor-remote.h -rw-r--r-- 1.4 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.6 KB
range-diff.h -rw-r--r-- 711 bytes
reachable.c -rw-r--r-- 5.4 KB
reachable.h -rw-r--r-- 304 bytes
read-cache.c -rw-r--r-- 102.3 KB
rebase-interactive.c -rw-r--r-- 7.2 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.7 KB
ref-filter.h -rw-r--r-- 4.4 KB
reflog-walk.c -rw-r--r-- 8.1 KB
reflog-walk.h -rw-r--r-- 903 bytes
reflog.c -rw-r--r-- 10.9 KB
reflog.h -rw-r--r-- 1.3 KB
refs.c -rw-r--r-- 61.6 KB
refs.h -rw-r--r-- 33.9 KB
refspec.c -rw-r--r-- 6.4 KB
refspec.h -rw-r--r-- 2.4 KB
remote-curl.c -rw-r--r-- 40.4 KB
remote.c -rw-r--r-- 70.5 KB
remote.h -rw-r--r-- 11.4 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.5 KB
repository.c -rw-r--r-- 8.2 KB
repository.h -rw-r--r-- 6.3 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-- 116.5 KB
revision.h -rw-r--r-- 12.8 KB
run-command.c -rw-r--r-- 43.2 KB
run-command.h -rw-r--r-- 18.5 KB
send-pack.c -rw-r--r-- 19.4 KB
send-pack.h -rw-r--r-- 893 bytes
sequencer.c -rw-r--r-- 163.6 KB
sequencer.h -rw-r--r-- 7.4 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-- 44.0 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-- 618 bytes
shallow.c -rw-r--r-- 21.9 KB
shallow.h -rw-r--r-- 2.6 KB
shared.mak -rw-r--r-- 2.9 KB
shell.c -rw-r--r-- 4.5 KB
shortlog.h -rw-r--r-- 627 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-- 11.9 KB
sparse-index.h -rw-r--r-- 957 bytes
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.0 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.3 KB
submodule.h -rw-r--r-- 6.2 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-- 8.3 KB
tempfile.h -rw-r--r-- 9.4 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.9 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-- 18.3 KB
trace2.h -rw-r--r-- 18.6 KB
trailer.c -rw-r--r-- 31.1 KB
trailer.h -rw-r--r-- 3.8 KB
transport-helper.c -rw-r--r-- 41.9 KB
transport-internal.h -rw-r--r-- 2.2 KB
transport.c -rw-r--r-- 41.3 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.3 KB
tree-walk.h -rw-r--r-- 6.7 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-- 79.6 KB
unpack-trees.h -rw-r--r-- 3.4 KB
upload-pack.c -rw-r--r-- 46.4 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.0 KB
userdiff.c -rw-r--r-- 15.1 KB
userdiff.h -rw-r--r-- 1.3 KB
utf8.c -rw-r--r-- 20.0 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-- 21.7 KB
worktree.h -rw-r--r-- 6.7 KB
wrap-for-bin.sh -rw-r--r-- 946 bytes
wrapper.c -rw-r--r-- 17.8 KB
write-or-die.c -rw-r--r-- 2.3 KB
ws.c -rw-r--r-- 9.4 KB
wt-status.c -rw-r--r-- 72.5 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