* [PATCH] stash: prevent warning about null bytes in input
@ 2017-08-14 5:08 Kevin Daudt
2017-08-14 19:51 ` Junio C Hamano
2017-08-14 21:43 ` [PATCH v2] " Kevin Daudt
0 siblings, 2 replies; 5+ messages in thread
From: Kevin Daudt @ 2017-08-14 5:08 UTC (permalink / raw)
To: git; +Cc: Kevin Daudt
The no_changes function calls the untracked_files function through
command substitution. untracked_files will return null bytes because it
runs ls-files with the '-z' option.
Bash since version 4.4 warns about these null bytes. As they are not
required for the test that is being done, remove null bytes from the
input.
This warning is triggered when running git stash save -u resulting in
two warnings:
git-stash: line 43: warning: command substitution: ignored null byte
in input
Signed-off-by: Kevin Daudt <me@ikke.info>
---
git-stash.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/git-stash.sh b/git-stash.sh
index 9b6c2da7b..0dcca3cd6 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -39,7 +39,7 @@ fi
no_changes () {
git diff-index --quiet --cached HEAD --ignore-submodules -- "$@" &&
git diff-files --quiet --ignore-submodules -- "$@" &&
- (test -z "$untracked" || test -z "$(untracked_files)")
+ (test -z "$untracked" || test -z "$(untracked_files | tr -d '\0')")
}
untracked_files () {
--
2.14.0.rc1.33.g384a8b271c
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] stash: prevent warning about null bytes in input
2017-08-14 5:08 [PATCH] stash: prevent warning about null bytes in input Kevin Daudt
@ 2017-08-14 19:51 ` Junio C Hamano
2017-08-14 20:32 ` Kevin Daudt
2017-08-14 21:43 ` [PATCH v2] " Kevin Daudt
1 sibling, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2017-08-14 19:51 UTC (permalink / raw)
To: Kevin Daudt; +Cc: git
Kevin Daudt <me@ikke.info> writes:
> The no_changes function calls the untracked_files function through
> command substitution. untracked_files will return null bytes because it
> runs ls-files with the '-z' option.
>
> Bash since version 4.4 warns about these null bytes. As they are not
> required for the test that is being done, remove null bytes from the
> input.
That's an interesting one ;-)
I wonder if you considered giving an option to untracked_files
helper function, though. After all, it has only two callers,
and it feels a bit suboptimal to ask the command to do a special
thing (i.e. "-z") only to clean it up with a pipe.
IOW, something along the lines of (totally untested)...
git-stash.sh | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/git-stash.sh b/git-stash.sh
index 9b6c2da7b4..5f09a47f0a 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -43,9 +43,16 @@ no_changes () {
}
untracked_files () {
+ if test "$1" = "-z"
+ then
+ shift
+ z=-z
+ else
+ z=
+ fi
excl_opt=--exclude-standard
test "$untracked" = "all" && excl_opt=
- git ls-files -o -z $excl_opt -- "$@"
+ git ls-files -o $z $excl_opt -- "$@"
}
clear_stash () {
@@ -114,7 +121,7 @@ create_stash () {
# Untracked files are stored by themselves in a parentless commit, for
# ease of unpacking later.
u_commit=$(
- untracked_files "$@" | (
+ untracked_files -z "$@" | (
GIT_INDEX_FILE="$TMPindex" &&
export GIT_INDEX_FILE &&
rm -f "$TMPindex" &&
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] stash: prevent warning about null bytes in input
2017-08-14 19:51 ` Junio C Hamano
@ 2017-08-14 20:32 ` Kevin Daudt
2017-08-14 20:37 ` Junio C Hamano
0 siblings, 1 reply; 5+ messages in thread
From: Kevin Daudt @ 2017-08-14 20:32 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Mon, Aug 14, 2017 at 12:51:26PM -0700, Junio C Hamano wrote:
> Kevin Daudt <me@ikke.info> writes:
>
> > The no_changes function calls the untracked_files function through
> > command substitution. untracked_files will return null bytes because it
> > runs ls-files with the '-z' option.
> >
> > Bash since version 4.4 warns about these null bytes. As they are not
> > required for the test that is being done, remove null bytes from the
> > input.
>
> That's an interesting one ;-)
>
> I wonder if you considered giving an option to untracked_files
> helper function, though. After all, it has only two callers,
> and it feels a bit suboptimal to ask the command to do a special
> thing (i.e. "-z") only to clean it up with a pipe.
As a matter of fact, I did not consider that option. I do agree that's a
much better approach.
>
> IOW, something along the lines of (totally untested)...
>
How should I proceed with this? Resubmit it after testing with the
appropriate attribution?
> git-stash.sh | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/git-stash.sh b/git-stash.sh
> index 9b6c2da7b4..5f09a47f0a 100755
> --- a/git-stash.sh
> +++ b/git-stash.sh
> @@ -43,9 +43,16 @@ no_changes () {
> }
>
> untracked_files () {
> + if test "$1" = "-z"
> + then
> + shift
> + z=-z
> + else
> + z=
> + fi
> excl_opt=--exclude-standard
> test "$untracked" = "all" && excl_opt=
> - git ls-files -o -z $excl_opt -- "$@"
> + git ls-files -o $z $excl_opt -- "$@"
> }
>
> clear_stash () {
> @@ -114,7 +121,7 @@ create_stash () {
> # Untracked files are stored by themselves in a parentless commit, for
> # ease of unpacking later.
> u_commit=$(
> - untracked_files "$@" | (
> + untracked_files -z "$@" | (
> GIT_INDEX_FILE="$TMPindex" &&
> export GIT_INDEX_FILE &&
> rm -f "$TMPindex" &&
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] stash: prevent warning about null bytes in input
2017-08-14 20:32 ` Kevin Daudt
@ 2017-08-14 20:37 ` Junio C Hamano
0 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2017-08-14 20:37 UTC (permalink / raw)
To: Kevin Daudt; +Cc: git
Kevin Daudt <me@ikke.info> writes:
> On Mon, Aug 14, 2017 at 12:51:26PM -0700, Junio C Hamano wrote:
>> Kevin Daudt <me@ikke.info> writes:
>>
>> > The no_changes function calls the untracked_files function through
>> > command substitution. untracked_files will return null bytes because it
>> > runs ls-files with the '-z' option.
>> >
>> > Bash since version 4.4 warns about these null bytes. As they are not
>> > required for the test that is being done, remove null bytes from the
>> > input.
>>
>> That's an interesting one ;-)
>>
>> I wonder if you considered giving an option to untracked_files
>> helper function, though. After all, it has only two callers,
>> and it feels a bit suboptimal to ask the command to do a special
>> thing (i.e. "-z") only to clean it up with a pipe.
>
> As a matter of fact, I did not consider that option. I do agree that's a
> much better approach.
>
>>
>> IOW, something along the lines of (totally untested)...
>>
>
> How should I proceed with this? Resubmit it after testing with the
> appropriate attribution?
Sure.
An appropriate attribution would be a "Helped-by: me" at most, but I
do not think for something this small it may not even bee needed.
>
>> git-stash.sh | 11 +++++++++--
>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/git-stash.sh b/git-stash.sh
>> index 9b6c2da7b4..5f09a47f0a 100755
>> --- a/git-stash.sh
>> +++ b/git-stash.sh
>> @@ -43,9 +43,16 @@ no_changes () {
>> }
>>
>> untracked_files () {
>> + if test "$1" = "-z"
>> + then
>> + shift
>> + z=-z
>> + else
>> + z=
>> + fi
>> excl_opt=--exclude-standard
>> test "$untracked" = "all" && excl_opt=
>> - git ls-files -o -z $excl_opt -- "$@"
>> + git ls-files -o $z $excl_opt -- "$@"
>> }
>>
>> clear_stash () {
>> @@ -114,7 +121,7 @@ create_stash () {
>> # Untracked files are stored by themselves in a parentless commit, for
>> # ease of unpacking later.
>> u_commit=$(
>> - untracked_files "$@" | (
>> + untracked_files -z "$@" | (
>> GIT_INDEX_FILE="$TMPindex" &&
>> export GIT_INDEX_FILE &&
>> rm -f "$TMPindex" &&
>>
>>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2] stash: prevent warning about null bytes in input
2017-08-14 5:08 [PATCH] stash: prevent warning about null bytes in input Kevin Daudt
2017-08-14 19:51 ` Junio C Hamano
@ 2017-08-14 21:43 ` Kevin Daudt
1 sibling, 0 replies; 5+ messages in thread
From: Kevin Daudt @ 2017-08-14 21:43 UTC (permalink / raw)
To: git; +Cc: Junio C . Hamano, Kevin Daudt
The `no_changes` function calls the `untracked_files` function through
command substitution. `untracked_files` will return null bytes because it
runs ls-files with the '-z' option.
Bash since version 4.4 warns about these null bytes. As they are not
required for the test that is being done, make sure `untracked_files`
does not output null bytes when not required.
This is achieved by adding a parameter to the `untracked_files` function to
specify wither `-z` should be passed to ls-files or not.
This warning is triggered when running git stash save -u resulting in
two warnings:
git-stash: line 43: warning: command substitution: ignored null byte
in input
Signed-off-by: Kevin Daudt <me@ikke.info>
---
git-stash.sh | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/git-stash.sh b/git-stash.sh
index 9b6c2da7b..5f09a47f0 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -43,9 +43,16 @@ no_changes () {
}
untracked_files () {
+ if test "$1" = "-z"
+ then
+ shift
+ z=-z
+ else
+ z=
+ fi
excl_opt=--exclude-standard
test "$untracked" = "all" && excl_opt=
- git ls-files -o -z $excl_opt -- "$@"
+ git ls-files -o $z $excl_opt -- "$@"
}
clear_stash () {
@@ -114,7 +121,7 @@ create_stash () {
# Untracked files are stored by themselves in a parentless commit, for
# ease of unpacking later.
u_commit=$(
- untracked_files "$@" | (
+ untracked_files -z "$@" | (
GIT_INDEX_FILE="$TMPindex" &&
export GIT_INDEX_FILE &&
rm -f "$TMPindex" &&
--
2.14.1.145.gb3622a4ee9
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-08-14 21:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-14 5:08 [PATCH] stash: prevent warning about null bytes in input Kevin Daudt
2017-08-14 19:51 ` Junio C Hamano
2017-08-14 20:32 ` Kevin Daudt
2017-08-14 20:37 ` Junio C Hamano
2017-08-14 21:43 ` [PATCH v2] " Kevin Daudt
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).