2015-12-04 8 views
7

コミットログをPHPファイルに書き込むgit commit -m "msg"を実行するたびに、このシェルスクリプトを実行しています。私はそれが私がその時にやっているだけでなく、現在のコミットメッセージを含めたい。Gitフックを使ってコミットログを作成し、現在のコミットに追加

私のシェルスクリプト:

#!/bin/sh 
path="path/to/gitlog.php" 
echo "<?php $git_log = array(" > $path 
git log --date=iso --pretty=format:'array("%h","%an","%ad","%s"),' >> $path 
echo ");" >> $path 

gitlog.phpは、私のリポジトリに保存されますこれは私その後、git pushます。

私は現在 'pre-commit'フックを持っていますが、このフック内にコミットメッセージを得る方法はありますか?

私のユースケースは、私は、プロジェクト内の唯一の開発者です。時間は短いです!プロジェクトに関わっている他の人にとっては、進捗状況を見て、二重にするオーバーヘッドなしに説明的なコミットログを読むことです。ログは、誰もがアクセスできるダッシュボードに出力されます。

Gitはダッシュボードサーバー上で実行されていない、とファイルがリポジトリのホスティング会社(豆の木)から展開されている

+0

コミット前のフックはコミットの前に実行されるため、コミット自体を含めることはできません。コミットした後に新たなコミット*を行うことができます。そして、その新しいコミットを最新のコミットとは異なる親にすることさえできます(これは 'git commit --amend'の仕組みです)。既存のコミットを変更することはできません。バージョン情報を含める場合、gitの通常の方法は、特にファイル全体がコミットから生成された場合(このように)、gitの外側にファイルを保存することです。古いコミットを見るにはチェックアウトしてから、 "バージョンを生成する"を実行してください。 – torek

+0

@torek、thks - 実際のコミットが実行される前に呼び出されるフックがなく、コミットメッセージと日付をログに手動で追加できるメッセージデータが渡され、 'git add'を再実行します。 '最後にコミットし続けますか? – digout

+0

ああ、はい、 'commit-msg'フックがあります。これは、(標準の書式設定のために)メッセージを変更したり、メッセージが間違っている場合にコミットを拒否させたりすることを意図しています。私は実際にこのフックを自分で使ったことはありませんが、コミットプロセスの正しい点で実行されます。私は 'git add 'をしないことをお勧めします(これは意図的に変更されたファイルを追加するかもしれませんが' git add $ path'はここでうまくいくかもしれません)。 (でも、特定のファイルのコミットや、 'git commit -a'を使ってテストしてみてください。) – torek

答えて

0

ご利用の場合を考えると、私はお勧めします:
はに、ローカルマシン上のpre-commitフックを移動 その後、ダッシュボードサーバ上のフック(私はダッシュボードサイトの背後にあるレポのクローンがあると想像?)

+0

いいえ、ファイルは、レポ・ホーマー(Beanstalk)から 'ダッシュボード・サーバー'にデプロイされます。 – digout

1

別のオプションは、あなたのレポ外のファイルへの変更履歴を書き込み、適切なフックを作成することができpost-checkout、およびファイルを外部ユーザーがアクセス可能などこかにプッシュします。変更ログをコミットする必要はありません。これが問題の原因です。

関連する問題