Wat is het beste proces voor codereview bij gebruik van GIT? We hebben een externe GIT-provider (Unfuddle) en hebben limieten voor het gebruik van bronnen – dus we kunnen “geen speciale externe opslagplaatsen hebben voor elke ontwikkelaar.
Huidig proces:
- We een GIT-server hebben met een
master
branch waarnaar iedereen committeert - Devs werken vanuit de lokale
master
mirror of een lokale feature branch - Devs pushen naar server “s
master
branch - Devs vragen om codebeoordeling bij laatste commit
Probleem:
- Elke bug in de codebeoordeling is al onder de knie tegen de tijd dat hij wordt opgemerkt.
- Erger nog, meestal heeft iemand een paar uur geprobeerd om erachter te komen wat er is gebeurd …
We zouden dus graag
- codebeoordeling willen doen VOORDAT het in de “master” wordt afgeleverd.
- Zorg voor een proces dat werkt met een wereldwijd team (geen over the shoulder reviews!)
- iets waarvoor geen individuele ontwikkelaar aan zijn bureau / machine hoeft te zitten worden aangezet zodat iemand anders de i n (menselijke afhankelijkheid verwijderen, ontwikkelaars gaan in verschillende tijdzones naar huis)
We gebruiken TortoiseGIT voor een visuele weergave van een lijst met gewijzigde bestanden, verschillende bestanden enz. Sommigen van ons gaan naar een GIT-shell als de GUI niet “genoeg is, maar idealiter” zouden we “willen dat de workflow eenvoudig en GUI-gebaseerd is (ik wil dat de tool elke last wegneemt, niet mijn ontwikkelaars).
Opmerkingen
- Doe je een unit-test voordat je vastlegt?
- @GuyCoder: meestal wel.
- Als je host geen codebeoordeling geeft vermogen, zoek een betere gastheer. Kijk eens naar Gerrit, en kijk of je een host kunt vinden die dit aanbiedt.
Answer
A eenvoudig maar effectief model is het GitHub pull request -model, waarbij bijdragers “alstublieft samenvoegen in mijn code” -verzoeken indienen. Een onderhouder beoordeelt de wijzigingensets en beslist of ze meer werk nodig hebben of dat ze geschikt zijn om samen te voegen. Hij kan dan fuseren met de master branch. Committers mogen over het algemeen niet direct pushen naar de master branch (dit kan naar jouw smaak worden aangepast, we staan “minor” commits toe om direct naar binnen te gaan).
Reacties
- We hebben een hecht team van 7 professionele ontwikkelaars (versus anonieme medewerkers) wereldwijd, dus het is veilig om ze allemaal direct naar onze externe master te laten pushen. Hoewel het ' een link + intro versus een op zichzelf staand antwoord is waar ik de voorkeur aan geef, is het in dit geval logisch. Geweldig bericht op link, bedankt!
- @Sid Met een team van 3 zou ik ' ze niet allemaal laten pushen om het onder de knie te krijgen.
- Pull-verzoeken zijn ook beschikbaar in Rhodecode en Atlassian Stash.
- @Andrew: waarom niet? Er zijn veel problemen die kunnen worden gegenereerd door het hele team door een knelpunt te leiden. Deze kunnen allemaal worden verzacht, maar een commando- en controlestructuur met één punt is geschikter voor sommige situaties dan voor andere.
Answer
Git is een gedistribueerd versiebeheersysteem: heb niet maar één repo met één branch!
Je kunt meerdere repositories opzetten – een voor elke ontwikkelaar – en een andere die de master repo is. Wanneer een van hun branches klaar is om te worden samengevoegd, vraagt de ontwikkelaar om een merge en worden hun wijzigingen van hun branch / repo naar de master getrokken.
Voordat die merge daadwerkelijk plaatsvindt, kan de reviewer de wijzigingen binnenhalen hun omgeving, en bekijk ze voordat je ze pusht om ze onder de knie te krijgen.
Bijkomende voordelen zijn dat een ontwikkelaar op deze manier zoveel branches kan hebben als ze willen, genaamd wat ze maar willen, zonder met elkaar te interfereren of zelfs maar om elkaars vuile was zo vaak te zien.
Leer ook het jargon: met “Devs commit to server” s master branch “bedoel je dat ze pushen hun wijzigingen naar master?
Reacties
- ja, ze
push
hun werk. We kunnen ' geen unieke externe repositories op de GIT-server hebben omdat we een GIT-hoster betalen en deze kosten per repository in rekening brengen. Bedoelde je dat je meerdere externe vestigingen per ontwikkelaar hebt? En als je zegtthe reviewer can pull the changes into their environment
welke exacte GIT-commandos (of TortoiseGIT-flow) bedoel je dan? - Nee, ik bedoel dat je meerdere repositories hebt; één per ontwikkelaar, en op die repository kunnen ze zoveel branches hebben als ze willen. Wat betreft
pull
, ik weet niet ' wat het commando zou zijn in TortoiseGIT – maar het is git pull . Het ' is het tegenovergestelde van een push – je haalt wijzigingen uit de externe repository om je omgeving bij te werken met werk dat andere ontwikkelaars mogelijk hebben gedaan. - Ik weet het
git pull
🙂 …Ik vroeg om de volledige syntaxis om het repo / branch / tag-systeem te inspecteren op push / pulls waarnaar je verwees. Op dit moment doen wegit pull
hoe dan ook, het ' is net buiten remote: master – wat de problemen veroorzaakt. Hoe dan ook, de links van Steven ' waren geweldig. Bedankt - Voor alle praktische doeleinden in dit geval is een branch in de gehoste repo precies hetzelfde als een andere repo.