git apply fails silently when on the wrong directory
I recently ran into a similar issue as described here:
I was using the alias:
alias ganw='git diff -U0 -w --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -'
to stage non-whitespace changes, but I was not in the root directory and the changes were not being applied. I broke down the command to discover the 'git apply' part of the pipe was silently failing to apply anything, exiting 0 without even a warning.
The exit status and lack of warning is terribly misleading, I imagine this would be the cause of subtle bugs in automated scripts.
Is this expected behaviour?
Thanks,
Ernesto
Also, has there been a feature request for a '-w' option to 'git add', analogous to the same option in 'git diff'?
Quoted 21 lines · Ernesto Alfonso
I recently ran into a similar issue as described here:
I was using the alias:
alias ganw='git diff -U0 -w --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -'
to stage non-whitespace changes, but I was not in the root directory and the changes were not being applied. I broke down the command to discover the 'git apply' part of the pipe was silently failing to apply anything, exiting 0 without even a warning.
The exit status and lack of warning is terribly misleading, I imagine this would be the cause of subtle bugs in automated scripts.
Is this expected behaviour?
Thanks,
Ernesto
Quoted 13 lines · Ernesto Alfonso
I recently ran into a similar issue as described here:
I was using the alias:
alias ganw='git diff -U0 -w --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -'
to stage non-whitespace changes, but I was not in the root directory and the changes were not being applied. I broke down the command to discover the 'git apply' part of the pipe was silently failing to apply anything, exiting 0 without even a warning.
Quoted 4 lines
The exit status and lack of warning is terribly misleading, I imagine this would be the cause of subtle bugs in automated scripts.
Is this expected behaviour?
Yes, this is as documented in git-apply(1):
Reads the supplied diff output (i.e. "a patch") and applies it to files. When running from a subdirectory in a repository, patched paths outside the directory are ignored.
I agree it's a potential source of confusion. There's some previous discussion in this thread:
https://public-inbox.org/git/CA+DCAeQQQH59Lb43Y4Bi1xktPNoODV11KkUBbKNG1OZ7mDb-UQ@mail.gmail.com/
-Peff