4

Also, ich habe einen 'Entwicklungsblog' in einer Rails App, an der ich gerade arbeite. Ich verwende Git für die Versionskontrolle und -bereitstellung (obwohl ich momentan die einzige Person bin, die daran arbeitet).Embed Git Commit Anmelden Rails App?

Jetzt, wenn ich Änderungen in Git mache ich einen ziemlich anständigen Log-Eintrag über was ich getan habe. Ich würde es lieben, wenn das Git-Commit-Log automatisch im Entwicklungs-Blog veröffentlicht wird - oder anderweitig für andere verfügbar ist, um es auf der bereitgestellten Site zu lesen.

Gibt es eine automatisierte Möglichkeit, das Git Commit Log in eine Ansicht in einer Rails App zu ziehen?

+0

Nur ein kurzes Dankeschön an die Beantworter bis jetzt, diese Vorschläge waren sehr hilfreich und ich weiß zu schätzen, dass sie jeweils einen einzigartigen, aber praktikablen Ansatz bieten! – Andrew

+0

Noch einige Tests, jede Option ist interessant. Ich wähle eine Antwort aus, wenn ich herausfinde, welcher Weg für mich am besten ist, aber ich bin immer noch interessiert, wenn jemand andere Ideen dazu hat :) – Andrew

Antwort

6

Einige Git-Hosts ermöglichen es Ihnen, einen Post-Commit-Hook bereitzustellen. Dies ermöglicht Ihnen einen HTTP-Aufruf, um die relevanten Protokollanweisungen an Ihre App zu senden.

Wenn Sie sich selbst hosten, sehen Sie sich githooks an.

Wenn Sie Github verwenden, können Sie ihre post-commit verwenden Post (mehr Details hier: http://help.github.com/post-receive-hooks/)

+0

In der Tat zeigt Github einfach das Commit-Protokoll für Sie unter "Commits". –

+0

Ok, also ich habe noch nie von Git Haken gehört, aber das ist sehr hilfreich. Ich bin selbst-hosting, also ... wenn ich eine ausführbare Datei namens post-commit, dann in der Theorie, die das Commit auf der Website veröffentlichen könnte. Kannst du mich auf Ressourcen hinweisen, wie man einen Git-Hook schreibt - am liebsten in Ruby? Vielen Dank! – Andrew

+0

Haben Sie das nicht benutzt, aber es könnte hilfreich sein: https://github.com/schacon/ruby-git Dieser Link hat auch einige gute Informationen: http://book.git-scm.com/5_git_hooks. html –

3

Möglicherweise möchten Sie in grit suchen, die eine Ruby-Bibliothek, die in einem git Zugriff auf Sachen gibt Repo.

Ich verwende Grit in meinem persönlichen Blog. Ich schreibe Artikel in Textdateien und übertrage sie in ein Git Repo, dann schiebe ich das Git Repo auf meinen Server, wo meine Rails App Dateien von Git Repo als Blog Posts mit Grit liest.

Zum Beispiel ist hier, wie einfach es ist, die letzte Commit-Nachricht zu erhalten:

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

Toller Tipp, das kann sehr nützlich sein! Ich werde das überprüfen. – Andrew

+0

Also ... 'Pfad zu Ihrem Git-Verzeichnis' ... Ich bin auf Heroku bereitstellen und mein Git-Verzeichnis ist lokal. Ich glaube nicht, dass der Repo auf den Heroku-Servern lebt, jedenfalls nicht in der Art, dass ich ihn erreichen kann (er nimmt ihn und verwandelt ihn in eine "Schnecke"). Aber ich habe einen anderen privaten Server, auf dem ich eine Kopie des Repo speichern könnte. Wird dadurch ein Repo erfolgreich von einer URL anstatt von einem Pfad geladen? – Andrew

+0

Hmmm, ich bin mir nicht sicher ob eine URL sein kann ...Ich vermute, dass es nicht funktionieren wird, wenn das .git-Verzeichnis lokal für die Rails-App ist. Zum Beispiel in meinem Fall ist es so etwas wie: 'Repo = Repo.new ('/ home/dparoulek/rails-app/.git')' – Upgradingdave

1

Ich habe eine Capistrano Aufgabe ähnlich, etwas zu tun:

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" 

Ich zeige nur das letzte Commit, aber Sie könnten den Befehl git log ändern, um anzuzeigen, was immer Sie wollten.

+0

Coole Idee! In der gleichen Weise könnte ich das vielleicht zu einer Rechenaufgabe machen? Ich arbeite mit Heroku, also kein Capistrano in meinem Workflow. – Andrew

+0

Ja, Sie sollten in der Lage sein, dasselbe in einer Rake-Aufgabe zu tun, aber es sieht so aus, als würde Heroku Sie nicht so eine Datei schreiben lassen. Es ist möglicherweise besser, wenn die Rake-Aufgabe die Git-Information in eine Datenbanktabelle einfügt und die Informationsseite eine Rails-Ansicht ist, die aus der Datenbank zieht. –