fix annex.skipunknown false error propagation
Propagate nonzero exit status from git ls-files when a specified file does not exist, or a specified directory does not contain any files checked into git. The recent completion of the annex.skipunknown transition exposed this bug, that has unfortunately been lurking all along. It is also possible that git ls-files errors out for some other reason -- perhaps a permission problem -- and this will also fix error propagation in such situations. Sponsored-by: Dartmouth College's Datalad project
This commit is contained in:
parent
a6857ddb79
commit
ce91f10132
4 changed files with 44 additions and 5 deletions
|
@ -20,3 +20,5 @@ git-annex version: 10.20220222+git23-g51c528980-1~ndall+1
|
|||
|
||||
[[!meta author=yoh]]
|
||||
[[!tag projects/datalad]]
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 3"""
|
||||
date="2022-02-28T16:32:08Z"
|
||||
content="""
|
||||
I've fixed it to propagate the non-zero exit status from git ls-files.
|
||||
|
||||
The git ls-files message still goes to stderr, not to
|
||||
--json-error-messages, the same as any stderr output by a git command
|
||||
that git-annex runs. And this is actually not a behavior change;
|
||||
the old git-annex output of "not found" did not get included in
|
||||
--json-error-messages either:
|
||||
|
||||
joey@darkstar:/tmp/mmm>/usr/bin/git-annex drop dne foo --json --json-error-messages
|
||||
git-annex: dne not found
|
||||
{"command":"drop","wanted":[],"note":"unsafe\nCould only verify the existence of 0 out of 1 necessary copy\n(Use --force to override this check, or adjust numcopies.)","success":false,"input":["foo"],"key":"SHA256E-s3--98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4","error-messages":[],"file":"foo/bar"}
|
||||
drop: 2 failed
|
||||
|
||||
Bear in mind that --json-error-messages
|
||||
is about errors encountered while processing a particular file that it
|
||||
outputs a json record for. This error comes before it starts processing any
|
||||
particular file. Also, of course, error messages output by git commands
|
||||
are never included in --json-error-messages.
|
||||
|
||||
I think it might be a good idea to add an actual API for detecting when
|
||||
there is this kind of problem, so datalad does not have to parse
|
||||
error messages (which could easily change). But that would need to be a
|
||||
separate discussion.
|
||||
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue