Cosa sono le richieste pull di Git e come le usi?

0
392

Le pull request sono una caratteristica dei servizi git online come Github e Gitlab. Consentono a chiunque di richiedere l'aggiunta di modifiche, anche se non hanno accesso al repository. Discuteremo come funzionano e come usarli per la collaborazione open source.

Che cosa fa una pull request?

Nonostante possa sembrare, Git come strumento è un sistema completamente decentralizzato. Ciò significa che il repository su Github.com e il repository sul tuo computer locale non sono diversi l'uno dall'altro. Non ti stai connettendo a Github per lavorare su un repository, stai copiando il codice da Github nel tuo repository locale e ci stai lavorando.

Quando vuoi inviare modifiche, puoi eseguire commit ed eseguire git push, inviando i tuoi aggiornamenti a un determinato “remoto,” che può essere qualsiasi altro repository Git, ma di solito è un servizio ospitato online come Github, Bitbucket o Gitlab. Questo aggiorna il repository remoto in modo che sia sincronizzato con il tuo repository.

Tuttavia, questo funziona solo quando si dispone dell'autorizzazione per eseguire il push dei commit, solitamente configurati con una password o una chiave SSH. Questo viene dato solo ai membri dell'organizzazione che controllano il repository, altrimenti tutti potrebbero alterare la cronologia di Git. Se non sei un membro dell'organizzazione, cosa devi fare quando vuoi apportare modifiche?

Beh, c'è un secondo modo in cui un repository Git può essere aggiornato&#8212 ;git tirare. Probabilmente lo fai spesso ogni volta che i tuoi colleghi apportano modifiche che vengono spinte. In tal caso, stai scaricando i commit dal repository remoto e sincronizzandoli con il tuo repository locale.

Annuncio

Ma Git è decentralizzato, quindi non c'è davvero alcuna differenza tra il tuo repository e il repository remoto. Puoi effettivamente eseguire git pull al contrario, dal server, e questo è il cuore di ciò che fa funzionare le richieste pull.

Una richiesta pull è solo tu che dici al server remoto (e alle persone che lo gestiscono) che hai dei commit aggiornati che vorresti che esaminassero e si integrassero con il repository remoto. Se accettano le modifiche, il repository remoto eseguirà git pull sul tuo repository locale, integrando il codice senza che tu debba mai avere una chiave SSH autorizzata a farlo.

La spina dorsale della collaborazione open source

Le richieste pull vengono utilizzate costantemente per le librerie open source. Dopotutto, gran parte del motivo per l'open source è che qualsiasi sviluppatore può contribuire al progetto se il suo codice è utile.

Le pull request sono ciò che lo fa funzionare. I manutentori del progetto, gli amministratori che ne hanno il controllo, sono quelli che in genere esaminano le richieste pull e decidono se integrare o meno il codice o se è necessario correggere determinati bug prima che sia pronto. /p>

Le richieste pull non sono esattamente una funzionalità di git stesso, quindi l'esatta implementazione di esse varia a seconda del servizio. Ma, per Github, troverai le richieste pull nella barra dei menu di un repository, che mostra un elenco di richieste aperte e chiuse che puoi filtrare.

Se fai clic su uno di essi, puoi visualizzare i commenti fatti dal richiedente, così come i commit ad esso associati.

Annuncio

Se sei il manutentore del repository, puoi rivedere e unire la richiesta. Oppure, se hai problemi da discutere, puoi lasciare un commento e lavorare insieme sul codice. Questa è una grande ragione per cui gli spazi pubblici come Github sono ottimi per la collaborazione open source, anche qualcosa di semplice come cambiare la formulazione della documentazione può essere fatto in modo collaborativo da chiunque.

Le pull request sono diverse dai problemi. Il monitoraggio dei problemi è una funzionalità di molti servizi come Github che consente una facile correzione dei bug e la collaborazione pubblica per nuove funzionalità. Essenzialmente, ogni problema ha un argomento che può essere discusso dai manutentori e dalla comunità. Ad esempio, dotnet/csharplang è il repository ufficiale per la discussione su come è progettato C# come linguaggio di programmazione. Se vai ai problemi, troverai molte persone che discutono concetti per future iterazioni del linguaggio:

Non tutti i problemi portano a richieste pull. Se il problema viene risolto dal manutentore, non importa. Se il problema viene risolto da un collaboratore, dovrà inviare una richiesta pull.

Tutte le richieste pull vengono negate o portano direttamente a modifiche del codice nel repository. I problemi sono solo un modo per tenere traccia dei progressi dello sviluppo e dei bug che devono essere corretti.

Effettuare richieste pull

Ancora una volta, l'esatto i passaggi per questo variano a seconda del servizio che stai utilizzando, ma la maggior parte della collaborazione open source avviene su Github, quindi mostreremo i passaggi per questo.

Vai al repository per il quale desideri effettuare una richiesta e fai clic su “Nuova richiesta pull” nella scheda Richieste pull:

Pubblicità

Tu avere due opzioni qui. Se sei un membro del repository e desideri unire il tuo feature branch nel master branch, puoi selezionare i due branch.

Se stai lavorando su un open-source repository, dovrai eseguire il fork del repository e inviarlo a Github con il tuo account. Quindi, puoi selezionare “confronta tra fork” per unire il tuo ramo principale nel loro ramo principale.

Una volta fatto, la richiesta pull sarà aperta per la discussione e dovrai semplicemente aspettare di sentire la risposta dai manutentori.

Nel frattempo, puoi controllare lo stato di tutte le richieste pull in cui sei coinvolto con le “richieste pull” scheda nella barra dell'intestazione principale.