2013-07-05 6 views
5

Angenommen, ich verwende eine Bibliothek in einem Leiningen-Projekt, das auf Clojars gehostet wird. Und ich stoße auf einen Fehler. Ich verzweifle mit dem Projekt auf Github und behebe den Fehler. Was jetzt?Patch-Bibliothek von Clojars

Was ist die geeignetste Art, meine Version der Bibliothek in meinem Leiningen-Projekt zu verwenden?

P.S. Ich bin aus der Welt Rubin kommen, also habe ich offensichtlich bekam Bündler auf den Geist ...

Antwort

6

Wenn Sie nur Ihre modifizierte Version nutzen möchten können Sie Arthurs Prozess bis zum Schritt "Mein Programm testen" verfolgen. Dies ist in Ordnung, wenn Sie an einer Anwendung arbeiten, die Sie zusammen mit den zugehörigen Abhängigkeiten für die Bereitstellung bereitstellen (z. B. mit lein uberjar). Sie können auch die Leiningen-Checkout-Funktion verwenden, um parallel an Ihrem Hauptprojekt und der geänderten Bibliothek zu arbeiten (dokumentiert in Leiningen's tutorial - Link zur Version aus der aktuellen 2.2.0-Version).

Wenn Sie möchten, dass Ihre modifizierte Version in einem öffentlichen Maven-Repository verfügbar ist, ist die akzeptierte Sache (in der Tat empfohlen für diesen spezifischen Anwendungsfall und keine andere), eine Version des Projekts mit der ursprünglichen Artefakt-ID zu veröffentlichen und eine Gruppen-ID von org.clojars.{your-clojars-account-name}.

Zum Beispiel, wenn Sie Ihre eigene Version von Projekt foo mit (defproject foo "upstream-version" ...) in seinem project.clj veröffentlichen wollen, würde man seine defproject Form (defproject org.clojars.kendallb/foo "your-version" ...) vor der Freigabe ändern. Dann könnten Sie sich in Ihren Projekten auf [org.clojars.kendallb/foo "your-version"] verlassen.

Auf diese Weise gibt es keinen Konflikt mit der ursprünglichen Artefakt-ID oder anderen Gabeln.

Um Ihre Änderung upstream Upstream zu bekommen, ist Arthurs Prozess völlig in Ordnung.

+0

Ich habe diese Antwort gewählt, weil sie Anweisungen enthielt, um den Patch bis zur Produktion zu erhalten. Vielen Dank! – KendallB

6

mein Prozess:

  • Fork das Projekt auf Github
  • Ändern Sie die Version von Projekt-0,1 0,2-snapshot zu projizieren-0.1.2-arthur-snapshot in project.clj der Abhängigkeit
  • Fix den Fehler
  • Run "lein installieren", um meine Gabel zu meinem lokalen Repo
  • cd zu meinem Projekt hinzufügen (derjenige, der die Abhängigkeit verwendet)
  • ändern meine porject.clj auf Projekt-0.1.2-arthur-snapshot
  • -Test meines Programm
  • Einen Pull-Request an den Betreuer der Abhängigkeit
  • Hop auf IRC und Chat mit dem Betreuer abzuhängen über die Lösung und frage höflich, ob meine Programmiersprache mit ihrer Vision für das Projekt übereinstimmt. (Dies hilft auch ihre Verschmelzung zu beschleunigen)
  • Sobald sie das beheben entfernen Sie den -arthur- aus dem Namen und testen ihre SCHNAPPSCHUSS Zweig
  • Beg fusionieren und plädieren für sie das feste Projekt freizugeben, so dass Sie die SNAPSHOT Abhängigkeit fallen kann.
  • Während Sie für die Abhängigkeit warten, um zu verschmelzen und lassen Sie Ihre Gabel zu clojars unter Ihren Namen und mit einer Versionszeichenfolge drücken können, die es als Ihre Gabel identifiziert (in meinem Fall verwende ich -arthur-.

Es ist verlockend, viele "Style Fixes" auf ein Projekt anzuwenden, wenn Sie gerade dort sind, um einen Fehler zu beheben.Wenn Sie dies tun möchten, versuchen Sie mit den Projektbetreuer, weil sie in sind es für die Langstrecke und emotional in den Code investiert