"I dag skal jeg fortelle deg om de to mest populære versjonskontrollprogrammene: SVN og Git."

"SVN fungerer omtrent slik jeg beskrev i forrige leksjon. Git er litt mer komplisert, og jeg planlegger å diskutere det mer detaljert."

"Kan du gi meg lenker til dokumentasjonen for SVN og Git?"

"Selvfølgelig, bare et sekund."

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (dette er rett og slett et mesterverk)

"Så, Git ."

"Det er litt mer komplisert enn SVN.  Med Git har hver bruker sitt eget lokale depot i tillegg til serverlageret. "

"Så hvor forplikter du deg til?"

"Brukere forplikter seg alltid til sitt lokale depot."

"Men hva med serverlageret?"

"For å synkronisere de lokale og serverlagrene er det spesielle Pull- og Push-kommandoer .

"Det er en grunn til dette. Noen ganger må en programmerer gjøre mye arbeid på egen hånd, noe som kan innebære flere hundre forpliktelser før det kan legges til det delte depotet."

"For å gjøre dette i SVN, må du starte en egen gren, og deretter slå den sammen med stammen."

"Med Git forplikter du deg rett og slett alltid til det lokale depotet, og sender deretter alle endringene som en batch til det sentrale depotet på serveren når du er ferdig."

"Denne metoden kan virke litt overdreven når du bare skriver litt kode. Men når oppgavene dine er så store at de strekker seg over uker, så forstår du at du ikke bare kan skrive det hele tiden uten å forplikte deg."

"Hvorfor kan du ikke bare jobbe i to uker, og deretter forplikte endringene dine til serveren én gang?"

"Vel, et versjonskontrollprogram tilbyr mange bekvemmeligheter."

"Se for deg at du forplikter deg hver dag, og på den 10. dagen oppdager du at endringene du har gjort de siste to dagene ikke vil fungere som planlagt. Og du vil gå tilbake til koden du hadde på den 8. dagen og nærme deg oppgaven annerledes."

"Du ruller ganske enkelt tilbake endringene som er gjort i det lokale depotet de siste to dagene og går tilbake til ønsket tilstand. Dette er kjent som en tilbakerullingsoperasjon ."

"Sier du meg at du kan gjøre det?"

"Jepp. I tillegg, fordi commit-historikken er lagret, kan du finne ut når og hvorfor noe ble begått, og av hvem, de relevante funksjonene/bugs, og hvilke ti filer som samtidig ble modifisert som en del av dette arbeidet."

"Anta at noens feilretting bryter andres kode. Du kan bare rulle tilbake ( rull tilbake ) koden og fortsette som om endringen aldri skjedde."

"OK, det er kult. Jeg er overbevist. Kan du vise meg et par eksempler som illustrerer hvordan alt dette fungerer?"

"Sikker."

"Slik kloner du sentrallageret til din lokale datamaskin:"

Forpliktelser og grener - 1

"Så Checkout-operasjonen er ikke lenger nødvendig."

"Jepp. Og her er eksempler på push- operasjoner:"

Forpliktelser og grener - 2

"Og Pull- operasjoner:

Forpliktelser og grener - 3

"Ah. Det gir mer eller mindre mening."

"Forresten, det er en kul tjeneste som heter GitHub."

"Enhver programmerer kan registrere seg der og lage sine egne Git-repositories. Jeg foreslår at du blir mer kjent med det."

"Her er noen nyttige linker:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"Merk at det er ganske mange Git-klienter."

"For det første er det   GitBash , som lar deg skrive inn tekstkommandoer."

"Så er det TortoiseGit , som er et godt program innebygd i Windows Utforsker. Det lar deg jobbe med filer i et Git-lager direkte i Utforsker."

"IntelliJ IDEA støtter Git og lar deg utføre alle slags komplekse kommandoer med bare et par klikk direkte fra miljøet."

"Så, hvilken bør jeg lære?"

"Jeg anbefaler at du blir kjent med dem alle."

"Du vil bestå intervjuet ditt og komme på jobb. Du vil få en lenke til Git, et brukernavn og passord - og det er det. Da er du alene."

«Hva mener du, «på egen hånd»?»

"Jeg mener du vil sette opp Git selv, ta en kopi av depotet selv,..."

"Og så må du bygge og prøve å kjøre prosjektet."

"Byggeinstruksjonene vil også mest sannsynlig være i Git-depotet, sammen med prosjektdokumentasjonen."

"Teamlederen din kommer bort til deg om kvelden og sier:  «Vel, hva har du funnet ut så langt?» "

"Og du vil si," Jeg prøver å sette opp Git her, men har ikke hatt noen suksess ennå. "Du kommer ikke til å sparke meg, ikke sant?" "

"Eller mens det fortsatt er middag, kan du gå til teamlederen og si:  «Jeg installerte Git, trakk prosjektet og bla gjennom dokumentasjonen, men det er hundrevis av filer og jeg har ikke ordnet alt ennå. Hvor er gjeldende byggeinstruksjoner?'» "

"Kan du føle forskjellen?"

"Ja. I det andre tilfellet er jeg en superrockstjerneprogrammerer, men i det første er jeg en robo-doofus som ikke engang vet hvordan jeg skal hente et prosjekt fra Git. Med andre ord, jeg skrudde opp før jeg i det hele tatt begynte å programmere. Jeg antar at etter det ville de ikke engang la meg skrive kode."

"Se, du svarte på dine egne spørsmål. Så studer og finn ut av det. Ingen vil gjøre det for deg."

"Du skal ikke hjelpe meg?"

"Jeg har allerede hjulpet. Vi lærer Java her, i tilfelle du har glemt det. For alt annet er du alene. Eller er hodet ditt bare for å drikke?"

"Ok, jeg skjønner det. Takk, Bilaabo!"