Come invio una patch a un progetto Launchpad?

17

Con uno sfondo Git / GitHub e ben poco su Bazaar VCS, vorrei segnalare occasionalmente un bug ai 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, pur non andando a buon fine.

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

Cosa ho fatto finora:

  1. Ho creato un account Launchpad,

  2. ha segnalato il bug,

  3. installato Bazaar e impostazione chiavi SSH ecc.

Ora, se fosse GitHub, avrei

  1. fork il repository,

  2. clona il repository biforcuto,

  3. crea un ramo con nome corretto e fai il lavoro,

  4. commit + push,

  5. crea una richiesta pull usando GitHub WUI.

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

Quindi un'anima gentile potrebbe salvarmi dall'affogare in tonnellate di documenti e compilare un semplice passo, principalmente la seconda parte? È possibile includere i comandi CLI pertinenti quando sono necessari?

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

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

Quindi stavo dando per scontato che

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

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

quindi ti sto chiedendo del modo Launchpad, non di Ubuntu. E ho scelto AU perché dal momento che l'intersezione è vasta, immagino che sia abbastanza interessante qui.

    
posta Alois Mahdal 07.11.2013 - 20:56

2 risposte

14

È un progetto Launchpad?

(Se sai già che è un progetto Launchpad, puoi saltarlo.)

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

Dovrebbe essere indicato chiaramente sulla pagina del progetto, se è ospitato altrove o su Launchpad. Altrimenti, chiedi ai manutentori del progetto come desiderano ricevere le modifiche. Alcuni progetti upstream preferiscono file di patch semplici, altri preferiscono submission / push tramite i rispettivi host.

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

Come inviare una patch

Il modo generale per inviare una patch è che tu crei il tuo ramo, lo impegni a livello locale e lo spinga indietro in Launchpad:

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

Puoi quindi proporre al tuo ramo di fondersi nel genitore da cui sei derivato, tramite il sito web o utilizzando il comando bzr lp-propose .

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

bzr commit --fixes=lp:000000

Una nota sul flusso di lavoro "predefinito"

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

    
risposta data dobey 07.11.2013 - 21:38
7

Risposta intitial basata su risposta di dobey qui e La risposta di Jorge Castro a una domanda specifica del progetto. Modifiche / correzioni / suggerimenti di benvenuto.

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

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

  3. In 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 . Puoi leggere su integrazione Bazaar / Launchpad .

  6. Configura bzr con bzr whoami "Your Name <[email protected]>" e bzr launchpad-login LP-USER

  7. Sul tuo computer, controlla un ramo locale del progetto

    bzr branch lp:PROJECT-NAME
    

    (Questo creerà una cartella chiamata PROJECT-NAME contenente l'ultimo codice del progetto.)

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

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

    bzr commit --fixes=lp:000000
    
  10. Ciò aprirà una finestra di dialogo di commit in cui è possibile aggiungere una voce di registro di modifiche che spiega le modifiche.

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

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

    ( NEW-BRANCH-NAME dovrebbe essere un nome descrittivo breve del problema risolto / funzione aggiunta)

  12. Apri il ramo nel tuo browser con bzr lp-open o andando a https://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/

  13. Proponi un'unione con bzr lp-propose o dall'URL nell'ultimo passaggio selezionando "Proponi per unire", aggiungendo una descrizione, incolla lp:PROJECT-NAME per il ramo che vuoi proporre e fai clic su Invia .

risposta data d3vid 27.11.2013 - 09:15

Leggi altre domande sui tag