GitHub a devenit piatra de temelie pentru toate programele open source. Dezvoltatorii îl iubesc, colaborează și construiesc în mod constant proiecte minunate prin intermediul acestuia. În afară de găzduirea codului nostru, atracția principală a lui GitHub o folosește ca un instrument de colaborare. În acest tutorial, să explorăm unele dintre cele mai utile funcții GitHub, în special pentru a lucra în echipe, făcând-o tot mai eficientă, productivă și, cel mai important, distractivă!
Un lucru pe care îl consider foarte util este integrarea Github Wiki în proiectul cu cod sursă principal.
Acest tutorial presupune că sunteți deja familiarizat cu Git, sistemul de control al versiunii distribuite open source, creat de Linus Torvalds în 2005. Dacă aveți nevoie de o revizuire sau de o căutare în Git, vizitați cursul precedent sau chiar câteva postări. De asemenea, ar trebui să aveți deja un cont Github și ați făcut câteva funcții de bază, cum ar fi crearea unui depozit și împingerea modificărilor la Github. Dacă nu, treceți la mai multe tutoriale din trecut.
În lumea proiectelor software, este inevitabil să ne găsim într-o echipă care să realizeze un proiect. Pentru acest tutorial despre Github și colaborarea în echipă, vom explora unele dintre cele mai comune instrumente de care avem nevoie în general atunci când lucrăm cu echipe de software. Instrumentele discutate sunt:
Dacă preferați un screencast pentru o plimbare vizuală, treceți chiar mai jos pentru al vizualiza și consultați acest tutorial sub forma unor note:
În general, există două modalități de a crea Github pentru colaborarea în echipă:
Dacă supravegheați mai multe echipe și doriți să setați diferite niveluri de permisiune pentru fiecare echipă cu diferiți membri și să adăugați fiecare membru în diferite depozite, organizația ar fi cea mai bună opțiune. Orice cont de utilizator Github poate crea deja organizații gratuite pentru depozite de cod open source. Pentru a crea o organizație, pur și simplu răsfoiți pagina de setări a organizației:
Pentru a accesa pagina de echipe pentru organizația dvs., puteți merge pur și simplu la http://github.com/organizations/[organization-name]/teams
pentru a le vedea sau chiar a vizita https://github.com/organizations/[organization-name]/teams/new
pentru a crea noi echipe cu membrii a 3 niveluri diferite de permisiune, cum ar fi:
Colaboratorii sunt obișnuiți să ofere ambele Citiți + Scriere acces la un singur depozit deținut de un cont personal. Pentru a adăuga colaboratori, (alte conturi personale Github) mergeți doar la https://github.com/[username]/[repo-name]/settings/collaboration
:
Odată ce acest lucru va fi realizat, fiecare colaborator va vedea o modificare a stării de acces pe pagina de depozit. După ce avem accesul Scriere la depozit, putem face a git clone
, lucrați la schimbări, faceți a git trageți
pentru a prelua și a îmbina toate modificările în depozitul de la distanță și în cele din urmă git push
, pentru a actualiza depozitul la distanță cu modificările proprii:
Cererile de tragere sunt o modalitate minunată de a contribui independent la un depozit prin forarea acestuia. La sfarsitul zilei, daca dorim, putem trimite o solicitare de tragere catre proprietarul depozitului pentru a ne fuziona schimbarile de cod. Cererea de tragere în sine poate declanșa dezbaterile privind calitatea codului, caracteristicile sau chiar strategia generală.
Să trecem acum la pașii de bază pentru o cerere de tragere.
Există două modele de solicitare de tragere în Github:
Aici vedem fluxul de lucru între doi utilizatori (repo-proprietar
și bifurcată-repo-proprietar
) pentru modelul Fork and Pull:
git push
sau git trageți
. Apoi, vom clona acest depozit la mașina noastră locală: $ git clone [ssh-url] [nume-folder] $ cd [nume-folder]
readme.md
fişier: $ git checkout -b [caracteristică nouă]
$ git add. $ git commit -m "informații adăugate în readme" $ git master checkout
git push [git-alias de la distanță] [branch-name]
: $ git branch * master readme $ git la distanță -v origine [email protected]: [forked-repo-owner-username] / [repo-nume] .git (fetch) origine [email protected]: proprietar-nume de utilizator] / [repo-nume] .git (push) $ git push origine readme
Dacă sunteți proprietarul original al depozitului, există două modalități de a îmbina o solicitare de tragere primită:
Există diferite modele de ramificare utilizate pentru versiuni în echipele de dezvoltare software. Iată două modele populare de flux de lucru git: (1) flux de lucru Github care are un model simplu de ramificare și utilizează cereri de tragere și (2) Gitflow care are o ramificare mai extinsă. Modelul care va fi ales în cele din urmă va varia în funcție de echipă, de proiect și de situație.
Cererile de tragere sunt o modalitate minunată de a contribui independent la un depozit prin forarea acestuia.
În Github, centrul pentru toate urmăririle de erori sunt Problemele. Chiar dacă acestea sunt în primul rând pentru urmărirea erorilor, este de asemenea util să utilizați problemele în următoarele moduri:
Să explorăm câteva dintre caracteristicile problemelor:
Remedieri / Fixe sau Închidere / Închidere / Închis # [număr de emitere]
va închide automat problema. $ git add. $ git commit -m "corectat url. stabilește # 2" $ git push master de origine
#[Număr de emitere]
în mesajele lor. Deoarece numerele de problemă sunt hiperlinkate, acest lucru face foarte ușor să menționăm problemele legate de acestea în timpul discuțiilor.Este clar că ne putem cupla strâns lista de sarcini și actualizările comitetelor noastre de cod.
Există două instrumente care oferă o perspectivă asupra unui depozit - Grafice și Rețea. Github Graphs oferă o perspectivă asupra colaboratorilor și se angajează în spatele fiecărui depozit de coduri, în timp ce Github Network furnizează o vizualizare a fiecărui colaborator și a angajamentelor sale în toate depozitele cu furcă. Aceste analize și grafice devin foarte puternice, mai ales atunci când lucrează în echipe.
Graficele oferă analize detaliate, cum ar fi:
Github Network este un instrument puternic care vă permite să vedeți comitetele fiecărui colaborator al fiecărui contribuitor și modul în care sunt legate una de cealaltă. Când ne uităm la vizualizator în întregime, vedem fiecare comitere pe fiecare ramură a fiecărui depozit care aparține unei rețele. Profund!
În timp ce problemele Github au capacități de gestionare a proiectelor cu probleme și repere, unele echipe ar putea prefera un alt instrument din cauza altor funcții sau a fluxului de lucru existent. În această secțiune, vom vedea cum putem lega Github cu alte două instrumente populare de gestionare a proiectelor - Trello și Pivotal Tracker. Cu ajutorul cârligelor de service Github, putem automatiza activitatea de actualizare cu comitete, probleme și multe alte activități. Această automatizare ajută nu numai la economisirea timpului, ci și la creșterea corectitudinii actualizărilor pentru orice echipă de dezvoltare software.
Trello oferă un mod simplu, vizibil de gestionare a sarcinilor. Folosind metodologiile de dezvoltare a software-ului Agile, cardurile Trello pot emula un simplu board virtual Kanban. De exemplu, vom crea automat o cartelă Trello ori de câte ori o cerere de tragere este făcută folosind Github Service Hooks. Să trecem pe trepte!
JETON
sub Instalați notele # 1 cu hyperlinkul furnizat pentru autentificare.id de listă
pentru fiecare carte Trello. BOARDID
face parte din adresa URL atunci când vizităm comanda la https://trello.com/board/[BOARD-NAME]/[BOARDID]
. JETON
pot fi create cu hyperlink-ul dat în Install Notes # 1. id de listă
si jeton
. Verificați Active, Test Cârlig și suntem toți pregătiți să obținem actualizări automate de fiecare dată când există o solicitare de tragere. Pivotal Tracker este un alt instrument ușor de gestionat pentru proiecte agile, unde planificarea bazată pe povesti permite echipei să colaboreze cu ușurință, reacționând instantaneu la diverse schimbări și progrese ale proiectului. Pe baza evoluției actuale a echipei, aceasta poate crea și diagrame pentru a analiza viteza echipei, arderea iterației, arderea lansărilor etc. În acest scurt exemplu, vom difuza în mod automat o poveste prin legarea acesteia la o comisie Github!
git commit -m "mesaj [livrează #tracker_id]"
$ git add. $ git commit -m "Cârligele Github și Pivotal Tracker implementate [livrează # 43903595]" $ git push
Cu aceste exemple Trello și Pivotal Tracker, este clar că ne putem cupla strâns lista de sarcini și actualizările comenzilor noastre de cod. Acesta este un imens timp de economisire atunci când lucrează într-o echipă, și îmbunătățește acuratețea atunci când se leagă sarcini de comiterea exactă. Vestea bună este că, dacă utilizați deja alte instrumente de gestionare a proiectelor, cum ar fi Asana, Basecamp și altele, puteți crea și cârlige de service într-un mod similar. Dacă nu există cârlige de service existente pentru instrumentul actual de gestionare a proiectelor, puteți crea chiar unul!
Integrarea continuă (CI) este o parte importantă a tuturor proiectelor de dezvoltare software care lucrează cu echipe. CI asigură că, atunci când un dezvoltator verifică în codul lor, o construcție automată (inclusiv teste) detectează erorile de integrare cât mai repede posibil. Acest lucru reduce cu siguranță erorile de integrare și face repetarea rapidă mult mai eficientă. În acest exemplu, vom vedea cum poate fi folosit Travis CI cu Github pentru CI pentru a detecta erorile, precum și pentru a recomanda îmbinarea atunci când trece toate testele.
Vom folosi un simplu proiect "hello-world" pentru node.js cu grunt.js ca instrument de construire pentru a configura un proiect Travis CI. Iată fișierele din proiect:
hello.js
fișierul este proiectul nodului. Aici vom lăsa în mod intenționat un punct și virgulă astfel încât să nu treacă instrumentul de construire a gruntului pentru a linge: var http = necesită ("http"); http.createServer (funcția (req, res) res.writeHead (200, 'Content-Type': 'text / plain');) res.end ('Hello World in Node! \ n') // fără punct și virgulă , aceasta nu va trece linting). asculta (1337, '127.0.0.1'); console.log ("Serverul rulează la http://127.0.0.1:1337/");
package.json
denotă dependențele: name: "hello-team", "description": "Un demo pentru github și travis ci pentru colaborarea în echipă", "author": "name"," versiunea ":" 0.0.1 "," devDependencies ": " grunt ":" ~ 0.3.17 "," scripts ": " test ":" grunt travis --verbose "
gruntjs
instrumentul de construire are doar o singură sarcină (linging) doar pentru simplitate: modul.exports = funcție (grunt) grunt.initConfig (lint: fișiere: ['hello.js']); grunt.registerTask ("implicit", "lint"); grunt.registerTask ("travis", "lint"); ;
.travis.yml
este un fișier de configurare Travis care va face Travis să ruleze testele noastre: limbă: node_js node_js: - 0.8
git push
pentru a declanșa construirea primului Travis și dacă totul este în regulă, vizitați http://travis-ci.org/[username]/[repo-name]
pentru a vedea starea de construire ca trecere! Anterior, fără CI în procesul de solicitare de tragere, pașii au mers așa ceva (1) au trimis testul de solicitare (2) fuzionare (3) pentru a vedea dacă trece / eșuează. Cu Travis CI cuplat cu cererile de tragere, vom putea inversa pașii 2 și 3, sporind tot mai rapid luarea deciziilor cu privire la faptul dacă este sau nu bine să fuzăm cu Travis, oferindu-ne statutul cu fiecare solicitare de tragere. Să vedem cum să se întâmple asta.
Travis CI cu Github este extrem de util pentru echipe datorită construirii automate și notificării imediate. Cu siguranță, ciclul de corectare a erorilor este mult mai scurt. Dacă utilizați Jenkins, un alt instrument popular CI, da, puteți configura și cârligele de service Github în mod similar.
Cu fiecare angajament, Github permite o interfață curată pentru comentarii generale sau chiar pentru comentarii specifice pe o linie de cod. Abilitatea de a ridica comentarii sau întrebări pe fiecare linie de cod este foarte utilă în a face linii de comentarii de coduri de linie. Pentru a vizualiza comentariile inline, comutați comanda on-off de pe caseta de selectare din dreptul fiecărei comitete.
Să explorăm câteva modele de adrese URL care pot fi folosite pentru a ne ajuta să examinăm codul, oferindu-ne rapid diferențele dintre comitete:
https://github.com/[username]/[repo-name]/compare/[starting-SHA1]... [ending-SHA1]
. Puteți face același lucru cu ramura sau etichetele. ?w = 1
la urlurile de comparare .dif
pentru a compara adresele URL pentru a obține git diff
informații în text simplu. Acest lucru ar putea fi util în scopuri de scripting..plasture
pentru a compara adresele URL pentru a obține git diff
informații formatate pentru trimiterile de e-mail pentru patch-uri.#linia
la sfârșitul adresei URL și a face ca întreaga linie de fundal să fie galbenă. Acest lucru este bine pentru a arăta linia exactă. De asemenea, acceptă intervalele de linie prin adăugarea # Start-end
. Iată câteva exemple de legare a liniei și de legare la nivel de linie.În această secțiune, vom explora două metode de documentare:
Un Github Wiki poate fi creat cu fiecare depozit, iar acest lucru poate fi extrem de util pentru a pune ambele coduri sursă și documentația în același depozit. Pentru a crea Wiki, trebuie doar să accesați fila Wiki din antetul principal și să setați să creați pagini cu informații. Wiki în sine are propria versiune, iar datele pot fi clonate în mașina noastră locală pentru actualizări sau chiar acces offline.
Un lucru pe care îl consider foarte util este integrarea Github Wiki în proiectul principal al codului sursă, astfel încât să nu trebuiască să mențin două proiecte separate GIT. Pentru a face acest lucru, adaug Wiki git repo ca un submodul din ramura master. Dacă utilizați Travis CI sau orice alt CI, asigurați-vă că instrumentul de construcție ignoră submodulul wiki. Pentru fișierul Travis CI .travis.yml
, adăugați următoarele:
git: submodule: false
Apoi adăugați un wit submodul git la depozitul de coduri principale:
$ git submodule adăugați [email protected]: [username] / [repo-name] .wiki.git Clonarea în 'hello-team.wiki' ... remote: Numărarea obiectelor: 6, terminat. la distanță: comprimarea obiectelor: 100% (3/3), terminat. la distanță: Total 6 (delta 0), refolosit 0 (delta 0) Obiectele primite: 100% (6/6), terminat. $ git add. $ git commit -m "wiki adăugat ca submodul" $ git push master de origine
În prezent, Wiki va apărea ca un submodul în cadrul proiectului principal de cod sursă.
Hubot, pe scurt, poate adăuga extraordinar de multă distracție în documentarea și notificarea discuțiilor de echipă cu privire la comitete importante.
Hubot este pur și simplu un bot de chat care poate prelua informații sau poate oferi notificări atunci când este conectat la comitete, probleme sau activități Github. Într-o echipă care încearcă să reducă în mod semnificativ întâlnirile sau chiar să le elimine total, Hubot, cu o interfață de chat între membrii echipei, ajută la documentarea fiecărei discuții. Cu siguranță promovează o perioadă de lucru flexibilă, deoarece nimeni nu trebuie să fie prezent în același timp pentru a avea loc discuții. Avertisment: Hubot este extrem de dependență!
Cu aceasta, să începem cu instalarea lui Hubot găzduit pe Heroku și ca un bot cu interfața de chat Campfire! Atât pentru Heroku cât și pentru Campfire, există versiuni gratuite pentru a începe.
Nu se poate obține /
deoarece nu există nimic de obținut în mod implicit.Ajutor Hubot
. Va va da toate comenzile disponibile pentru hubot. hubot-l navă
sau hubot harta mea CERN
. github-commits.coffee
în interiorul script-uri
pliant.package.json
fișier cu dependențele relevante, așa cum este instruit în partea de sus a fiecărui fișier script hubot sub comentarii.git push master heroku
.[HUBOT_URL]: [PORT] / hubot / gh-comite o cameră = [ROOM_ID]?
Verificați alte scripturi Hubot legate de Github, sau dacă doriți să scrieți, există un tutorial minunat și pentru asta! Hubot, pe scurt, poate adăuga foarte mult distracție în documentarea și notificarea discuțiilor în echipă cu privire la comitetele, problemele și activitățile importante care au loc cu depozitele noastre Github. Incearca!
Ca o notă finală privind colaborarea cu echipa pe Github, iată câteva sfaturi despre productivitate:
@utilizator
iar utilizatorul va primi notificarea comentariului[schimb] + ?
pentru a accesa cheile de comenzi rapide Github pe orice pagină.Majoritatea dintre noi ne vom gândi să folosim Github numai pentru proiectele software. La urma urmei, Github a fost demarat pentru "codificare" socială. Dar, există câteva depozite Github cool care sunt folosite pentru proiecte non-codare și au fost la fel de minunate pentru colaborare și discuții. Deoarece aceste proiecte sunt, de asemenea, open source și oricine poate contribui, este rapid pentru a repara erorile, pentru a raporta cu ușurință bug-uri și pentru a colabora eficient cu oameni asemănători. Doar pentru distracție, iată câteva dintre ele:
Și întrebam ce gândește echipa Github?
"Folosim utilizările distractive ale lui GitHub ca acesta"