fix: safe execute git commands without sh wrapper #606
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔧 Summary
Execution of shell commands with
sh
wrapper can bring unexpected behavior because of arguments (branch names) that can be places into a command. For example, when a branch is named "mybranch;killall" the command for getting files for the pre-push hook will look likesh -c 'git diff --name-only HEAD mybranch;killall'
and it may shoot badly.The
sh
wrapper is actually needed only for thefiles
option where user can specify something likegit ls-files | grep _test
. So, this behavior is kept as before + one more integrity test for it.