filter-branch: prevent filters from reading from stdin
authorMatthias Lederhofer <matled@gmx.net>
Tue, 5 Jun 2007 14:12:08 +0000 (16:12 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 6 Jun 2007 07:29:47 +0000 (00:29 -0700)
stdin is the list of commits when the env, tree and index
filter are executed.  The filters are not supposed to read
anything from stdin so the best is to give them /dev/null
for reading.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-filter-branch.sh

index 0c8a7dfd3e6770c7f048897d9c2929aa75059be1..73e7c010099e6ff1defc614d6f8a70f301aaff70 100644 (file)
@@ -349,21 +349,21 @@ while read commit; do
 
        eval "$(set_ident AUTHOR <../commit)"
        eval "$(set_ident COMMITTER <../commit)"
-       eval "$filter_env"
+       eval "$filter_env" < /dev/null
 
        if [ "$filter_tree" ]; then
                git-checkout-index -f -u -a
                # files that $commit removed are now still in the working tree;
                # remove them, else they would be added again
                git-ls-files -z --others | xargs -0 rm -f
-               eval "$filter_tree"
+               eval "$filter_tree" < /dev/null
                git-diff-index -r $commit | cut -f 2- | tr '\n' '\0' | \
                        xargs -0 git-update-index --add --replace --remove
                git-ls-files -z --others | \
                        xargs -0 git-update-index --add --replace --remove
        fi
 
-       eval "$filter_index"
+       eval "$filter_index" < /dev/null
 
        parentstr=
        for parent in $(get_parents $commit); do