2011-01-05 71 views
4

因此,我現在正在開發一個Rails應用程序中的'開發博客'。我使用Git進行版本控制和部署(儘管現在我是唯一一個在其上工作的人)。Embed Git Commit登錄Rails應用程序?

現在,當我在Git中進行更改時,我放了一個相當不錯的日誌條目,介紹了我所做的事情。我很樂意將Git提交日誌自動發佈到開發人員博客 - 或者以其他方式提供給其他人在部署的站點中閱讀。

是否有一種自動方式將Git提交日誌拉入Rails應用程序的視圖中?

+0

到目前爲止,只需簡單地回答一下回答者,這些建議就非常有幫助,我很欣賞他們每個人都提供了一種獨特但可行的方法! – Andrew 2011-01-05 02:58:39

+0

仍然在做一些測試,每個選項都很有趣。當我找出哪種方式最適合我時,我會選擇一個答案,但如果其他人有關於如何執行此操作的其他想法,我仍然感興趣:) – Andrew 2011-01-06 20:21:33

回答

6

一些Git主機將允許您提供一個提交後掛鉤,這可以使您能夠進行HTTP調用以將相關的日誌語句發送到您的應用程序。

如果您是自託管,請查看githooks

如果您使用Github上,你可以使用自己的post-commit後(詳情點擊這裏:http://help.github.com/post-receive-hooks/

+0

事實上,Github只會在下面顯示提交日誌「提交」。 – 2011-01-05 02:20:02

+0

好吧,所以我從來沒有聽說過git掛鉤,但這非常有幫助。我是自託管的,所以......如果我把一個名爲post-commit的可執行文件放在理論上,可以將提交文件發佈到網站上。你能指點我有關如何編寫git鉤子的任何資源 - 最好在Ruby中?謝謝! – Andrew 2011-01-05 02:38:32

+0

沒有使用過,但可能會有所幫助:https://github.com/schacon/ruby-git 此鏈接也有一些很好的信息:http://book.git-scm.com/5_git_hooks。 html – 2011-01-05 03:09:35

3

你可能想看看grit這是一個Ruby庫,讓在一個git獲得的東西回購。

我在我的個人博客中使用沙礫。我在文本文件中撰寫文章並將它們提交到git repo,然後將git repo推送到我的服務器,在那裏我的rails應用程序使用砂礫作爲博客文章從git repo中讀取文件。

例如,這裏是它是多麼容易獲得最後的提交信息:

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 2011-01-05 02:56:53

+0

所以...'你的git目錄的路徑'...我在Heroku上部署,我的git目錄是本地的。我不認爲回購存在於Heroku服務器上,至少不以我能達到的任何方式存在(他們把它變成了他們稱之爲「slu」子「的東西)。但是,我確實有另一臺私人服務器可以存儲回購副本。這會成功從URL而不是路徑加載回購嗎? – Andrew 2011-01-05 03:01:09

+0

嗯,我不確定<.git dir>的路徑是否可以成爲網址......我猜測,除非.git目錄是rails應用程序的本地目錄,否則它將不起作用。例如,在我的情況下,它是這樣的:'repo = Repo.new('/ home/dparoulek/rails-app/.git')' – Upgradingdave 2011-01-05 15:58:00

1

我添加了一個Capistrano的任務,做同樣的事情:

deploy.rb

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" 

我只顯示最後一次提交,但可以改變git log命令以顯示任何你想要的內容。

+0

好主意!那麼,同樣的道理,我可能會把這個作爲一個耙子任務呢?我正在部署Heroku,因此在我的工作流程中沒有capistrano。 – Andrew 2011-01-05 02:57:59

+0

是的,你應該可以在rake任務中做同樣的事情,但看起來Heroku不會讓你寫出這樣的文件。 rake任務將git信息放入數據庫表中並讓info頁面成爲從數據庫中拉出的Rails視圖可能會更好。 – 2011-01-05 04:18:45