私は自動コミットスクリプトbased in the Carlos Buenos Vinos tutorialをビルドしていますが、大きな問題は次のとおりです。私はdevコンピュータでWindowsを使用している会社で働いていますこの悲しいことについては何もしないでください)。誰もがライン怒鳴ると同等のコマンドにアイデアを持っているん...WindowsのEGREPとAWK相当のコマンド
private function extractCommitedFiles()
{
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
$against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
if ($rc == 0) {
$against = 'HEAD';
}
// unix/linux
// exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
// windows
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
return $output;
}
ので:
スクリプトには、次の方法がありますか?
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
私はUNIX /バッシュでこのコマンドを実行する場合、私は次の結果を持っている必要があります。
core/web/favicon.ico
core/web/htaccess.txt
core/web/index.html
core/web/slim.php
core/web/swagger/css/print.css
core/web/swagger/css/reset.css
core/web/swagger/css/screen.css
core/web/swagger/css/style.css
core/web/swagger/css/typography.css
core/web/swagger/fonts/DroidSans-Bold.ttf
しかし、幹部を使用して(」...のegrepとawkのコマンドなしで、私は次のことを抱えています結果:
A core/web/htaccess.txt
A core/web/index.html
A core/web/slim.php
A core/web/swagger/css/print.css
A core/web/swagger/css/reset.css
A core/web/swagger/css/screen.css
A core/web/swagger/css/style.css
A core/web/swagger/css/typography.css
A core/web/swagger/fonts/DroidSans-Bold.ttf
はuのみんなありがとう
として組み合わせることができる
--name-only
と--diff-filter
を含む様々な出力オプションを有しているのでので、コマンドは第二に短縮しなければならない、でもそれは、悪い例です。しかし、私たちは他の開発者を持っているので、タスクを自動化しようとしています。そのアイデアは、追加の手動タスクなしでジョブを実行するバージョンのスクリプトです。 ** git ls-files -m **コマンドで近づいていますが、追加ファイルのオプション-aはありません:( –
egrepコマンドは、それらの行をAまたはMで始めるだけです。awkコマンドは、ファイル名を指定して "2番目の列"を指定すると、ファイルが追加または変更されます。 –
その部分を実行する独自のプログラムを変更するのは難しくありません - 'A'または' M'で始まらない行;最初のフィールドとそれに続く空白をスキップし、残りの行からファイル名を取得する(Awkスクリプトは名前に空白があるファイル名では正しく動作しない) – tripleee