Revision a3f7b926a926aaff563ca93127a6436e43ab5de9 authored by Elijah Newren on 05 June 2020, 06:41:24 UTC, committed by Elijah Newren on 05 June 2020, 16:54:08 UTC
do_match_pathspec() started life as match_pathspec_depth_1() and for
correctness was only supposed to be called from match_pathspec_depth().
match_pathspec_depth() was later renamed to match_pathspec(), so the
invariant we expect today is that do_match_pathspec() has no direct
callers outside of match_pathspec().

Unfortunately, this intention was lost with the renames of the two
functions, and additional calls to do_match_pathspec() were added in
commits 75a6315f74 ("ls-files: add pathspec matching for submodules",
2016-10-07) and 89a1f4aaf7 ("dir: if our pathspec might match files
under a dir, recurse into it", 2019-09-17).  Of course,
do_match_pathspec() had an important advantge over match_pathspec() --
match_pathspec() would hardcode flags to one of two values, and these
new callers needed to pass some other value for flags.  Also, although
calling do_match_pathspec() directly was incorrect, there likely wasn't
any difference in the observable end output, because the bug just meant
that fill_diretory() would recurse into unneeded directories.  Since
subsequent does-this-path-match checks on individual paths under the
directory would cause those extra paths to be filtered out, the only
difference from using the wrong function was unnecessary computation.

The second of those bad calls to do_match_pathspec() was involved -- via
either direct movement or via copying+editing -- into a number of later
refactors.  See commits 777b420347 ("dir: synchronize
treat_leading_path() and read_directory_recursive()", 2019-12-19),
8d92fb2927 ("dir: replace exponential algorithm with a linear one",
2020-04-01), and 95c11ecc73 ("Fix error-prone fill_directory() API; make
it only return matches", 2020-04-01).  The last of those introduced the
usage of do_match_pathspec() on an individual file, and thus resulted in
individual paths being returned that shouldn't be.

The problem with calling do_match_pathspec() instead of match_pathspec()
is that any negated patterns such as ':!unwanted_path` will be ignored.
Add a new match_pathspec_with_flags() function to fulfill the needs of
specifying special flags while still correctly checking negated
patterns, add a big comment above do_match_pathspec() to prevent others
from misusing it, and correct current callers of do_match_pathspec() to
instead use either match_pathspec() or match_pathspec_with_flags().

One final note is that DO_MATCH_LEADING_PATHSPEC needs special
consideration when working with DO_MATCH_EXCLUDE.  The point of
DO_MATCH_LEADING_PATHSPEC is that if we have a pathspec like
   */Makefile
and we are checking a directory path like
   src/module/component
that we want to consider it a match so that we recurse into the
directory because it _might_ have a file named Makefile somewhere below.
However, when we are using an exclusion pattern, i.e. we have a pathspec
like
   :(exclude)*/Makefile
we do NOT want to say that a directory path like
   src/module/component
is a (negative) match.  While there *might* be a file named 'Makefile'
somewhere below that directory, there could also be other files and we
cannot pre-emptively rule all the files under that directory out; we
need to recurse and then check individual files.  Adjust the
DO_MATCH_LEADING_PATHSPEC logic to only get activated for positive
pathspecs.

Reported-by: John Millikin <jmillikin@stripe.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
1 parent 2051400
History
File Mode Size
.github
Documentation
block-sha1
builtin
ci
compat
contrib
ewah
git-gui
gitk-git
gitweb
mergetools
negotiator
perl
po
ppc
refs
sha1collisiondetection @ 855827c
sha1dc
sha256
t
templates
trace2
vcs-svn
xdiff
.cirrus.yml -rw-r--r-- 312 bytes
.clang-format -rw-r--r-- 5.0 KB
.editorconfig -rw-r--r-- 288 bytes
.gitattributes -rw-r--r-- 544 bytes
.gitignore -rw-r--r-- 3.4 KB
.gitmodules -rw-r--r-- 153 bytes
.mailmap -rw-r--r-- 16.6 KB
.travis.yml -rw-r--r-- 1.0 KB
.tsan-suppressions -rw-r--r-- 689 bytes
CODE_OF_CONDUCT.md -rw-r--r-- 3.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-- 100.6 KB
README.md -rw-r--r-- 3.2 KB
RelNotes l--------- 33 bytes
abspath.c -rw-r--r-- 6.4 KB
aclocal.m4 -rw-r--r-- 1.4 KB
add-interactive.c -rw-r--r-- 30.2 KB
add-interactive.h -rw-r--r-- 965 bytes
add-patch.c -rw-r--r-- 47.8 KB
advice.c -rw-r--r-- 9.6 KB
advice.h -rw-r--r-- 2.9 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-- 549 bytes
apply.c -rw-r--r-- 130.5 KB
apply.h -rw-r--r-- 5.3 KB
archive-tar.c -rw-r--r-- 12.7 KB
archive-zip.c -rw-r--r-- 17.4 KB
archive.c -rw-r--r-- 15.4 KB
archive.h -rw-r--r-- 1.5 KB
argv-array.c -rw-r--r-- 2.2 KB
argv-array.h -rw-r--r-- 2.9 KB
attr.c -rw-r--r-- 28.3 KB
attr.h -rw-r--r-- 6.3 KB
banned.h -rw-r--r-- 796 bytes
base85.c -rw-r--r-- 2.8 KB
bisect.c -rw-r--r-- 28.5 KB
bisect.h -rw-r--r-- 2.1 KB
blame.c -rw-r--r-- 83.5 KB
blame.h -rw-r--r-- 5.6 KB
blob.c -rw-r--r-- 464 bytes
blob.h -rw-r--r-- 688 bytes
bloom.c -rw-r--r-- 7.4 KB
bloom.h -rw-r--r-- 2.4 KB
branch.c -rw-r--r-- 10.0 KB
branch.h -rw-r--r-- 3.0 KB
bugreport.c -rw-r--r-- 5.0 KB
builtin.h -rw-r--r-- 11.8 KB
bulk-checkin.c -rw-r--r-- 7.3 KB
bulk-checkin.h -rw-r--r-- 323 bytes
bundle.c -rw-r--r-- 12.7 KB
bundle.h -rw-r--r-- 826 bytes
cache-tree.c -rw-r--r-- 20.8 KB
cache-tree.h -rw-r--r-- 2.1 KB
cache.h -rw-r--r-- 67.4 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
check_bindir -rwxr-xr-x 374 bytes
checkout.c -rw-r--r-- 1.9 KB
checkout.h -rw-r--r-- 369 bytes
color.c -rw-r--r-- 9.6 KB
color.h -rw-r--r-- 4.8 KB
column.c -rw-r--r-- 9.4 KB
column.h -rw-r--r-- 1.4 KB
combine-diff.c -rw-r--r-- 42.2 KB
command-list.txt -rw-r--r-- 11.3 KB
commit-graph.c -rw-r--r-- 60.6 KB
commit-graph.h -rw-r--r-- 4.3 KB
commit-reach.c -rw-r--r-- 19.1 KB
commit-reach.h -rw-r--r-- 3.7 KB
commit-slab-decl.h -rw-r--r-- 1.3 KB
commit-slab-impl.h -rw-r--r-- 2.7 KB
commit-slab.h -rw-r--r-- 2.1 KB
commit.c -rw-r--r-- 40.6 KB
commit.h -rw-r--r-- 12.7 KB
common-main.c -rw-r--r-- 1.3 KB
config.c -rw-r--r-- 81.5 KB
config.h -rw-r--r-- 21.5 KB
config.mak.dev -rw-r--r-- 1.6 KB
config.mak.in -rw-r--r-- 540 bytes
config.mak.uname -rw-r--r-- 24.2 KB
configure.ac -rw-r--r-- 38.5 KB
connect.c -rw-r--r-- 32.2 KB
connect.h -rw-r--r-- 891 bytes
connected.c -rw-r--r-- 4.3 KB
connected.h -rw-r--r-- 1.7 KB
convert.c -rw-r--r-- 49.3 KB
convert.h -rw-r--r-- 5.0 KB
copy.c -rw-r--r-- 1.3 KB
credential-cache--daemon.c -rw-r--r-- 6.9 KB
credential-cache.c -rw-r--r-- 3.2 KB
credential-store.c -rw-r--r-- 5.1 KB
credential.c -rw-r--r-- 12.1 KB
credential.h -rw-r--r-- 6.4 KB
csum-file.c -rw-r--r-- 4.1 KB
csum-file.h -rw-r--r-- 1.5 KB
ctype.c -rw-r--r-- 2.6 KB
daemon.c -rw-r--r-- 34.7 KB
date.c -rw-r--r-- 31.5 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.3 KB
detect-compiler -rwxr-xr-x 1016 bytes
diff-delta.c -rw-r--r-- 15.5 KB
diff-lib.c -rw-r--r-- 15.2 KB
diff-no-index.c -rw-r--r-- 7.2 KB
diff.c -rw-r--r-- 190.1 KB
diff.h -rw-r--r-- 19.4 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-- 6.6 KB
diffcore-rename.c -rw-r--r-- 19.3 KB
diffcore.h -rw-r--r-- 6.6 KB
dir-iterator.c -rw-r--r-- 5.8 KB
dir-iterator.h -rw-r--r-- 4.3 KB
dir.c -rw-r--r-- 95.4 KB
dir.h -rw-r--r-- 16.4 KB
editor.c -rw-r--r-- 3.0 KB
entry.c -rw-r--r-- 14.1 KB
environment.c -rw-r--r-- 11.0 KB
exec-cmd.c -rw-r--r-- 8.0 KB
exec-cmd.h -rw-r--r-- 483 bytes
fast-import.c -rw-r--r-- 92.4 KB
fetch-negotiator.c -rw-r--r-- 503 bytes
fetch-negotiator.h -rw-r--r-- 1.6 KB
fetch-pack.c -rw-r--r-- 50.4 KB
fetch-pack.h -rw-r--r-- 2.9 KB
fmt-merge-msg.c -rw-r--r-- 16.6 KB
fmt-merge-msg.h -rw-r--r-- 420 bytes
fsck.c -rw-r--r-- 32.9 KB
fsck.h -rw-r--r-- 3.2 KB
fsmonitor.c -rw-r--r-- 10.5 KB
fsmonitor.h -rw-r--r-- 2.4 KB
fuzz-commit-graph.c -rw-r--r-- 409 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.5 KB
generate-configlist.sh -rwxr-xr-x 370 bytes
gettext.c -rw-r--r-- 5.6 KB
gettext.h -rw-r--r-- 2.2 KB
git-add--interactive.perl -rwxr-xr-x 45.0 KB
git-archimport.perl -rwxr-xr-x 36.1 KB
git-bisect.sh -rwxr-xr-x 8.2 KB
git-compat-util.h -rw-r--r-- 35.6 KB
git-cvsexportcommit.perl -rwxr-xr-x 12.6 KB
git-cvsimport.perl -rwxr-xr-x 31.3 KB
git-cvsserver.perl -rwxr-xr-x 158.9 KB
git-difftool--helper.sh -rwxr-xr-x 2.2 KB
git-filter-branch.sh -rwxr-xr-x 16.0 KB
git-instaweb.sh -rwxr-xr-x 21.8 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.0 KB
git-mergetool.sh -rwxr-xr-x 10.1 KB
git-p4.py -rwxr-xr-x 165.0 KB
git-parse-remote.sh -rw-r--r-- 2.6 KB
git-quiltimport.sh -rwxr-xr-x 3.6 KB
git-rebase--preserve-merges.sh -rw-r--r-- 28.9 KB
git-request-pull.sh -rwxr-xr-x 4.0 KB
git-send-email.perl -rwxr-xr-x 56.8 KB
git-sh-i18n.sh -rw-r--r-- 2.4 KB
git-sh-setup.sh -rw-r--r-- 9.1 KB
git-submodule.sh -rwxr-xr-x 25.1 KB
git-svn.perl -rwxr-xr-x 62.9 KB
git-web--browse.sh -rwxr-xr-x 4.3 KB
git.c -rw-r--r-- 25.9 KB
git.rc -rw-r--r-- 635 bytes
gpg-interface.c -rw-r--r-- 11.5 KB
gpg-interface.h -rw-r--r-- 1.6 KB
graph.c -rw-r--r-- 40.0 KB
graph.h -rw-r--r-- 8.6 KB
grep.c -rw-r--r-- 53.8 KB
grep.h -rw-r--r-- 4.9 KB
hash.h -rw-r--r-- 5.3 KB
hashmap.c -rw-r--r-- 7.7 KB
hashmap.h -rw-r--r-- 17.9 KB
help.c -rw-r--r-- 17.8 KB
help.h -rw-r--r-- 3.1 KB
hex.c -rw-r--r-- 4.2 KB
http-backend.c -rw-r--r-- 18.9 KB
http-fetch.c -rw-r--r-- 1.9 KB
http-push.c -rw-r--r-- 50.1 KB
http-walker.c -rw-r--r-- 15.0 KB
http.c -rw-r--r-- 67.5 KB
http.h -rw-r--r-- 7.1 KB
ident.c -rw-r--r-- 15.5 KB
imap-send.c -rw-r--r-- 36.6 KB
interdiff.c -rw-r--r-- 660 bytes
interdiff.h -rw-r--r-- 119 bytes
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.9 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.1 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-- 9.8 KB
list-objects-filter-options.h -rw-r--r-- 3.7 KB
list-objects-filter.c -rw-r--r-- 19.0 KB
list-objects-filter.h -rw-r--r-- 3.2 KB
list-objects.c -rw-r--r-- 11.3 KB
list-objects.h -rw-r--r-- 762 bytes
list.h -rw-r--r-- 5.6 KB
ll-merge.c -rw-r--r-- 10.9 KB
ll-merge.h -rw-r--r-- 3.0 KB
lockfile.c -rw-r--r-- 5.6 KB
lockfile.h -rw-r--r-- 11.3 KB
log-tree.c -rw-r--r-- 27.8 KB
log-tree.h -rw-r--r-- 1.5 KB
ls-refs.c -rw-r--r-- 2.7 KB
ls-refs.h -rw-r--r-- 217 bytes
mailinfo.c -rw-r--r-- 27.8 KB
mailinfo.h -rw-r--r-- 1.0 KB
mailmap.c -rw-r--r-- 8.9 KB
mailmap.h -rw-r--r-- 292 bytes
match-trees.c -rw-r--r-- 8.5 KB
mem-pool.c -rw-r--r-- 3.1 KB
mem-pool.h -rw-r--r-- 1.4 KB
merge-blobs.c -rw-r--r-- 2.0 KB
merge-blobs.h -rw-r--r-- 232 bytes
merge-recursive.c -rw-r--r-- 116.1 KB
merge-recursive.h -rw-r--r-- 3.7 KB
merge.c -rw-r--r-- 2.8 KB
mergesort.c -rw-r--r-- 1.5 KB
mergesort.h -rw-r--r-- 574 bytes
midx.c -rw-r--r-- 37.4 KB
midx.h -rw-r--r-- 1.8 KB
name-hash.c -rw-r--r-- 18.8 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.6 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.3 KB
notes.h -rw-r--r-- 12.6 KB
object-store.h -rw-r--r-- 13.9 KB
object.c -rw-r--r-- 13.6 KB
object.h -rw-r--r-- 6.4 KB
oid-array.c -rw-r--r-- 1.9 KB
oid-array.h -rw-r--r-- 3.6 KB
oidmap.c -rw-r--r-- 1.4 KB
oidmap.h -rw-r--r-- 2.3 KB
oidset.c -rw-r--r-- 1.6 KB
oidset.h -rw-r--r-- 2.6 KB
pack-bitmap-write.c -rw-r--r-- 12.7 KB
pack-bitmap.c -rw-r--r-- 35.5 KB
pack-bitmap.h -rw-r--r-- 2.6 KB
pack-check.c -rw-r--r-- 5.5 KB
pack-objects.c -rw-r--r-- 5.0 KB
pack-objects.h -rw-r--r-- 12.2 KB
pack-revindex.c -rw-r--r-- 5.8 KB
pack-revindex.h -rw-r--r-- 322 bytes
pack-write.c -rw-r--r-- 10.7 KB
pack.h -rw-r--r-- 3.3 KB
packfile.c -rw-r--r-- 54.6 KB
packfile.h -rw-r--r-- 6.7 KB
pager.c -rw-r--r-- 5.1 KB
parse-options-cb.c -rw-r--r-- 6.4 KB
parse-options.c -rw-r--r-- 25.4 KB
parse-options.h -rw-r--r-- 13.0 KB
patch-delta.c -rw-r--r-- 2.4 KB
patch-ids.c -rw-r--r-- 3.4 KB
patch-ids.h -rw-r--r-- 704 bytes
path.c -rw-r--r-- 38.2 KB
path.h -rw-r--r-- 5.9 KB
pathspec.c -rw-r--r-- 18.2 KB
pathspec.h -rw-r--r-- 5.0 KB
pkt-line.c -rw-r--r-- 13.0 KB
pkt-line.h -rw-r--r-- 7.9 KB
preload-index.c -rw-r--r-- 3.8 KB
pretty.c -rw-r--r-- 49.0 KB
pretty.h -rw-r--r-- 3.7 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-- 768 bytes
promisor-remote.c -rw-r--r-- 5.5 KB
promisor-remote.h -rw-r--r-- 1.1 KB
prompt.c -rw-r--r-- 1.6 KB
prompt.h -rw-r--r-- 223 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-- 11.7 KB
quote.h -rw-r--r-- 3.1 KB
range-diff.c -rw-r--r-- 14.6 KB
range-diff.h -rw-r--r-- 486 bytes
reachable.c -rw-r--r-- 5.9 KB
reachable.h -rw-r--r-- 304 bytes
read-cache.c -rw-r--r-- 98.2 KB
rebase-interactive.c -rw-r--r-- 7.8 KB
rebase-interactive.h -rw-r--r-- 651 bytes
rebase.c -rw-r--r-- 1.0 KB
rebase.h -rw-r--r-- 244 bytes
ref-filter.c -rw-r--r-- 68.3 KB
ref-filter.h -rw-r--r-- 4.8 KB
reflog-walk.c -rw-r--r-- 8.2 KB
reflog-walk.h -rw-r--r-- 885 bytes
refs.c -rw-r--r-- 56.9 KB
refs.h -rw-r--r-- 31.1 KB
refspec.c -rw-r--r-- 4.9 KB
refspec.h -rw-r--r-- 2.1 KB
remote-curl.c -rw-r--r-- 36.9 KB
remote-testsvn.c -rw-r--r-- 8.2 KB
remote.c -rw-r--r-- 58.1 KB
remote.h -rw-r--r-- 9.9 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-- 2.5 KB
repository.c -rw-r--r-- 6.7 KB
repository.h -rw-r--r-- 5.3 KB
rerere.c -rw-r--r-- 32.2 KB
rerere.h -rw-r--r-- 1.4 KB
reset.c -rw-r--r-- 4.0 KB
reset.h -rw-r--r-- 565 bytes
resolve-undo.c -rw-r--r-- 4.4 KB
resolve-undo.h -rw-r--r-- 581 bytes
revision.c -rw-r--r-- 112.4 KB
revision.h -rw-r--r-- 12.4 KB
run-command.c -rw-r--r-- 41.0 KB
run-command.h -rw-r--r-- 16.5 KB
send-pack.c -rw-r--r-- 15.7 KB
send-pack.h -rw-r--r-- 893 bytes
sequencer.c -rw-r--r-- 149.7 KB
sequencer.h -rw-r--r-- 7.3 KB
serve.c -rw-r--r-- 6.2 KB
serve.h -rw-r--r-- 336 bytes
server-info.c -rw-r--r-- 7.5 KB
setup.c -rw-r--r-- 35.7 KB
sh-i18n--envsubst.c -rw-r--r-- 10.2 KB
sha1-file.c -rw-r--r-- 61.9 KB
sha1-lookup.c -rw-r--r-- 3.2 KB
sha1-lookup.h -rw-r--r-- 1.3 KB
sha1-name.c -rw-r--r-- 47.8 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
shell.c -rw-r--r-- 4.5 KB
shortlog.h -rw-r--r-- 508 bytes
sideband.c -rw-r--r-- 5.4 KB
sideband.h -rw-r--r-- 903 bytes
sigchain.c -rw-r--r-- 1.1 KB
sigchain.h -rw-r--r-- 1.7 KB
split-index.c -rw-r--r-- 13.6 KB
split-index.h -rw-r--r-- 1.2 KB
stable-qsort.c -rw-r--r-- 1.2 KB
strbuf.c -rw-r--r-- 25.3 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.6 KB
string-list.h -rw-r--r-- 9.9 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-- 21.1 KB
submodule-config.h -rw-r--r-- 3.6 KB
submodule.c -rw-r--r-- 59.5 KB
submodule.h -rw-r--r-- 5.5 KB
symlinks.c -rw-r--r-- 9.3 KB
tag.c -rw-r--r-- 5.5 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-- 6.5 KB
tmp-objdir.h -rw-r--r-- 1.5 KB
trace.c -rw-r--r-- 11.6 KB
trace.h -rw-r--r-- 8.1 KB
trace2.c -rw-r--r-- 18.0 KB
trace2.h -rw-r--r-- 18.2 KB
trailer.c -rw-r--r-- 29.5 KB
trailer.h -rw-r--r-- 2.5 KB
transport-helper.c -rw-r--r-- 38.4 KB
transport-internal.h -rw-r--r-- 2.6 KB
transport.c -rw-r--r-- 36.5 KB
transport.h -rw-r--r-- 8.2 KB
tree-diff.c -rw-r--r-- 18.1 KB
tree-walk.c -rw-r--r-- 31.1 KB
tree-walk.h -rw-r--r-- 6.7 KB
tree.c -rw-r--r-- 6.3 KB
tree.h -rw-r--r-- 1.2 KB
unicode-width.h -rw-r--r-- 9.3 KB
unimplemented.sh -rw-r--r-- 101 bytes
unix-socket.c -rw-r--r-- 2.4 KB
unix-socket.h -rw-r--r-- 158 bytes
unpack-trees.c -rw-r--r-- 68.2 KB
unpack-trees.h -rw-r--r-- 3.0 KB
upload-pack.c -rw-r--r-- 40.2 KB
upload-pack.h -rw-r--r-- 499 bytes
url.c -rw-r--r-- 2.5 KB
url.h -rw-r--r-- 697 bytes
urlmatch.c -rw-r--r-- 18.4 KB
urlmatch.h -rw-r--r-- 2.6 KB
usage.c -rw-r--r-- 6.7 KB
userdiff.c -rw-r--r-- 11.4 KB
userdiff.h -rw-r--r-- 892 bytes
utf8.c -rw-r--r-- 19.9 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.6 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-- 13.8 KB
worktree.h -rw-r--r-- 4.4 KB
wrap-for-bin.sh -rw-r--r-- 946 bytes
wrapper.c -rw-r--r-- 14.2 KB
write-or-die.c -rw-r--r-- 1.5 KB
ws.c -rw-r--r-- 9.4 KB
wt-status.c -rw-r--r-- 68.4 KB
wt-status.h -rw-r--r-- 4.5 KB
xdiff-interface.c -rw-r--r-- 7.5 KB
xdiff-interface.h -rw-r--r-- 2.0 KB
zlib.c -rw-r--r-- 6.1 KB

README.md

back to top