Utilizzo di richieste di pull come recensioni di codice

Durante lo sviluppo di software, il controllo del codice sorgente semplifica le nostre vite. Dal monitoraggio delle nostre modifiche all'introduzione della collaborazione in codice, contribuisce ad aumentare la nostra produttività. Inoltre, il fatto che ci siano diversi strumenti disponibili - Subversion, Perforce, Mercurial e così via - lo rendono ancora migliore fornendoci opzioni tra cui scegliere.

In questa serie, stiamo esaminando specificamente Git e l'utilizzo di Bitbucket e come possono aiutarci nel nostro lavoro quotidiano. In questo articolo, ci concentreremo specificatamente sull'utilizzo di Bitbucket per la discussione delle funzionalità, il bug tracking, il rilascio dei tag e altro.

Una delle principali caratteristiche di Git - e, quindi, di Bitbucket - è l'idea delle richieste pull. In questo articolo, esamineremo le richieste pull e in che modo non solo ci avvantaggiano da un punto di vista del controllo del codice sorgente, ma anche da un punto di vista della revisione tra pari.

Un Primer Richiesta Pull

Quando qualcuno invia una richiesta di pull al tuo progetto, significa che sta chiedendo di unire il codice nella base di codice. Cioè, stanno chiedendo di inserire il loro codice nel progetto.

Ma noi, come manutentori, abbiamo la possibilità di rivedere, testare e unire le modifiche introdotte dalla richiesta. Non commettere errori: svolgiamo un ruolo molto importante nel decidere se la particolare richiesta soddisfa sia gli standard che gli obiettivi del nostro software.

Se viene rilevata una discrepanza, possiamo chiedere al contributore di aggiornare la richiesta di pull pulendo il codice, risolvendo eventuali problemi in sospeso o migliorando la qualità generale del codice. D'altra parte, possiamo anche respingere la richiesta di pull se decidiamo che non soddisfa i criteri che riteniamo necessari per il progetto.

Per emettere una richiesta di pull, una persona deve prima posizionare il codice base del progetto iniziale. Ciò significa che eseguono un'istantanea della base di codice nel suo stato corrente, creano una serie di modifiche e quindi confermano le modifiche alla loro copia personale del codice. Da lì, lo sviluppatore richiede quindi che la modifica venga inserita nel repository iniziale.

Come accennato in precedenza, le richieste pull possono consistere in un numero qualsiasi di cose:

  • Correzioni di bug
  • Traduzioni
  • Aggiunte di funzionalità
  • Aggiunta o modifica alla documentazione
  • … e così via

Utilizzato da team di tutte le dimensioni, sia interni che distribuiti, la gestione del controllo del codice sorgente è una parte preziosa dello sviluppo del software. Il fatto è che, quando si tratta di lavorare con i sistemi di controllo del codice sorgente, gli utenti hanno diversi ruoli di permessi.

Vale a dire quando si tratta di mantenere un repository, alcuni sviluppatori avranno accesso in sola lettura mentre altri avranno accesso in lettura e scrittura. E quelli con accesso in scrittura sono quelli che sono responsabili del mantenimento delle richieste di pull.

Bitbucket e richieste di pull

In questa serie di articoli, daremo un'occhiata a come Bitbucket può migliorare il flusso di lavoro del tuo team quando si tratta di sviluppare software. Proprio come abbiamo discusso in precedenza, Bitbucket consente alle persone di partecipare al progetto sia commettendo il codice ad esso, esaminando le richieste di pull e conducendo le unioni di tali richieste.

Una delle più belle funzionalità di Bitbucket è che consente di aggiungere più revisori a una singola richiesta di pull che può quindi approvare (o rifiutare) la richiesta. Questo, a sua volta, dà a chi mantiene il repository la possibilità di rivedere la qualità del codice specificato nella richiesta pull.

Forse accoglieranno le aggiunte al progetto, forse no. In ogni caso, Bitbucket offre ai manutentori gli strumenti necessari per fornire un feedback su ogni richiesta di pull.

Infine, Bitbucket supporta commenti in linea su ogni richiesta pull che rende molto più semplice discutere di una linea, un blocco o un modulo di codice specifici.

Tutto sommato, questo approccio rende molto più facile determinare se una richiesta pull debba essere o meno unita, se deve essere rifiutata o quali aree del potrebbe essere modificate prima di unire la richiesta.

Impara dall'esempio

Fork un deposito

Per iniziare, visitare il dashboard di un progetto nel browser Web, quindi fare clic su Forchetta imporre il repository.


Successivamente, ti verrà presentato un modulo che ti consente di specificare un nome personalizzato e una descrizione personalizzata. Hai anche la possibilità di impostare la visibilità e le autorizzazioni del repository tra le altre funzionalità.

Se sei responsabile per il codice che verrà scritto e vuoi accedere a strumenti aggiuntivi per facilitare il lavoro con un team attorno alla base di codici, seleziona il Gestione di progetto opzione dall'elemento interfaccia corrispondente.

Dopo aver cliccato su Deposito della forcella pulsante, si prenderà l'ultima versione della base di codice del progetto e sarà disponibile in un repository tutto per te. Per verificare il codice sul tuo computer locale, puoi utilizzare un client Git come SourceTree oppure puoi farlo dalla riga di comando immettendo i seguenti comandi nella directory locale in cui è archiviato il tuo progetto:

$ git clone https: //[email protected]/yourusername/reponame.git

Nota che l'URL che abbiamo specificato sopra è visibile nella dashboard del tuo repository nel dashboard di Bitbucket.

Dopo aver controllato il codice, puoi iniziare a lavorare sul progetto sul tuo computer locale. Man mano che si introducono le modifiche, si vorrà commetterlo nel repository. Per fare ciò, prima metti in scena il tuo lavoro e poi impegni il tuo lavoro nel repository.

Apporta le tue modifiche

A questo punto, siamo pronti per iniziare a lavorare. Ciò significa che varierà a seconda della natura del tuo progetto: forse stai lavorando per chiudere un bug, forse stai refactoring una funzione, o forse stai aggiungendo una funzionalità.

In ogni caso, una volta apportate le modifiche, è possibile emettere un commit nel repository. Ciò significa che stai prendendo i file su cui hai lavorato e li stai combinando in un'unica raccolta di modifiche che viene chiamata un changeset. I changeset sono normalmente accompagnati da un breve messaggio che spiega cosa è stato cambiato e perché.

Quando si esegue il commit del codice, almeno all'inizio, non si sta effettivamente spingendo nulla al repository. In altre parole, se questo è il tuo primo commit, allora il tuo codice non è in realtà memorizzato online in Bitbucket. Invece, le modifiche esistono solo sul computer locale. Una volta eseguita la tua spinta iniziale, il codice allora esiste nel repository.

In definitiva, il controllo del codice sorgente consente di mantenere una cronologia pulita delle modifiche e un modo semplice per eseguire il rollback in un determinato momento.

Emetti una richiesta di pull

Dopo aver inviato una modifica al repository remoto (tramite un client o tramite la riga di comando), sei pronto per inizializzare una richiesta di pull. Ciò significa che sei pronto a prendere il codice che hai inserito nel fork della base di codice e chiedere ai manutentori originali se uniranno il codice nel loro progetto.

Fare questo all'interno dell'applicazione Bitbucket è facile. Basta andare sul dashboard del repository biforcuto e quindi fare clic su Crea richiesta di pull.

Successivamente, ti verrà presentata un'interfaccia che ti permetterà di creare la tua richiesta di pull. La richiesta includerà il tuo repository, il repository originale, un titolo e una descrizione.

Da qui, si seleziona il repository come repository di origine e il repository del codebase originale come repository di destinazione. Potrebbe essere necessario cambiarli all'interno del dashboard a seconda delle esigenze.

Ad esempio, se hai chiamato la tua copia del codice "develop" quando esegui il comando "git add remote" in precedenza, ma il codebase originale usa la parola "master", allora dovrai assicurarti di aver selezionato i valori corretti.

Infine, è qui che Bitbucket consente di aggiungere revisori a una richiesta di pull. Come accennato in precedenza, questo rende molto più facile attirare l'attenzione dei manutentori del progetto in modo che possano rivedere il tuo lavoro, offrire tutti i commenti che potrebbero avere e unire (o rifiutare) la tua richiesta.

Seguire la richiesta di pull

Bitbucket aggiorna automaticamente la richiesta di pull quando si inserisce il codice nella directory di origine in modo che il revisore del progetto possa sempre vedere l'ultimo codice che è in grado di estrarre. 

Quando il revisore richiede una modifica specifica, può semplicemente inserire le modifiche richieste nella propria copia del repository, ovvero il repository biforcato.

Gestione delle richieste di pull

Se si gestisce un repository che riceve richieste pull da altri, è probabile che si noti che il proprio repository riceverà sia una notifica nel dashboard dell'applicazione Bitbucket, sia nella propria e-mail.

Inoltre, se sei un revisore, riceverai anche una notifica e un'email. Per gestire tutte le richieste di pull in entrata, fai clic sul link "Pull request" e seleziona la richiesta pull con cui vuoi lavorare.

Come puoi vedere, Bitbucket offre un'interfaccia pulita dove puoi discutere e rivedere le richieste di pull. Sia i mantenitori che gli spettatori possono rifiutare, unire o chiedere che venga eseguito un lavoro aggiuntivo su una determinata richiesta di pull.

Supponendo che tu abbia una richiesta pronta per essere unita, fai clic sull'opzione specifica per farlo esattamente. Se lavori con più revisori, allora Bitbucket chiarirà anche chi ha approvato la richiesta applicando un segno di spunta sul proprio avatar. Ovviamente, più controlli vengono visualizzati tra i revisori, più è probabile che la richiesta sia pronta per la fusione.

Ma cosa succede se la fusione della richiesta pull fallisce? A questo punto, deve essere eseguita un'unione manuale (che è una parte comune della gestione del codice sorgente, sebbene al di fuori dello scopo di questo articolo), dopo di che il codice sarà impegnato nel repository.

Conclusione

Chiaramente, il controllo del codice sorgente offre molti vantaggi ai team; tuttavia, le richieste pull sono una potente funzionalità che semplifica il contributo a un progetto e consente ad altri utenti di rivedere il codice, commentarlo e migliorarlo prima di unirlo alla codebase.

Questo da solo può aiutare a diventare uno sviluppatore molto migliore mentre stai imparando dall'esperienza di altri sviluppatori che stanno mantenendo il progetto più ampio. Se non lo hai già fatto, prova a utilizzare le richieste pull nel tuo flusso di lavoro per migliorare il tuo codice e raccogliere feedback dagli altri.

.