1

Gitからファイルをインタラクティブにアンステージできるようにする簡単な関数を作成しようとしています。これが私がこれまでに持っているものです:

reset_or_keep () {
  echo "Received $1"
}

interactive_reset () {
  local mods=
  mods=`git status --porcelain | sed -e "s/^[A-Z][ \t]*//g" | xargs reset_or_keep`
}

ただし、次のエラーが発生します。

xargs: reset_or_keep: No such file or directory

reset_or_keepがのエントリごとに1回呼び出されるようにしたいと思いますgit status --porcelain

4

1 に答える 1

3

xargs最も簡単な方法は、以下を使用して bash で直接効果的に再実装することreadです。

#!/bin/sh

reset_or_keep () {
    echo "Received $1"
}

handle_files() {
    while read filename ; do
        reset_or_keep "$filename"
    done
}

git status --porcelain | sed -e "s/^[ \t]*[A-Z][ \t]*//g" | handle_files

sed( my からの出力形式を処理するために、式を少し変更する必要があったことに注意してくださいgit status。)

xargsフラグがない場合と同様-0に、このプログラムは空白を含むファイル名では正しく動作しないことに注意してください。

于 2013-03-20T23:00:30.007 に答える