From 0ab9b473712bad59623248cce1df58e25bc05f95 Mon Sep 17 00:00:00 2001 From: spacewander Date: Sat, 5 May 2018 10:43:11 +0800 Subject: [PATCH] git-sed: detect sed -i support and work around for the BSD sed --- bin/git-sed | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bin/git-sed b/bin/git-sed index 9fcba85..bcbea9c 100755 --- a/bin/git-sed +++ b/bin/git-sed @@ -81,7 +81,12 @@ case "$all" in sep=/ ;; esac + r=$(xargs -r false < /dev/null > /dev/null 2>&1 && echo r) -command="git grep -lz '$search' | xargs -0$r sed -i 's$sep$search$sep$replacement$sep$flags'" -git grep -lz "$search" | xargs -0"$r" sed -i "s$sep$search$sep$replacement$sep$flags" +ext=$(sed -i s/hello/world/ "$(git_extra_mktemp)" > /dev/null 2>&1 || echo '""') + +command="git grep -lz '$search' | xargs -0$r sed -i $ext 's$sep$search$sep$replacement$sep$flags'" +# $ext need to be unquoted +# shellcheck disable=SC2086 +git grep -lz "$search" | xargs -0"$r" sed -i $ext "s$sep$search$sep$replacement$sep$flags" do_commit