2012-05-02 3 views
4

開発者が自分の共有リポジトリに更新をプッシュするときに通知メールを送信するフックを作成しました。私はbashの次のビットを使用して生成特定のリビジョンでどのファイルが変更されたかを調べるための配管コマンド

A __classes/Page/Activity.php 
M __config/Scheme.php 

$(git diff "$newrev"^ "$newrev" --name-status) 

これは正常に動作します。このメールは、たとえば、変更されたファイルのリストが含まれています。しかし、私はこのすべてを今よく知られているpost-receive-email hookに移植しようとしています。このフックにはhooks.showrev設定ディレクティブがありますが、これはリビジョン番号(%s)をに1回だけコマンドで使用できると考えています。したがって、これは機能しません:

showrev = "git diff %s^ %s --name-status" 

これだけの 'plumbing'コマンドが必要です。誰かが私を正しい方向に向けることができますか? :)

答えて

2

以下はどのように使用しますか?

showrev = "git show --name-status --pretty=format: %s" 

git showは磁器ではなく、配管のですが、私は、これは何をしたいと思います。

+0

ありがとうございます、それは私が欲しいものをやります!賢明、フォーマットを空に設定する。 :)私は '[commit message] \ n \ n> [日付] \ n> [ハッシュ]'を表示するコマンドを取得しようとしていますが、まだ動作しません。私はこれを 'showrev =" git log -1 --format = '%b%n%n>%ad%n>%H'%s "'を使ってコマンドラインで実行しましたが、いくつかのエラーが出ます'%n 'について – Rijk

+0

これらは正確なエラーです: 'remote:printf:739:%n:無効なディレクティブ'、 'remote:eval:1:構文エラー:終了していない引用文字列'です。どのようにこれを修正するための任意のアイデア? – Rijk

+0

@Rijk:代わりに '%% n 'を使用してください。' printf'形式の書式設定文字列で '%'記号をエスケープする方法です。 –

1

git whatchanged -1 <rev>などがあります。また、出力形式をマッサージするための追加のオプションがあります。上で引用した形式を正確に得ることができないのかどうかは確信していますが、それと同等のものを得ることができます。

関連する問題