2009-03-08 8 views
1

Ich schreibe ein Plug-in für Trac. Ich möchte jedes Mal, wenn das Plug-in Daten von einem Git-Post-Receive-Hook empfängt, der Zeitleiste ein Ereignis hinzufügen.Wie fügen Sie Ereignis zu Trac Event Zeitlinie

Mit Blick auf the timeline API scheint es, dass Sie nur neue Quelle von Ereignissen hinzufügen können. Sie sind also für das Abrufen und Anzeigen der Daten verantwortlich. Ich würde es vorziehen, mein Ereignis einer vorhandenen Quelle zu speichern.

Wo sollte ich in der Trac-API suchen, um Ereignisse zu speichern?

PS: Mein Plan ist es, auf ein Remote-Repository und Remote-Web-Schnittstelle zum Code wie Github zu verlassen.

pss: Die Zeitleiste muss Commits vom Hauptprojekt git repository und seinen Klonen anzeigen. Ich möchte keine Kopie von jedem Repository, das für das Projekt wichtig ist, hosten.

Antwort

2

Die Timeline-API ist eine Stufe höher als das, was Sie tun müssen. Es gibt eine allgemeine VCS-Implementierung davon in ChangesetModule, die den Änderungssatz (Ereignis) -Aufruf selbst an einen VCS-spezifischen Repository delegiert. Daher sollten Sie stattdessen the versioncontrol API implementieren.

Die API wurde für ein "Pull-Modell" entwickelt, bei dem Trac beim Erstellen einer Zeitleiste das VCS abfragt. Wenn Sie wirklich ein "Push-Modell" bevorzugen (warum?), Können Sie versuchen, the CacheRepository implementation als Basis zu verwenden, Ihre Ereignisse in den Cache zu injizieren oder einfach ein ereignisspeicherndes Repository von Grund auf neu zu schreiben. Seien Sie sich bewusst, dass dies dem bestehenden Design widerspricht und sehr wahrscheinlich unnötiger zusätzlicher Aufwand sein wird.

Ich schlage vor, dass Sie stattdessen mit dem normalen Pull-Modell gehen, es wird einfacher und sauberer. Sie könnten oder the Mercurial implementation als Referenz verwenden und wahrscheinlich GitPython verwenden, um mit git zu sprechen.

+0

Ich gehe für ein Push-Modell, bevor ich verwenden möchte, um die Aktivität eines Projekts und all seiner Klone zu verfolgen. – Dinoboff