2011-01-05 11 views
4

私は今作業しているレールアプリで「開発ブログ」を持っています。私はGitを使ってバージョンコントロールとデプロイメントを行っています(ただし、今は私が唯一の人です)。Git CommitログをRailsアプリケーションに埋め込みますか?

今、私がGitを変更すると、私がやったことについてかなりまともなログエントリを入れました。私は開発ブログに自動的に投稿されたGitコミットログを持っているか、他の人が配布されたサイト内で読むことができるようにしたいと思っています。

Git Commitログをレールアプリのビューにプルする方法はありますか?

+0

これまでの回答者の方々には非常に感謝しています。これらの提案は非常に役立ちました。私は彼らがそれぞれユニークで実行可能なアプローチを提供していることを感謝しています。 – Andrew

+0

まだいくつかのテストを行っていますが、それぞれのオプションは面白いです。どの方法が私にとってうまくいくかを理解するときに答えを選ぶでしょうが、誰かがこれを行う方法について他のアイデアを持っているなら、私はまだ興味があります:) – Andrew

答えて

6

いくつかのGitホストではポスト・コミット・フックを提供できます。これにより、関連するログ・ステートメントをアプリケーションに送信するためのHTTP呼び出しを行うことができます。

セルフホスティングの場合は、githooksをご確認ください。 Gitの中でのものにアクセスできますルビーライブラリですgritに見てみたいことがあります

+0

実際、Githubは単純にあなたのコミットログを表示します"コミットする"。 –

+0

これまではgitフックのことは聞いたことがありませんでしたが、それはとても役に立ちます。私はセルフホスティングをしています。もしpost-commitと呼ばれる実行可能ファイルを置くと、理論上はコミットをサイトに投稿することができます。できればRubyでgitフックを書く方法について私に何らかのリソースを教えてもらえますか?ありがとう! – Andrew

+0

これを使わなかったのですが、役に立つかもしれません:https://github.com/schacon/ruby-git このリンクにもいくつかの良い情報があります:http://book.git-scm.com/5_git_hooks。 html –

3

:あなたはGitHubのを使用している場合

、あなたはそれらのコミット後のポスト(http://help.github.com/post-receive-hooks/ここでは詳細を)使用することができますレポ

私は個人的なブログでグリットを使用しています。私はテキストファイルに記事を書いてgit repoにコミットし、git repoを私のサーバにプッシュします。ここで私のレールアプリはgit repoのファイルをgritを使ってブログ投稿として読み込みます。

namespace :deploy do 
    desc <<-DESC 
     Updates info.html with build and deploy info 
    DESC 
    task :timestamp do 
     run "cd #{current_path}; printf '<pre>\\nDeployed on: %s\\n\\n%s\\n</pre>' \"`date`\" \"`git log -n 1`\" > public/info.html" 
    end 
    end 
    after "deploy", "deploy:timestamp" 

deploy.rb

:私は似た何かをするカピストラーノタスクを追加

require 'grit' 
include Grit 
repo = Repo.new('<path to your .git dir>') 
puts repo.commits('master',1)[0].message # latest commit message 
puts repo.commits('master',1)[0].date # last commit date 
+0

偉大なヒント、これは非常に便利かもしれません!確かめます。 – Andrew

+0

だから... 'あなたのgitディレクトリへのパス' ...私はHerokuに配置していて、私のgitディレクトリはローカルです。私はレポがHerokuサーバー上にあるとは思っていません。少なくとも、私はそれに到達することはできません(彼らはそれを持って、彼らを「スラッグ」と呼んでいます)。しかし、私はリポジトリのコピーを保存できる別のプライベートサーバを持っています。これで、パスではなくURLからリポジトリを正常にロードできますか? – Andrew

+0

Hmmm、あなたの.git dirへのパスがURLになるかどうか不安です...私は、.gitディレクトリがレールアプリのローカルでなければ動作しないと思っています。例えば、私の場合、それは次のようなものです: 'repo = Repo.new( '/ home/dparoulek/rails-app/.git')' – Upgradingdave

1

:たとえば、ここでは最後のコミットメッセージを取得することがいかに簡単か

をです私は最後のコミットを表示するだけですが、git logコマンドを変更して、必要なものを表示することができます。

+0

クールなアイデア!だから、私はこれをレイクの仕事にすることができるのでしょうか?私はHerokuと一緒に展開しているので、私のワークフローにはカピストラノはありません。 – Andrew

+0

はい、あなたはレーキタスクで同じことをすることができるはずですが、Herokuはそのようなファイルを書くことはできません。 rakeタスクでgit情報をデータベーステーブルに入れ、情報ページをデータベースから取得するRailsビューにする方が良いかもしれません。 –