swh:1:snp:87728f882295b5ba27035837248a04c5be121c53
Revision fc1b56f054a79400c4e72cb1aab97ba2605cbd83 authored by Clemens Buchacher on 01 August 2011, 17:59:21 UTC, committed by Junio C Hamano on 01 August 2011, 23:21:55 UTC
If the pager fails to run, git produces no output, e.g.: $ GIT_PAGER=not-a-command git log The error reporting fails for two reasons: (1) start_command: There is a mechanism that detects errors during execvp introduced in 2b541bf8 (start_command: detect execvp failures early). The child writes one byte to a pipe only if execvp fails. The parent waits for either EOF, when the successful execvp automatically closes the pipe (see FD_CLOEXEC in fcntl(1)), or it reads a single byte, in which case it knows that the execvp failed. This mechanism is incompatible with the workaround introduced in 35ce8622 (pager: Work around window resizing bug in 'less'), which waits for input from the parent before the exec. Since both the parent and the child are waiting for input from each other, that would result in a deadlock. In order to avoid that, the mechanism is disabled by closing the child_notifier file descriptor. (2) finish_command: The parent correctly detects the 127 exit status from the child, but the error output goes nowhere, since by that time it is already being redirected to the child. No simple solution for (1) comes to mind. Number (2) can be solved by not sending error output to the pager. Not redirecting error output to the pager can result in the pager overwriting error output with standard output, however. Since there is no reliable way to handle error reporting in the parent, produce the output in the child instead. Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 3bc4181
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 | ||
compat | ||
contrib | ||
git-gui | ||
git_remote_helpers | ||
gitk-git | ||
gitweb | ||
perl | ||
po | ||
ppc | ||
t | ||
templates | ||
vcs-svn | ||
xdiff | ||
.gitattributes | -rw-r--r-- | 105 bytes |
.gitignore | -rw-r--r-- | 3.2 KB |
.mailmap | -rw-r--r-- | 2.7 KB |
COPYING | -rw-r--r-- | 18.3 KB |
GIT-VERSION-GEN | -rwxr-xr-x | 752 bytes |
INSTALL | -rw-r--r-- | 7.5 KB |
LGPL-2.1 | -rw-r--r-- | 26.2 KB |
Makefile | -rw-r--r-- | 69.6 KB |
README | -rw-r--r-- | 2.4 KB |
RelNotes | l--------- | 32 bytes |
abspath.c | -rw-r--r-- | 3.4 KB |
aclocal.m4 | -rw-r--r-- | 1.4 KB |
advice.c | -rw-r--r-- | 1.4 KB |
advice.h | -rw-r--r-- | 432 bytes |
alias.c | -rw-r--r-- | 1.7 KB |
alloc.c | -rw-r--r-- | 1.6 KB |
archive-tar.c | -rw-r--r-- | 6.3 KB |
archive-zip.c | -rw-r--r-- | 7.3 KB |
archive.c | -rw-r--r-- | 10.5 KB |
archive.h | -rw-r--r-- | 927 bytes |
attr.c | -rw-r--r-- | 17.3 KB |
attr.h | -rw-r--r-- | 972 bytes |
base85.c | -rw-r--r-- | 2.8 KB |
bisect.c | -rw-r--r-- | 23.0 KB |
bisect.h | -rw-r--r-- | 820 bytes |
blob.c | -rw-r--r-- | 565 bytes |
blob.h | -rw-r--r-- | 664 bytes |
branch.c | -rw-r--r-- | 5.6 KB |
branch.h | -rw-r--r-- | 1.1 KB |
builtin.h | -rw-r--r-- | 8.8 KB |
bundle.c | -rw-r--r-- | 10.3 KB |
bundle.h | -rw-r--r-- | 627 bytes |
cache-tree.c | -rw-r--r-- | 15.7 KB |
cache-tree.h | -rw-r--r-- | 1.4 KB |
cache.h | -rw-r--r-- | 41.2 KB |
check-builtins.sh | -rwxr-xr-x | 588 bytes |
check-racy.c | -rw-r--r-- | 538 bytes |
check_bindir | -rwxr-xr-x | 369 bytes |
color.c | -rw-r--r-- | 4.8 KB |
color.h | -rw-r--r-- | 2.5 KB |
combine-diff.c | -rw-r--r-- | 27.9 KB |
command-list.txt | -rw-r--r-- | 7.7 KB |
commit.c | -rw-r--r-- | 19.9 KB |
commit.h | -rw-r--r-- | 5.6 KB |
config.c | -rw-r--r-- | 34.0 KB |
config.mak.in | -rw-r--r-- | 1.8 KB |
configure.ac | -rw-r--r-- | 28.6 KB |
connect.c | -rw-r--r-- | 14.3 KB |
convert.c | -rw-r--r-- | 18.7 KB |
copy.c | -rw-r--r-- | 1.6 KB |
csum-file.c | -rw-r--r-- | 2.5 KB |
csum-file.h | -rw-r--r-- | 761 bytes |
ctype.c | -rw-r--r-- | 941 bytes |
daemon.c | -rw-r--r-- | 27.5 KB |
date.c | -rw-r--r-- | 22.7 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.5 KB |
diff-lib.c | -rw-r--r-- | 14.4 KB |
diff-no-index.c | -rw-r--r-- | 6.1 KB |
diff.c | -rw-r--r-- | 123.2 KB |
diff.h | -rw-r--r-- | 10.5 KB |
diffcore-break.c | -rw-r--r-- | 8.7 KB |
diffcore-delta.c | -rw-r--r-- | 5.4 KB |
diffcore-order.c | -rw-r--r-- | 2.2 KB |
diffcore-pickaxe.c | -rw-r--r-- | 6.8 KB |
diffcore-rename.c | -rw-r--r-- | 18.3 KB |
diffcore.h | -rw-r--r-- | 4.3 KB |
dir.c | -rw-r--r-- | 29.9 KB |
dir.h | -rw-r--r-- | 3.3 KB |
editor.c | -rw-r--r-- | 1.1 KB |
entry.c | -rw-r--r-- | 5.9 KB |
environment.c | -rw-r--r-- | 6.2 KB |
exec_cmd.c | -rw-r--r-- | 3.2 KB |
exec_cmd.h | -rw-r--r-- | 487 bytes |
fast-import.c | -rw-r--r-- | 83.5 KB |
fetch-pack.h | -rw-r--r-- | 479 bytes |
fixup-builtins | -rwxr-xr-x | 432 bytes |
fsck.c | -rw-r--r-- | 9.4 KB |
fsck.h | -rw-r--r-- | 1.0 KB |
generate-cmdlist.sh | -rwxr-xr-x | 443 bytes |
gettext.c | -rw-r--r-- | 290 bytes |
gettext.h | -rw-r--r-- | 975 bytes |
git-add--interactive.perl | -rwxr-xr-x | 35.4 KB |
git-am.sh | -rwxr-xr-x | 19.5 KB |
git-archimport.perl | -rwxr-xr-x | 36.0 KB |
git-bisect.sh | -rwxr-xr-x | 10.1 KB |
git-compat-util.h | -rw-r--r-- | 14.1 KB |
git-cvsexportcommit.perl | -rwxr-xr-x | 12.4 KB |
git-cvsimport.perl | -rwxr-xr-x | 29.5 KB |
git-cvsserver.perl | -rwxr-xr-x | 118.0 KB |
git-difftool--helper.sh | -rwxr-xr-x | 1.7 KB |
git-difftool.perl | -rwxr-xr-x | 2.6 KB |
git-filter-branch.sh | -rwxr-xr-x | 12.0 KB |
git-instaweb.sh | -rwxr-xr-x | 17.4 KB |
git-lost-found.sh | -rwxr-xr-x | 554 bytes |
git-merge-octopus.sh | -rwxr-xr-x | 2.2 KB |
git-merge-one-file.sh | -rwxr-xr-x | 3.8 KB |
git-merge-resolve.sh | -rwxr-xr-x | 944 bytes |
git-mergetool--lib.sh | -rw-r--r-- | 9.3 KB |
git-mergetool.sh | -rwxr-xr-x | 8.7 KB |
git-parse-remote.sh | -rw-r--r-- | 2.5 KB |
git-pull.sh | -rwxr-xr-x | 7.3 KB |
git-quiltimport.sh | -rwxr-xr-x | 3.3 KB |
git-rebase--am.sh | -rw-r--r-- | 615 bytes |
git-rebase--interactive.sh | -rw-r--r-- | 21.2 KB |
git-rebase--merge.sh | -rw-r--r-- | 3.0 KB |
git-rebase.sh | -rwxr-xr-x | 13.0 KB |
git-relink.perl | -rwxr-xr-x | 4.0 KB |
git-remote-testgit.py | -rw-r--r-- | 5.1 KB |
git-repack.sh | -rwxr-xr-x | 4.5 KB |
git-request-pull.sh | -rwxr-xr-x | 1.6 KB |
git-send-email.perl | -rwxr-xr-x | 38.8 KB |
git-sh-i18n.sh | -rw-r--r-- | 536 bytes |
git-sh-setup.sh | -rw-r--r-- | 4.8 KB |
git-stash.sh | -rwxr-xr-x | 9.9 KB |
git-submodule.sh | -rwxr-xr-x | 18.6 KB |
git-svn.perl | -rwxr-xr-x | 174.4 KB |
git-web--browse.sh | -rwxr-xr-x | 4.1 KB |
git.c | -rw-r--r-- | 16.4 KB |
git.spec.in | -rw-r--r-- | 10.7 KB |
graph.c | -rw-r--r-- | 34.4 KB |
graph.h | -rw-r--r-- | 3.6 KB |
grep.c | -rw-r--r-- | 25.7 KB |
grep.h | -rw-r--r-- | 2.8 KB |
hash.c | -rw-r--r-- | 2.5 KB |
hash.h | -rw-r--r-- | 1.1 KB |
help.c | -rw-r--r-- | 9.4 KB |
help.h | -rw-r--r-- | 906 bytes |
hex.c | -rw-r--r-- | 2.1 KB |
http-backend.c | -rw-r--r-- | 13.2 KB |
http-fetch.c | -rw-r--r-- | 2.1 KB |
http-push.c | -rw-r--r-- | 51.0 KB |
http-walker.c | -rw-r--r-- | 13.9 KB |
http.c | -rw-r--r-- | 33.0 KB |
http.h | -rw-r--r-- | 5.1 KB |
ident.c | -rw-r--r-- | 6.3 KB |
imap-send.c | -rw-r--r-- | 35.2 KB |
levenshtein.c | -rw-r--r-- | 2.5 KB |
levenshtein.h | -rw-r--r-- | 203 bytes |
list-objects.c | -rw-r--r-- | 5.3 KB |
list-objects.h | -rw-r--r-- | 422 bytes |
ll-merge.c | -rw-r--r-- | 10.0 KB |
ll-merge.h | -rw-r--r-- | 567 bytes |
lockfile.c | -rw-r--r-- | 6.2 KB |
log-tree.c | -rw-r--r-- | 16.7 KB |
log-tree.h | -rw-r--r-- | 867 bytes |
mailmap.c | -rw-r--r-- | 6.5 KB |
mailmap.h | -rw-r--r-- | 263 bytes |
match-trees.c | -rw-r--r-- | 8.7 KB |
merge-file.c | -rw-r--r-- | 2.6 KB |
merge-file.h | -rw-r--r-- | 175 bytes |
merge-recursive.c | -rw-r--r-- | 48.9 KB |
merge-recursive.h | -rw-r--r-- | 1.7 KB |
name-hash.c | -rw-r--r-- | 4.6 KB |
notes-cache.c | -rw-r--r-- | 2.1 KB |
notes-cache.h | -rw-r--r-- | 500 bytes |
notes-merge.c | -rw-r--r-- | 22.7 KB |
notes-merge.h | -rw-r--r-- | 3.4 KB |
notes.c | -rw-r--r-- | 35.8 KB |
notes.h | -rw-r--r-- | 11.9 KB |
object.c | -rw-r--r-- | 5.8 KB |
object.h | -rw-r--r-- | 2.5 KB |
pack-check.c | -rw-r--r-- | 4.6 KB |
pack-refs.c | -rw-r--r-- | 3.4 KB |
pack-refs.h | -rw-r--r-- | 465 bytes |
pack-revindex.c | -rw-r--r-- | 4.0 KB |
pack-revindex.h | -rw-r--r-- | 223 bytes |
pack-write.c | -rw-r--r-- | 8.0 KB |
pack.h | -rw-r--r-- | 2.3 KB |
pager.c | -rw-r--r-- | 2.2 KB |
parse-options.c | -rw-r--r-- | 17.1 KB |
parse-options.h | -rw-r--r-- | 7.7 KB |
patch-delta.c | -rw-r--r-- | 2.2 KB |
patch-ids.c | -rw-r--r-- | 2.5 KB |
patch-ids.h | -rw-r--r-- | 490 bytes |
path.c | -rw-r--r-- | 14.8 KB |
pkt-line.c | -rw-r--r-- | 4.5 KB |
pkt-line.h | -rw-r--r-- | 589 bytes |
preload-index.c | -rw-r--r-- | 2.4 KB |
pretty.c | -rw-r--r-- | 32.3 KB |
progress.c | -rw-r--r-- | 6.5 KB |
progress.h | -rw-r--r-- | 504 bytes |
quote.c | -rw-r--r-- | 10.9 KB |
quote.h | -rw-r--r-- | 2.7 KB |
reachable.c | -rw-r--r-- | 5.5 KB |
reachable.h | -rw-r--r-- | 127 bytes |
read-cache.c | -rw-r--r-- | 45.3 KB |
reflog-walk.c | -rw-r--r-- | 7.6 KB |
reflog-walk.h | -rw-r--r-- | 664 bytes |
refs.c | -rw-r--r-- | 46.4 KB |
refs.h | -rw-r--r-- | 4.7 KB |
remote-curl.c | -rw-r--r-- | 20.7 KB |
remote.c | -rw-r--r-- | 41.2 KB |
remote.h | -rw-r--r-- | 4.2 KB |
replace_object.c | -rw-r--r-- | 2.7 KB |
rerere.c | -rw-r--r-- | 17.9 KB |
rerere.h | -rw-r--r-- | 829 bytes |
resolve-undo.c | -rw-r--r-- | 3.9 KB |
resolve-undo.h | -rw-r--r-- | 546 bytes |
revision.c | -rw-r--r-- | 61.4 KB |
revision.h | -rw-r--r-- | 5.0 KB |
run-command.c | -rw-r--r-- | 13.3 KB |
run-command.h | -rw-r--r-- | 2.8 KB |
send-pack.h | -rw-r--r-- | 403 bytes |
server-info.c | -rw-r--r-- | 5.1 KB |
setup.c | -rw-r--r-- | 20.6 KB |
sh-i18n--envsubst.c | -rw-r--r-- | 10.7 KB |
sha1-array.c | -rw-r--r-- | 1.2 KB |
sha1-array.h | -rw-r--r-- | 631 bytes |
sha1-lookup.c | -rw-r--r-- | 7.8 KB |
sha1-lookup.h | -rw-r--r-- | 403 bytes |
sha1_file.c | -rw-r--r-- | 70.6 KB |
sha1_name.c | -rw-r--r-- | 28.6 KB |
shallow.c | -rw-r--r-- | 2.3 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.4 KB |
sideband.h | -rw-r--r-- | 326 bytes |
sigchain.c | -rw-r--r-- | 969 bytes |
sigchain.h | -rw-r--r-- | 215 bytes |
strbuf.c | -rw-r--r-- | 7.9 KB |
strbuf.h | -rw-r--r-- | 3.6 KB |
string-list.c | -rw-r--r-- | 4.5 KB |
string-list.h | -rw-r--r-- | 2.1 KB |
submodule.c | -rw-r--r-- | 21.2 KB |
submodule.h | -rw-r--r-- | 1.3 KB |
symlinks.c | -rw-r--r-- | 8.4 KB |
tag.c | -rw-r--r-- | 3.5 KB |
tag.h | -rw-r--r-- | 517 bytes |
tar.h | -rw-r--r-- | 644 bytes |
test-chmtime.c | -rw-r--r-- | 2.6 KB |
test-ctype.c | -rw-r--r-- | 1.4 KB |
test-date.c | -rw-r--r-- | 1.4 KB |
test-delta.c | -rw-r--r-- | 1.8 KB |
test-dump-cache-tree.c | -rw-r--r-- | 1.5 KB |
test-genrandom.c | -rw-r--r-- | 722 bytes |
test-index-version.c | -rw-r--r-- | 264 bytes |
test-line-buffer.c | -rw-r--r-- | 2.1 KB |
test-match-trees.c | -rw-r--r-- | 588 bytes |
test-mktemp.c | -rw-r--r-- | 269 bytes |
test-obj-pool.c | -rw-r--r-- | 2.5 KB |
test-parse-options.c | -rw-r--r-- | 3.0 KB |
test-path-utils.c | -rw-r--r-- | 854 bytes |
test-run-command.c | -rw-r--r-- | 840 bytes |
test-sha1.c | -rw-r--r-- | 816 bytes |
test-sha1.sh | -rwxr-xr-x | 1.9 KB |
test-sigchain.c | -rw-r--r-- | 344 bytes |
test-string-pool.c | -rw-r--r-- | 654 bytes |
test-subprocess.c | -rw-r--r-- | 387 bytes |
test-svn-fe.c | -rw-r--r-- | 312 bytes |
test-treap.c | -rw-r--r-- | 1.7 KB |
thread-utils.c | -rw-r--r-- | 1.3 KB |
thread-utils.h | -rw-r--r-- | 209 bytes |
trace.c | -rw-r--r-- | 4.7 KB |
transport-helper.c | -rw-r--r-- | 28.4 KB |
transport.c | -rw-r--r-- | 30.5 KB |
transport.h | -rw-r--r-- | 5.7 KB |
tree-diff.c | -rw-r--r-- | 8.4 KB |
tree-walk.c | -rw-r--r-- | 14.6 KB |
tree-walk.h | -rw-r--r-- | 1.9 KB |
tree.c | -rw-r--r-- | 6.0 KB |
tree.h | -rw-r--r-- | 897 bytes |
unimplemented.sh | -rw-r--r-- | 100 bytes |
unpack-trees.c | -rw-r--r-- | 46.4 KB |
unpack-trees.h | -rw-r--r-- | 2.1 KB |
upload-pack.c | -rw-r--r-- | 17.9 KB |
url.c | -rw-r--r-- | 3.0 KB |
url.h | -rw-r--r-- | 437 bytes |
usage.c | -rw-r--r-- | 2.9 KB |
userdiff.c | -rw-r--r-- | 8.8 KB |
userdiff.h | -rw-r--r-- | 566 bytes |
utf8.c | -rw-r--r-- | 13.0 KB |
utf8.h | -rw-r--r-- | 658 bytes |
walker.c | -rw-r--r-- | 7.2 KB |
walker.h | -rw-r--r-- | 1.1 KB |
wrap-for-bin.sh | -rw-r--r-- | 610 bytes |
wrapper.c | -rw-r--r-- | 8.1 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-- | 25.8 KB |
wt-status.h | -rw-r--r-- | 2.1 KB |
xdiff-interface.c | -rw-r--r-- | 8.2 KB |
xdiff-interface.h | -rw-r--r-- | 1.1 KB |
zlib.c | -rw-r--r-- | 1.2 KB |
Computing file changes ...