Come invio una patch a un progetto Launchpad?


20

Con un background Git / GitHub e sapendo ben poco di Bazaar VCS, vorrei occasionalmente segnalare un bug a progetti ospitati su Launchpad e persino inviare una patch. Mi piacerebbe farlo in un modo "corretto" in modo che sia pronto per la fusione o il miglioramento mentre non ci si mette in mezzo.

Non riesco a trovare un semplice decente How-to adatto alle mie esigenze.

Quello che ho fatto finora:

  1. Ho creato un account Launchpad,

  2. segnalato il bug,

  3. bazar installato e configurazione chiavi SSH ecc.

Ora, se fosse GitHub, lo farei

  1. fork del repository,

  2. clonare il repository biforcato,

  3. crea un ramo ben definito e fai il lavoro,

  4. commit + push,

  5. crea una richiesta pull usando GitHub WUI.

Ma non è GitHub e le architetture di Launchpad e Bazaar sembrano piuttosto diverse dalle loro controparti GitHub / Git.

Quindi un'anima gentile potrebbe salvarmi dall'annegare in tonnellate di documenti e compilare un percorso semplice, principalmente la seconda parte? Forse includendo i comandi CLI pertinenti quando sono necessari?


Modifica: sembra che dovrei chiarire se sto chiedendo specificamente sui pacchetti Ubuntu (qualunque cosa significhi) o sui progetti Launchpad.

Non mi interessa molto la distinzione tra pacchetti Ubuntu e pacchetti non Ubuntu. Qualsiasi software potrebbe essere in Ubuntu oggi e fuori di esso domani, o viceversa. Lo sviluppo è ciò che conta molto di più della distribuzione.

Quindi lo stavo supponendo

  • non ogni singolo pacchetto distribuito in Ubuntu è ospitato su Launchpad,

  • esiste un flusso di lavoro "ufficiale" o "predefinito" per Launchpad (beh, se tutti gli sviluppatori possono concordare sull'uso di Bazaar, perché la maggior parte di loro non è d'accordo su un flusso di lavoro di patching?),

quindi sto chiedendo il modo di Launchpad, non quello di Ubuntu. E ho scelto AU perché poiché l'intersezione è vasta, immagino che qui sia piuttosto in tema.


questo breve documento aiuta? in tal caso, non esitare a espandere la risposta esistente, se necessario doc.bazaar.canonical.com/bzr.dev/en/mini-tutorial
david.libremone

Risposte:


15

È un progetto Launchpad?

(Se sai già che si tratta di un progetto Launchpad, puoi saltare questo.)

Non tutti i progetti trovati su Launchpad sono effettivamente ospitati e sviluppati lì - alcuni sono mirror di codice ospitati altrove (GitHub / Gitorious / etc), altri provengono da Debian. Queste fonti originali sono conosciute come progetti "upstream", ed è generalmente meglio inviare patch alla fonte e lasciare che le modifiche arrivino "a valle" in Ubuntu (di solito nella prossima versione).

Dovrebbe essere chiaramente indicato sulla pagina del progetto se è ospitato altrove o su Launchpad. In caso contrario, chiedi semplicemente ai manutentori del progetto come desiderano ricevere le modifiche. Alcuni progetti a monte preferiscono file di patch semplici, altri preferiscono invii / invii tramite i rispettivi host.

Come nota speciale, i pacchetti Ubuntu ufficiali (software archiviato nei repository Ubuntu ufficiali che è possibile installare dal Software Center) hanno diversi modi per inviare le patch, poiché molti di questi pacchetti provengono direttamente da Debian e dovrebbero idealmente essere riparati lì piuttosto che solo in Ubuntu. (Questa è un'altra domanda.)

Come inviare una patch

Il modo generale per inviare una patch è creare il tuo ramo, impegnarti a livello locale e rispedirlo a Launchpad:

bzr push lp:~user/project/branch-name

È quindi possibile proporre al proprio ramo di unirsi al genitore da cui si è ramificati, tramite il sito Web o utilizzando il bzr lp-proposecomando.

Se hai archiviato un bug e il tuo ramo lo risolve, assicurati di fare quanto segue quando commetti, dove 000000viene sostituito con il tuo numero di bug, supponendo che sia un bug riportato su Launchpad e non altrove.

bzr commit --fixes=lp:000000

Una nota sul flusso di lavoro "predefinito"

Questo è praticamente il tipico flusso di lavoro moderno , che puoi confrontare con GitHub. Anche se Launchpad è stato un po 'più lungo, quindi questo flusso di lavoro si è evoluto dopo il fatto, piuttosto che essere incorporato nel sistema dall'inizio, quindi alcuni progetti più vecchi possono fare affidamento su altri metodi di accettazione delle patch. La maggior parte di tutti i progetti più recenti si basano su questo flusso di lavoro, in cui su GitHub le "richieste pull" sono sempre state lì e le persone semplicemente non lo usano perché non c'è mai stato un modo per fare qualcosa di diverso su GitHub.


8

Risposta intuitiva basata sulla risposta di dobey qui e sulla risposta di Jorge Castro a una domanda specifica del progetto. Modifiche / correzioni / suggerimenti sono benvenuti.

  1. Crea un account Launchpad. Ciò includerà un nome utente Launchpad ( LP-USER)

  2. Aggiungi la tua chiave SSH al launchpad all'indirizzo https://launchpad.net/~LP-USER/+editsshkeys

  3. Su Launchpad, annota il nome del progetto ( PROJECT-NAME).

  4. Segnala il problema rispetto al progetto. Al problema verrà assegnato un numero di bug ( 000000).

  5. Assicurati che Bazaar sia installato dpkg-query -l bzr. Potresti voler leggere sull'integrazione di Bazaar / Launchpad .

  6. Configura bzr con bzr whoami "Your Name <name@example.com>"ebzr launchpad-login LP-USER

  7. Sul tuo computer, controlla una filiale locale del progetto

    bzr branch lp:PROJECT-NAME
    

    (Questo creerà una cartella chiamata PROJECT-NAMEcontenente l'ultimo codice di progetto.)

  8. Avvia il progetto. Fare cambiamenti. Metti alla prova le tue modifiche. (Questi passaggi sono specifici del progetto e del problema.)

  9. Conferma le modifiche, incluso il numero di bug ( 000000).

    bzr commit --fixes=lp:000000
    
  10. Verrà visualizzata una finestra di dialogo di commit in cui è possibile aggiungere una voce del log delle modifiche che spiega le modifiche.

  11. Invia le tue modifiche a Launchpad. (Ciò creerà un nuovo ramo remoto associato al tuo account.)

    bzr push lp:~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME
    

    ( NEW-BRANCH-NAMEdovrebbe essere un breve nome descrittivo del problema risolto / funzionalità aggiunta)

  12. Apri filiale nel tuo browser con bzr lp-openo andando ahttps://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/

  13. Proponi un'unione con bzr lp-proposeo dall'URL nell'ultimo passaggio selezionando "Proponi per l'unione", aggiungendo una descrizione, incollando lp:PROJECT-NAMEper il ramo in cui vuoi proporre e fai clic Submit.


Domanda: Se il mio "nome del progetto" lo ubuntu/saucy/msttcorefontssto facendo bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnameo sto solobzr push lp:~amandabee/msttcorefonts/actualbranchname
Amanda,

Il primo: ha bzr push lp:~amandabee/ubuntu/saucy/msttcorefonts/actualbranchnamefunzionato
Amanda
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.