2013-07-05 13 views
5

Dire che sto usando una libreria in un progetto leiningen, ospitato su Clojars. E mi imbatto in un bug. Offro il progetto a Github e corrego il bug. Ora cosa?Patch Library da Clojars

Qual è il modo più appropriato per utilizzare la mia versione della libreria nel mio progetto leiningen?

P.S. Vengo dal mondo Ruby, così ho ovviamente avuto Bundler sulla mente ...

risposta

6

Se si desidera utilizzare solo la versione modificata in grado localmente, puoi seguire la procedura di Arthur fino al passaggio "Prova il mio programma". Questo va bene se si sta lavorando su un'applicazione che verrà assemblata insieme alle sue dipendenze per l'implementazione (con lein uberjar, ad esempio). Si potrebbe anche voler usare la funzione di checkout di Leiningen per lavorare sul progetto principale e la libreria modificata in parallelo (documentata in Leiningen's tutorial - collegamento alla versione dalla versione 2.2.0 corrente).

Se si desidera che la versione modificata sia accessibile in un repository Maven pubblico, la cosa accettata da fare (in effetti, incoraggiata per questo caso d'uso specifico e nient'altro) è di rilasciare una versione del progetto con l'id originale del manufatto e un ID di gruppo di org.clojars.{your-clojars-account-name}.

Ad esempio, se si voleva liberare la propria versione di progetto foo con (defproject foo "upstream-version" ...) nella sua project.clj, devi cambiare la sua forma defproject-(defproject org.clojars.kendallb/foo "your-version" ...) prima del rilascio. Quindi potresti dipendere da [org.clojars.kendallb/foo "your-version"] nei tuoi progetti.

In questo modo non ci sarà alcun conflitto con l'id originale del manufatto o con qualsiasi altro fork.

Per quanto riguarda il passaggio delle modifiche a monte, il processo di Arthur è perfettamente ragionevole.

+0

Ho scelto questa risposta perché includeva le istruzioni per ottenere la patch fino alla produzione. Grazie! – KendallB

6

mio processo:

  • Forcella progetto su GitHub
  • modificare la versione da Project-0.1 .2-SNAPSHOT per proiettare-0.1.2-arthur-SNAPSHOT in project.clj della dipendenza
  • Fissare il bug
  • Run "Lein installare" per aggiungere la forchetta al mio repo locale
  • cd per il mio progetto (quello che utilizza la dipendenza)
  • Modificare il mio porject.clj dipendere progetto-0.1.2-arthur-SNAPSHOT
  • prova il mio programma
  • Invia una richiesta di pull al manutentore della dipendenza
  • Hop su IRC e chattare con il manutentore riguardo la correzione, e chiedi educatamente se il mio stile di codifica corrisponde alla loro visione del progetto. (Questo aiuta anche accelerare la loro fusione)
  • Una volta che si fondono la correzione rimuovere il -arthur- dal nome e testare la loro filiale ISTANTANEA
  • Beg e implorare loro di rilasciare il progetto fissa in modo da poter eliminare la dipendenza SNAPSHOT.
  • Mentre si è in attesa per la dipendenza di unire e liberare si può spingere la forcella a clojars sotto tuo nome e con una stringa di versione che lo identifica come la forcella (nel mio caso io uso -arthur-.

Tt è tentato di applicare molte "correzioni di stile" a un progetto quando sei lì dentro a scavare per correggere un bug. Se vuoi farlo prova a lavorare con manutentore del progetto perché sono in per il lungo raggio e più emotivamente investito nel codice