swh:1:snp:87728f882295b5ba27035837248a04c5be121c53
Revision 05d1ed6148305d299693000856e4971e9f642662 authored by Ben Wijen on 22 August 2016, 12:47:55 UTC, committed by Junio C Hamano on 23 August 2016, 16:09:55 UTC
When the index is locked and child processes inherit the handle to said lock and the parent process wants to remove the lock before the child process exits, on Windows there is a problem: it won't work because files cannot be deleted if a process holds a handle on them. The symptom: Rename from 'xxx/.git/index.lock' to 'xxx/.git/index' failed. Should I try again? (y/n) Spawning child processes with bInheritHandles==FALSE would not work because no file handles would be inherited, not even the hStdXxx handles in STARTUPINFO (stdin/stdout/stderr). Opening every file with O_NOINHERIT does not work, either, as e.g. git-upload-pack expects inherited file handles. This leaves us with the only way out: creating temp files with the O_NOINHERIT flag. This flag is Windows-specific, however. For our purposes, it is equivalent to O_CLOEXEC (which does not exist on Windows), so let's just open temporary files with the O_CLOEXEC flag and map that flag to O_NOINHERIT on Windows. As Eric Wong pointed out, we need to be careful to handle the case where the Linux headers used to compile Git support O_CLOEXEC but the Linux kernel used to run Git does not: it returns an EINVAL. This fixes the test that we just introduced to demonstrate the problem. Signed-off-by: Ben Wijen <ben@wijen.net> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent ad65f7e
Tip revision: 6c40894d2466d4e7fddc047a05116aa9d14712ee authored by Junio C Hamano on 30 August 2021, 23:06:22 UTC
The second batch
The second batch
Tip revision: 6c40894
File | Mode | Size |
---|---|---|
Documentation | ||
block-sha1 | ||
builtin | ||
ci | ||
compat | ||
contrib | ||
ewah | ||
git-gui | ||
gitk-git | ||
gitweb | ||
mergetools | ||
perl | ||
po | ||
ppc | ||
refs | ||
t | ||
templates | ||
vcs-svn | ||
xdiff | ||
.gitattributes | -rw-r--r-- | 114 bytes |
.gitignore | -rw-r--r-- | 3.1 KB |
.mailmap | -rw-r--r-- | 14.0 KB |
.travis.yml | -rw-r--r-- | 3.5 KB |
COPYING | -rw-r--r-- | 18.3 KB |
GIT-VERSION-GEN | -rwxr-xr-x | 762 bytes |
INSTALL | -rw-r--r-- | 8.9 KB |
LGPL-2.1 | -rw-r--r-- | 26.2 KB |
Makefile | -rw-r--r-- | 75.5 KB |
README.md | -rw-r--r-- | 2.9 KB |
RelNotes | l--------- | 32 bytes |
abspath.c | -rw-r--r-- | 4.4 KB |
aclocal.m4 | -rw-r--r-- | 1.4 KB |
advice.c | -rw-r--r-- | 3.5 KB |
advice.h | -rw-r--r-- | 967 bytes |
alias.c | -rw-r--r-- | 1.5 KB |
alloc.c | -rw-r--r-- | 2.6 KB |
archive-tar.c | -rw-r--r-- | 11.3 KB |
archive-zip.c | -rw-r--r-- | 15.2 KB |
archive.c | -rw-r--r-- | 14.7 KB |
archive.h | -rw-r--r-- | 1.3 KB |
argv-array.c | -rw-r--r-- | 1.7 KB |
argv-array.h | -rw-r--r-- | 689 bytes |
attr.c | -rw-r--r-- | 19.8 KB |
attr.h | -rw-r--r-- | 1.6 KB |
base85.c | -rw-r--r-- | 2.8 KB |
bisect.c | -rw-r--r-- | 24.8 KB |
bisect.h | -rw-r--r-- | 713 bytes |
blob.c | -rw-r--r-- | 389 bytes |
blob.h | -rw-r--r-- | 664 bytes |
branch.c | -rw-r--r-- | 9.3 KB |
branch.h | -rw-r--r-- | 2.5 KB |
builtin.h | -rw-r--r-- | 9.0 KB |
bulk-checkin.c | -rw-r--r-- | 7.1 KB |
bulk-checkin.h | -rw-r--r-- | 323 bytes |
bundle.c | -rw-r--r-- | 12.3 KB |
bundle.h | -rw-r--r-- | 707 bytes |
cache-tree.c | -rw-r--r-- | 17.4 KB |
cache-tree.h | -rw-r--r-- | 1.6 KB |
cache.h | -rw-r--r-- | 65.5 KB |
check-builtins.sh | -rwxr-xr-x | 596 bytes |
check-racy.c | -rw-r--r-- | 523 bytes |
check_bindir | -rwxr-xr-x | 374 bytes |
color.c | -rw-r--r-- | 8.1 KB |
color.h | -rw-r--r-- | 3.1 KB |
column.c | -rw-r--r-- | 9.7 KB |
column.h | -rw-r--r-- | 1.4 KB |
combine-diff.c | -rw-r--r-- | 40.2 KB |
command-list.txt | -rw-r--r-- | 8.9 KB |
commit-slab.h | -rw-r--r-- | 4.8 KB |
commit.c | -rw-r--r-- | 40.9 KB |
commit.h | -rw-r--r-- | 13.2 KB |
config.c | -rw-r--r-- | 57.3 KB |
config.mak.in | -rw-r--r-- | 540 bytes |
config.mak.uname | -rw-r--r-- | 16.6 KB |
configure.ac | -rw-r--r-- | 35.1 KB |
connect.c | -rw-r--r-- | 19.6 KB |
connect.h | -rw-r--r-- | 676 bytes |
connected.c | -rw-r--r-- | 3.2 KB |
connected.h | -rw-r--r-- | 930 bytes |
convert.c | -rw-r--r-- | 32.1 KB |
convert.h | -rw-r--r-- | 2.5 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-- | 2.9 KB |
credential-store.c | -rw-r--r-- | 5.0 KB |
credential.c | -rw-r--r-- | 7.8 KB |
credential.h | -rw-r--r-- | 833 bytes |
csum-file.c | -rw-r--r-- | 4.0 KB |
csum-file.h | -rw-r--r-- | 1.3 KB |
ctype.c | -rw-r--r-- | 2.6 KB |
daemon.c | -rw-r--r-- | 31.8 KB |
date.c | -rw-r--r-- | 26.9 KB |
decorate.c | -rw-r--r-- | 1.8 KB |
decorate.h | -rw-r--r-- | 400 bytes |
delta.h | -rw-r--r-- | 3.4 KB |
diff-delta.c | -rw-r--r-- | 15.4 KB |
diff-lib.c | -rw-r--r-- | 14.1 KB |
diff-no-index.c | -rw-r--r-- | 6.9 KB |
diff.c | -rw-r--r-- | 138.7 KB |
diff.h | -rw-r--r-- | 12.5 KB |
diffcore-break.c | -rw-r--r-- | 9.0 KB |
diffcore-delta.c | -rw-r--r-- | 5.4 KB |
diffcore-order.c | -rw-r--r-- | 2.4 KB |
diffcore-pickaxe.c | -rw-r--r-- | 6.1 KB |
diffcore-rename.c | -rw-r--r-- | 17.7 KB |
diffcore.h | -rw-r--r-- | 4.8 KB |
dir.c | -rw-r--r-- | 69.7 KB |
dir.h | -rw-r--r-- | 9.7 KB |
editor.c | -rw-r--r-- | 1.5 KB |
entry.c | -rw-r--r-- | 7.3 KB |
environment.c | -rw-r--r-- | 9.2 KB |
exec_cmd.c | -rw-r--r-- | 3.0 KB |
exec_cmd.h | -rw-r--r-- | 547 bytes |
fast-import.c | -rw-r--r-- | 88.1 KB |
fetch-pack.c | -rw-r--r-- | 26.7 KB |
fetch-pack.h | -rw-r--r-- | 1.0 KB |
fmt-merge-msg.h | -rw-r--r-- | 187 bytes |
fsck.c | -rw-r--r-- | 21.6 KB |
fsck.h | -rw-r--r-- | 1.7 KB |
generate-cmdlist.sh | -rwxr-xr-x | 929 bytes |
gettext.c | -rw-r--r-- | 5.1 KB |
gettext.h | -rw-r--r-- | 2.2 KB |
git-add--interactive.perl | -rwxr-xr-x | 36.6 KB |
git-archimport.perl | -rwxr-xr-x | 36.0 KB |
git-bisect.sh | -rwxr-xr-x | 15.6 KB |
git-compat-util.h | -rw-r--r-- | 27.1 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.5 KB |
git-difftool--helper.sh | -rwxr-xr-x | 2.1 KB |
git-difftool.perl | -rwxr-xr-x | 12.2 KB |
git-filter-branch.sh | -rwxr-xr-x | 12.5 KB |
git-instaweb.sh | -rwxr-xr-x | 18.1 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-- | 7.8 KB |
git-mergetool.sh | -rwxr-xr-x | 9.5 KB |
git-p4.py | -rwxr-xr-x | 136.2 KB |
git-parse-remote.sh | -rw-r--r-- | 2.6 KB |
git-quiltimport.sh | -rwxr-xr-x | 3.5 KB |
git-rebase--am.sh | -rw-r--r-- | 2.4 KB |
git-rebase--interactive.sh | -rw-r--r-- | 33.4 KB |
git-rebase--merge.sh | -rw-r--r-- | 3.8 KB |
git-rebase.sh | -rwxr-xr-x | 15.7 KB |
git-relink.perl | -rwxr-xr-x | 4.0 KB |
git-remote-testgit.sh | -rwxr-xr-x | 2.9 KB |
git-request-pull.sh | -rwxr-xr-x | 3.8 KB |
git-send-email.perl | -rwxr-xr-x | 48.4 KB |
git-sh-i18n.sh | -rw-r--r-- | 2.0 KB |
git-sh-setup.sh | -rw-r--r-- | 8.2 KB |
git-stash.sh | -rwxr-xr-x | 13.8 KB |
git-submodule.sh | -rwxr-xr-x | 26.5 KB |
git-svn.perl | -rwxr-xr-x | 62.4 KB |
git-web--browse.sh | -rwxr-xr-x | 4.3 KB |
git.c | -rw-r--r-- | 19.9 KB |
git.rc | -rw-r--r-- | 566 bytes |
gpg-interface.c | -rw-r--r-- | 6.5 KB |
gpg-interface.h | -rw-r--r-- | 1.2 KB |
graph.c | -rw-r--r-- | 34.5 KB |
graph.h | -rw-r--r-- | 4.0 KB |
grep.c | -rw-r--r-- | 43.5 KB |
grep.h | -rw-r--r-- | 4.7 KB |
hashmap.c | -rw-r--r-- | 6.3 KB |
hashmap.h | -rw-r--r-- | 2.5 KB |
help.c | -rw-r--r-- | 11.7 KB |
help.h | -rw-r--r-- | 1.1 KB |
hex.c | -rw-r--r-- | 2.6 KB |
http-backend.c | -rw-r--r-- | 15.7 KB |
http-fetch.c | -rw-r--r-- | 2.3 KB |
http-push.c | -rw-r--r-- | 49.7 KB |
http-walker.c | -rw-r--r-- | 13.9 KB |
http.c | -rw-r--r-- | 52.0 KB |
http.h | -rw-r--r-- | 6.3 KB |
ident.c | -rw-r--r-- | 12.1 KB |
imap-send.c | -rw-r--r-- | 35.7 KB |
khash.h | -rw-r--r-- | 12.6 KB |
kwset.c | -rw-r--r-- | 20.5 KB |
kwset.h | -rw-r--r-- | 2.6 KB |
levenshtein.c | -rw-r--r-- | 2.5 KB |
levenshtein.h | -rw-r--r-- | 203 bytes |
line-log.c | -rw-r--r-- | 30.5 KB |
line-log.h | -rw-r--r-- | 1.8 KB |
line-range.c | -rw-r--r-- | 6.5 KB |
line-range.h | -rw-r--r-- | 1.3 KB |
list-objects.c | -rw-r--r-- | 6.0 KB |
list-objects.h | -rw-r--r-- | 381 bytes |
ll-merge.c | -rw-r--r-- | 10.6 KB |
ll-merge.h | -rw-r--r-- | 567 bytes |
lockfile.c | -rw-r--r-- | 5.4 KB |
lockfile.h | -rw-r--r-- | 10.2 KB |
log-tree.c | -rw-r--r-- | 24.4 KB |
log-tree.h | -rw-r--r-- | 1.2 KB |
mailinfo.c | -rw-r--r-- | 23.5 KB |
mailinfo.h | -rw-r--r-- | 955 bytes |
mailmap.c | -rw-r--r-- | 8.9 KB |
mailmap.h | -rw-r--r-- | 271 bytes |
match-trees.c | -rw-r--r-- | 8.1 KB |
merge-blobs.c | -rw-r--r-- | 1.9 KB |
merge-blobs.h | -rw-r--r-- | 194 bytes |
merge-recursive.c | -rw-r--r-- | 58.1 KB |
merge-recursive.h | -rw-r--r-- | 1.6 KB |
merge.c | -rw-r--r-- | 2.4 KB |
mergesort.c | -rw-r--r-- | 1.5 KB |
mergesort.h | -rw-r--r-- | 574 bytes |
name-hash.c | -rw-r--r-- | 5.9 KB |
notes-cache.c | -rw-r--r-- | 2.2 KB |
notes-cache.h | -rw-r--r-- | 500 bytes |
notes-merge.c | -rw-r--r-- | 22.6 KB |
notes-merge.h | -rw-r--r-- | 2.8 KB |
notes-utils.c | -rw-r--r-- | 4.9 KB |
notes-utils.h | -rw-r--r-- | 1.4 KB |
notes.c | -rw-r--r-- | 36.6 KB |
notes.h | -rw-r--r-- | 11.7 KB |
object.c | -rw-r--r-- | 9.6 KB |
object.h | -rw-r--r-- | 4.5 KB |
pack-bitmap-write.c | -rw-r--r-- | 12.3 KB |
pack-bitmap.c | -rw-r--r-- | 24.9 KB |
pack-bitmap.h | -rw-r--r-- | 1.7 KB |
pack-check.c | -rw-r--r-- | 5.4 KB |
pack-objects.c | -rw-r--r-- | 2.1 KB |
pack-objects.h | -rw-r--r-- | 1.9 KB |
pack-revindex.c | -rw-r--r-- | 5.7 KB |
pack-revindex.h | -rw-r--r-- | 323 bytes |
pack-write.c | -rw-r--r-- | 10.3 KB |
pack.h | -rw-r--r-- | 3.2 KB |
pager.c | -rw-r--r-- | 3.6 KB |
parse-options-cb.c | -rw-r--r-- | 4.9 KB |
parse-options.c | -rw-r--r-- | 17.4 KB |
parse-options.h | -rw-r--r-- | 9.8 KB |
patch-delta.c | -rw-r--r-- | 2.2 KB |
patch-ids.c | -rw-r--r-- | 2.4 KB |
patch-ids.h | -rw-r--r-- | 591 bytes |
path.c | -rw-r--r-- | 29.4 KB |
pathspec.c | -rw-r--r-- | 14.1 KB |
pathspec.h | -rw-r--r-- | 3.2 KB |
pkt-line.c | -rw-r--r-- | 5.4 KB |
pkt-line.h | -rw-r--r-- | 3.0 KB |
preload-index.c | -rw-r--r-- | 2.5 KB |
pretty.c | -rw-r--r-- | 44.5 KB |
prio-queue.c | -rw-r--r-- | 1.9 KB |
prio-queue.h | -rw-r--r-- | 1.5 KB |
progress.c | -rw-r--r-- | 6.3 KB |
progress.h | -rw-r--r-- | 504 bytes |
prompt.c | -rw-r--r-- | 1.4 KB |
prompt.h | -rw-r--r-- | 168 bytes |
quote.c | -rw-r--r-- | 10.6 KB |
quote.h | -rw-r--r-- | 2.8 KB |
reachable.c | -rw-r--r-- | 4.8 KB |
reachable.h | -rw-r--r-- | 304 bytes |
read-cache.c | -rw-r--r-- | 61.8 KB |
ref-filter.c | -rw-r--r-- | 44.3 KB |
ref-filter.h | -rw-r--r-- | 3.3 KB |
reflog-walk.c | -rw-r--r-- | 8.5 KB |
reflog-walk.h | -rw-r--r-- | 792 bytes |
refs.c | -rw-r--r-- | 29.3 KB |
refs.h | -rw-r--r-- | 19.7 KB |
remote-curl.c | -rw-r--r-- | 25.7 KB |
remote-testsvn.c | -rw-r--r-- | 8.4 KB |
remote.c | -rw-r--r-- | 58.5 KB |
remote.h | -rw-r--r-- | 8.1 KB |
replace_object.c | -rw-r--r-- | 3.0 KB |
rerere.c | -rw-r--r-- | 30.9 KB |
rerere.h | -rw-r--r-- | 1.2 KB |
resolve-undo.c | -rw-r--r-- | 4.3 KB |
resolve-undo.h | -rw-r--r-- | 612 bytes |
revision.c | -rw-r--r-- | 91.1 KB |
revision.h | -rw-r--r-- | 7.8 KB |
run-command.c | -rw-r--r-- | 25.6 KB |
run-command.h | -rw-r--r-- | 7.0 KB |
send-pack.c | -rw-r--r-- | 14.0 KB |
send-pack.h | -rw-r--r-- | 774 bytes |
sequencer.c | -rw-r--r-- | 31.7 KB |
sequencer.h | -rw-r--r-- | 1.1 KB |
server-info.c | -rw-r--r-- | 5.7 KB |
setup.c | -rw-r--r-- | 27.4 KB |
sh-i18n--envsubst.c | -rw-r--r-- | 10.3 KB |
sha1-array.c | -rw-r--r-- | 1.2 KB |
sha1-array.h | -rw-r--r-- | 583 bytes |
sha1-lookup.c | -rw-r--r-- | 9.2 KB |
sha1-lookup.h | -rw-r--r-- | 403 bytes |
sha1_file.c | -rw-r--r-- | 90.7 KB |
sha1_name.c | -rw-r--r-- | 36.7 KB |
shallow.c | -rw-r--r-- | 17.2 KB |
shell.c | -rw-r--r-- | 5.1 KB |
shortlog.h | -rw-r--r-- | 463 bytes |
show-index.c | -rw-r--r-- | 2.2 KB |
sideband.c | -rw-r--r-- | 3.1 KB |
sideband.h | -rw-r--r-- | 259 bytes |
sigchain.c | -rw-r--r-- | 1.1 KB |
sigchain.h | -rw-r--r-- | 247 bytes |
split-index.c | -rw-r--r-- | 9.0 KB |
split-index.h | -rw-r--r-- | 1.1 KB |
strbuf.c | -rw-r--r-- | 18.2 KB |
strbuf.h | -rw-r--r-- | 19.1 KB |
streaming.c | -rw-r--r-- | 11.8 KB |
streaming.h | -rw-r--r-- | 504 bytes |
string-list.c | -rw-r--r-- | 7.3 KB |
string-list.h | -rw-r--r-- | 5.1 KB |
submodule-config.c | -rw-r--r-- | 13.2 KB |
submodule-config.h | -rw-r--r-- | 980 bytes |
submodule.c | -rw-r--r-- | 31.9 KB |
submodule.h | -rw-r--r-- | 2.7 KB |
symlinks.c | -rw-r--r-- | 9.3 KB |
tag.c | -rw-r--r-- | 4.4 KB |
tag.h | -rw-r--r-- | 608 bytes |
tar.h | -rw-r--r-- | 644 bytes |
tempfile.c | -rw-r--r-- | 8.2 KB |
tempfile.h | -rw-r--r-- | 9.5 KB |
thread-utils.c | -rw-r--r-- | 1.7 KB |
thread-utils.h | -rw-r--r-- | 241 bytes |
trace.c | -rw-r--r-- | 10.4 KB |
trace.h | -rw-r--r-- | 3.6 KB |
trailer.c | -rw-r--r-- | 22.6 KB |
trailer.h | -rw-r--r-- | 170 bytes |
transport-helper.c | -rw-r--r-- | 35.0 KB |
transport.c | -rw-r--r-- | 28.9 KB |
transport.h | -rw-r--r-- | 7.6 KB |
tree-diff.c | -rw-r--r-- | 17.9 KB |
tree-walk.c | -rw-r--r-- | 26.7 KB |
tree-walk.h | -rw-r--r-- | 2.8 KB |
tree.c | -rw-r--r-- | 6.2 KB |
tree.h | -rw-r--r-- | 1.0 KB |
unicode_width.h | -rw-r--r-- | 6.6 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-- | 51.4 KB |
unpack-trees.h | -rw-r--r-- | 2.2 KB |
update_unicode.sh | -rwxr-xr-x | 1.0 KB |
upload-pack.c | -rw-r--r-- | 21.3 KB |
url.c | -rw-r--r-- | 2.7 KB |
url.h | -rw-r--r-- | 492 bytes |
urlmatch.c | -rw-r--r-- | 16.5 KB |
urlmatch.h | -rw-r--r-- | 1.9 KB |
usage.c | -rw-r--r-- | 3.7 KB |
userdiff.c | -rw-r--r-- | 9.2 KB |
userdiff.h | -rw-r--r-- | 780 bytes |
utf8.c | -rw-r--r-- | 15.9 KB |
utf8.h | -rw-r--r-- | 2.2 KB |
varint.c | -rw-r--r-- | 660 bytes |
varint.h | -rw-r--r-- | 168 bytes |
version.c | -rw-r--r-- | 651 bytes |
version.h | -rw-r--r-- | 180 bytes |
versioncmp.c | -rw-r--r-- | 3.4 KB |
walker.c | -rw-r--r-- | 7.3 KB |
walker.h | -rw-r--r-- | 1.1 KB |
wildmatch.c | -rw-r--r-- | 7.8 KB |
wildmatch.h | -rw-r--r-- | 346 bytes |
worktree.c | -rw-r--r-- | 7.4 KB |
worktree.h | -rw-r--r-- | 1.6 KB |
wrap-for-bin.sh | -rw-r--r-- | 819 bytes |
wrapper.c | -rw-r--r-- | 15.0 KB |
write_or_die.c | -rw-r--r-- | 2.0 KB |
ws.c | -rw-r--r-- | 9.6 KB |
wt-status.c | -rw-r--r-- | 47.7 KB |
wt-status.h | -rw-r--r-- | 2.9 KB |
xdiff-interface.c | -rw-r--r-- | 7.1 KB |
xdiff-interface.h | -rw-r--r-- | 1.1 KB |
zlib.c | -rw-r--r-- | 6.1 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...