Acest lucru s-a derivat din întrebarea mea anterioară: Pot selecta cine poate contribui la proiectul meu open source?
Nu am mai lucrat niciodată la software open source și nu am dezvoltat propriile mele aplicații pe care sper să le lansez uneori în App Store vara asta, „nu sunt familiarizat cu modul în care este cel mai open source structurile de dezvoltare sunt înființate (furculițe, depozite principale …).
Un lucru care a apărut a fost menționarea unei cereri de extragere. Ce este mai exact o cerere de extragere?
Răspuns
Termenul „pull request” provine de la git
, unde git pull
comanda este utilizată pentru a îmbina un depozit diferit în cel local. Deci, dacă altcineva are o copie a repozitoriului dvs. git
și îi face modificări pe care le-ar dori dvs. pentru a încorpora, vă pot cere să pull
modificările din depozitul lor; „re requesting a pull
, de unde și termenul„ pull request ”.
În prezent, pentru majoritatea utilizatorilor, acest lucru tinde să fie ascuns în spatele unei interfețe grafice de un fel, pe Github sau Bitbucket sau prin Gerrit de exemplu; dar principiul rămâne același: cineva vă copiază depozitul, face modificări și solicită ca acestea să fie îmbinate în propria copie, probabil după ce le-ați revizuit.
Comentarii
- Git are și o comandă
git request-pull
. Aceasta produce un mesaj scris pe care îl puteți trimite altcineva, invitându-i să foloseascăgit pull
pentru a încorpora munca ta în copia lor a software-ului. - Nu poate fi explicat mai clar pentru începători.
Răspuns
Dacă aveți sisteme control versiune distribuite , fiecare dezvoltator are o copie a depozitului complet. Dacă schimbați ceva în software, vă confruntați cu modificările depozitului dvs. local. Dacă diferite depozite ar trebui să aibă aceste modificări, puteți împinge modificările (mutând modificările într-un alt depozit aveți dreptul să scrieți) sau trageți modificările (copiați revizia de aici m alte depozite la propriul dvs.). Deoarece mulți proiecte au un depozit principal, o cerere de extragere este solicitarea ca întreținătorul să treacă modificările dvs.
Citind un pic pe el , se pare că termenul este folosit și pentru controlul de versiune nedistribuit, dacă un utilizator solicită includerea patch-urilor sale în ramura principală a proiectului. O altă lectură specială pentru github: https://help.github.com/articles/using-pull-requests/
Răspuns
O cerere de extragere este legată de sistemele de control al versiunii. Este posibil să aveți mai multe seturi de utilizatori:
- Administratori / Proprietari
- Contribuitori
- Testatori
Doriți fiecare dintre acești oameni să poată face lucruri diferite:
- Administratori / Proprietari
Aceste persoane pot avea încredere. S-ar putea să aibă acces complet la depozitul în cauză, inclusiv drepturi depline de a comite ceea ce vor atunci când doresc. - Colaboratori
Acestea ar putea fi persoane aleatorii de pe Internet; ar putea fi oameni mai mici într-o companie. Oricum ar fi, probabil că nu doriți ca aceștia să poată să se angajeze direct în baza de cod – doriți mai întâi să examinați modificările lor.
Aici intervin cererile de extragere. În loc să permiteți modificări directe ale bazei de cod de la colaboratorii dvs., ei vor bifurca depozitul, creând o copie pe computerul lor local și o vor dezvolta. Când vor termina, pot crea o cerere de extragere care să conțină actualizarea lor cod. Cineva din grupul superior poate apoi să-și revizuiască modificările pentru a verifica corectitudinea și complicitatea cu standardele și să fuzioneze modificările lor dacă respectă.
Comentarii
- Puțin dezactivat subiectul, dar chiar și acele persoane care își pot îmbina direct propriile modificări ar trebui să trimită PR-uri pentru ca colegii lor să le examineze. Presupunând că ' lucrați într-o echipă care este. Dacă ' nu sunteți, cred că ' este ceea ce CodeReview este pentru.
- OK. Deci, pașii sunt: furcați repo-ul principal, trageți-l pe computerul dvs., îl modificați, comiteți și împingeți la ramura dvs. furcată și apoi solicitați administratorului să tragă și să fuzioneze din ramura dvs. furcată în principal?
Răspuns
O cerere pull (PR) este o metodă de trimitere a contribuțiilor la un proiect de dezvoltare deschis. Apare atunci când un dezvoltator solicită ca modificările angajate într-un depozit extern să fie luate în considerare pentru a fi incluse în depozitul principal al unui proiect după evaluarea inter pares.
Sursă: Ce este o cerere Pull? la OSS Watch
Exemplu simplu este atunci când clonați / bifați depozitul open source, efectuați unele modificări / confirmări și, pentru a îmbina modificările în depozitul principal, vi se cere să trimiteți cererea de extragere care constă în toate confirmările dvs. grupate într-o singură bucată logică, astfel încât să poată fi revizuit de alți dezvoltatori.
Acest lucru are unele avantaje față de angajamentele standard și împinge, deoarece aveți câteva perechi de ochi suplimentare de verificat și evitați problemele comune / ascunse / greșeli înainte de modificările efective.
Vedeți câteva exemple de PR:
- GitHub aici sau aici
- Recenzii cod Chromium (echivalent cu pull-request)