Uspešen branchs model v GIT

Poznavanje uporabe GIT je pomembno, in to vključuje ohranjanje sodelovalnega razvoja programske opreme, obvladljive.

Kreditov

Ta objava je Portugalska različica prvotnega, V angleškem jeziku, “Uspešen kreten razvejane model“, ustrezno pooblasti avtor, Vincent Driessen (C). Hvala človek!

Iz tehničnih razlogov, nekatere ključne besede so namenoma hranijo v angleškem jeziku. Poskušal sem zagotoviti izvirnost besedila, ampak priznam, da sem moral narediti prilagoditve za olajšanje razumevanja v našem jeziku (EN-US). Vsak popravek ali predlog za izboljšanje prevajanja je dobrodošel.

Uvod

To ni post poučevanje, kako uporabljati GIT. Če je to tisto, kar potrebujete, jaz spodbuditi taking a gledati Priročnik za kreten. Prav tako ni naš cilj, da pokažejo, kako narediti programsko opremo različic, v tem primeru, Videli Semantična Versioning.

Tukaj je predlog za upravljanje sodelovanja ekipe v programski opremi različic. Veš, ko imate več programerjev “Mešanjem” v isti izvorni kodi? To je pomembno za pospešitev razvoja, vendar pa lahko ustvarijo veliko glavobol (poškodbe in predela) Če ni nadzora. Če želite enemu razvijalcu preprečiti, da bi prepisali delo drugega in zagotovili progresivno in organizirano razvojno, minimiziranje konfliktov in upravljanje različic programske opreme, je, da uporabljamo GIT in Podružnice nato.

Podružnica model

V tem položaju predstavljam razvojni model sem rabil v nekaterih mojih projektih (na delovnem mestu in v zasebnih) O 1 Leti, in to je bilo zelo uspešno. To je bilo dolgo časa sem hotel pisati o tem, vendar nikoli ni našel razpoložljivega časa, Doslej. Ne bom govoril o podrobnostih projekta., le o strategijah Podružnice in upravljanje Izpust.

Ta model se osredotoča izključno na Kreten kot orodje za različic vse naše izvorne kode. (mimogrede, Če vaš ' zavzet v GIT, naše podjetje GitPrime, novo leto Zagotavlja, v realnem času, neki presenetiti novice analitika zakaj software tehnika Optimization)

Zakaj kreten?

Za temeljito razpravo o prednostih in slabostih GIT v primerjavi s centralizirano vir kontrolnih sistemov, Videli na Spletni. Obstaja ogromno “Vojne” okoli tega. Kot razvijalec, Raje kreten nad vsemi drugimi orodji, ki obstajajo danes. Kreten je nedvomno spremenila način, razvijalci razmišljati o tem, da Spoji ali ustvarite Podružnice. Prihajam iz klasičnega Sveta ŽIVLJENJEPISI/Subversion, Kjer združevanje/razvejane svoj ' nekaj vi šele delati od časa do časa ter to zmeraj zdeti se malo strašen (“Pazite se konfliktov Spoji, te ugriznejo!”).

Že z GIT teh ukrepov [združevanje/razvejane] so zelo preproste in predstavljajo enega od glavnih delov našega dela rutinsko, Verjamejo. Na primer, Palca Knjigo CSV/Subversion, Razvejane in Združujejo prvič obravnavana le v kasnejših poglavjih (za napredne uporabnike), v vsakem knjiga o GIT, To je razvidno iz poglavja 3 (Osnovne).

Zaradi svoje enostavnosti in ponavljajoče se narave, Razvejane in Združujejo niso več kaj bati. Dejansko, orodja za nadzor različic bi morala pomagati, daSpoji in ustvarjanje Podružnice bolj kot karkoli drugega.

Nič več govorjenja., gremo na razvojni model. Model bom predstaviti tukaj je v bistvu nič več kot niz postopkov, ki jih mora vsak član ekipe slediti, da bi prišli do upravlja proces razvoja programske opreme.

Decentralizirano, vendar centralizirano

Konfiguracija skladišča, ki jo uporabljamo, da deluje zelo dobro s to predlogo Razvejane je sestavljen iz osrednjega repozitorija. Upoštevajte, da je ta repozitorij “sprejeti kot” Centralne (ker kreten je DVCS [Porazdeljeni sistemi za nadzor različic], IE, na tehnični ravni ni nič takega kot osrednji repozitorij). Ta repozitorij se bomo sklicali Izvora, odkar to ime je zaupen v vsi GIT uporabnik.

Vsak razvijalec naredi Potegne in Potisne za na Izvora. Toda onkraj odnosa push-pull za centralizirano [Izvora], vsak razvijalec lahko tudi poberem [Potegnite] spremembe drugih parov za oblikovanje podekip. Na primer, To je lahko uporabno za sodelovanje z dvema ali več razvijalci na novo veliko funkcijo, predhodno pošiljanje [Potiskanje] delo v teku za Izvora. Na zgornji sliki, Obstajajo podekipe Alice in Bob, Alice in David, in Clair in David.

Tehnično, To pomeni nič več kot Alice opredeljena daljinsko GIT imenom Bob, kaže na Bob ' s repozitorij, in obratno.

Glavne veje

V ozadju, Ta razvojni model je precej zgleduje po obstoječih modelih tam zunaj. Osrednji repozitorij ima dve podružnicah [Podružnice] z neskončnim življenjem:

  • Master
  • Razviti

Na glavna veja v Izvora should obstati zaupen v sleherni GIT uporabnik. Vzporedno s glavna veja, Obstaja še ena Podružnice Imenuje Razviti.

Razmisli izvor/mojster kot glavna podružnica, kjer je izvorna koda Glavo vedno odraža stanje pripravljeno za proizvodnjo [pripravljen za proizvodnjo].

Razmisli izvor/razvoj kot Podružnice glavno, kjer je izvorna koda Glavo vedno odraža stanje z najnovejšimi spremembami razvoja, ki jih je treba dostaviti v naslednji izdaji. Nekateri bi temu pravijo “Podružnice Integracija”. Tam se dogajajo najbolj zlovešče konstrukcije..

Ko je izvorna koda v podružnica razvija doseže stabilno točko in je pripravljen za izpust [Sprosti], vse spremembe je treba združiti [Spojene] nazaj na glavna veja in nato označena s številko različice [Sprostitev]. Kako se to naredi podrobno, bo razpravljalo kasneje.

Tako, vsakič, ko so spremembe vključene v [Spojene] nazaj na Master, Nova različica je ustvarjena [Sprosti], po definiciji. Trudimo se, da se zelo stroga glede tega, Tako, Teoretično, mi strjena lava sod raba a scenarij Kavelj samodejno ustvarjanje in pošiljanje naše aplikacije za proizvodne strežnike, kadar je Zavezati Palca Master.

Pomožne veje

Poleg Podružnice Glavni, Master in Razviti, naš razvojni model uporablja različne Podružnice podporo za hkratno razvoj med člani skupine, Kaj 1) omogoča enostavno spremljanje novih funkcij [Funkcije], 2) pripravlja za dostavo nove različice [Sprostitev] in 3) vam pomaga hitro odpraviti proizvodne napake [Nos]. Nasprotju Podružnice Glavni, Teh Podružnice ima kratko življenjsko dobo, saj bodo sčasoma odstranjeni.

Različne vrste Podružnice [Pomožni] da lahko uporabimo, So:

  • Veje funkcij
  • Izdaj veje
  • Veje sprotni popravek

Vsaka od teh Podružnice ima poseben namen in ga zavezujejo stroga pravila, tako da, Podružnice lahko povzroči Podružnice in da Podružnice je treba združiti [Spojene] na njihove cilje. Videli bomo vsakega od njih [Podružnice] v trenutku.

S tehničnega vidika, Teh Podružnice se ne štejejo za “Posebne”. Vsaka vrsta Podružnice je kategorizirana z načinom, kako jih uporabljamo. Kakorkoli že, so preprosto Podružnice od dobrih starih kreten.

Veje funkcij

[Funkcije = funkcije/funkcije]

– Lahko podružnica ven [Podružnice] Iz:
Razviti
– Združiti [Spoji] ponovno:
Razviti
– Konvencija o imenovanju Podružnice:
Nič, Razen Master, Razviti, sprostitev-*, Ali hitri popravek-*

Na funkcije veje (ali včasih imenovane Tema veje) uporabljajo za razvoj novih funkcij/funkcionalnosti za prihodnji ali prihodnji izpust. Pri zagonu razvoja Funkcija, Ciljna različica, v kateri bo ta funkcija vdelana, je lahko na tej točki tudi neznana.

Bistvo funkcije veje je, da obstaja, medtem ko Funkcija je v razvoju, sčasoma pa bo vključena [Spojene] nazaj na Razviti (da bi zagotovo dodali novo Funkcija na naslednjo Sprostitev) ali zavreči (v primeru neuspešnega poskusa).

Veje funkcij običajno obstajajo samo v skladišču Razviti, ne v Izvora.

Ustvarjanje funkcij veje

$ kreten checkout -B myfeature razvijejo
# Switched to a new branch "myfeature"

Vdelava končne funkcije v razvoj

Značilnosti, novo leto zaključena, se lahko združijo[Spojene] z podružnica razvija da jih zagotovo dodate na naslednjo Sprostitev.

$ kreten Checkout razvoj
# Preklopi na vejo "razvoj"
$ kreten spajanje --Palca-myfeature FF
# Posodabljanje ea1b82a.. 05e9557
# (Povzetek sprememb)
# $ kreten podružnica-d myfeature
# Izbrisana veja myfeature (je bilo 05e9557).
$ kreten push izvora razvoj

Zastava –ne-FF povzroča mešanje [Spoji] vedno ustvarite nov Zavezati, Čeprav bi se združitev lahko izvedla z Hitro previjanje naprej [Ff]. To preprečuje informacije o zgodovini obstoja zunanja oblika veja, združevanje vseh Zavezuje , ki so bile dodane Funkcija. Primerjati:

V slednjem primeru [na zgornji sliki], je nemogoče videti iz zgodovine kreten, ki je Zavezuje so bile izvedene v okviru Funkcija; vi hoteti življati v ročen čitanje vsi poleno vest. Obrni Funkcija Celotno (IE, skupina Zavezuje), To je pravi glavobol v zadnjem položaju, medtem ko je to enostavno storiti, če zastavo –ne-FF je bila uporabljena.

da, To bo ustvarilo nekaj več predmetov Zavezuje (Prazna), vendar je dobiček veliko višji od stroškov.

Izdaj veje

[Release = izpust/dostava/različica]

– Lahko podružnica ven [Podružnice] Iz:
Razviti
– Združiti [Spoji] ponovno:
Razviti in Master
– Konvencija o imenovanju Podružnice:
sprostitev-*

Na podružnice za javnost pomoč pri pripravi nove proizvodne različice [sproščanje proizvodnje]. Dovolijo ti, da v zadnjem trenutku daš kapljo.. še več, omogočajo manjše popravke Bugs in opredelitev metapodatki za Sprostitev (številka različice, graditi datume, itd). S tem delom v javnost podružnica, o razvoj podružnice dobi čisto za prejemanje Funkcije naslednjega velikega Sprostitev [Različico].

Ključni trenutek za ustvarjanje novega javnost podružnica razvejane iz Razviti je, ko je Razviti je že (Skoraj) odražajo želeno stanje novega Sprostitev [Različico]. Vse Funkcije kandidatov za Sprostitev morajo biti vgrajeni [Spoji] Do Razviti na tej točki. po drugi strani Funkcije Namenjen Izpust terminske pogodbe pričakujejo naslednje Sprostitev [Različico].

Prav na začetku javnost podružnica da je naslednji Sprostitev prejme številko različice – pred. Do tega trenutka, o razvoj podružnice odražajo spremembe “naslednji izpust” [Naslednja različica], vendar to ni jasno, če je to “Naslednja različica” bo sčasoma 0.3 ali 1.0, dokler se ne javnost podružnica treba začeti. Ta odločitev se sprejme na začetku javnost podružnica in se izvaja s pravili projekta o različic [predlaga videnje o “Semantična Versioning“].

Ustvarjanje podružnice za javnost

Na podružnice za javnost so ustvarjene iz razvoj podružnice. Na primer, Recimo, da je različica 1.1.5 je trenutna različica proizvodnje in imamo veliko Sprostitev Prihajajo. Stanje Razviti je pripravljen za “Naslednja različica” [naslednji izpust] in odločili smo se, da bo to postalo 1.2 (namesto 1.1.6 ali 2.0). Tako, mi podružnice in dati javnost podružnica ime, ki odraža novo številko različice:

$ kreten checkout -B sprostitev-1.2 Razviti
# Switched to a new branch "release-1.2"
$ ./Čvoruga-Različico.Sh 1.2
# Datoteke so bile uspešno spremenjene, različica vrč za 1.2.
$ kreten zavezati -na -m "Bumped version number to 1.2"
# [Release-1,2 74d9424] Bumped številka različice, da 1.2
# 1 spremenjene datoteke, 1 Vstavljanja(+), 1 Brisanje(-)

Po ustvarjanju novega Podružnice in dostop do njega, smo naleteli na številko različice. tukaj, bump-version.sh je a skorja scenarij to sprememba neki ki dela ulitek pila v odsevati nov prevod. (To lahko, seveda, je ročna sprememba – Bistvo je, da se nekatere datoteke spremenijo.) Tako, je narejen Zavezati spremenjene številke različice.

Ta novi Podružnice lahko obstaja nekaj časa, dokler se ne Sprostitev je definitivno začela. V tem obdobju, popravki napak se lahko uporabljajo v tem Podružnice (namesto razvoj podružnice). Dodajanje novih in velikih Funkcije Tukaj je strogo prepovedano. Treba jih je združiti [Spojene] v Razviti in, všeč mi je, čakati na naslednji velik Sprostitev.

Dokončanje podružnice za javnost

Ko je javnost podružnica je pripravljen, da postane resnična različica, nekatere ukrepe je treba izvesti. Prvi, o javnost podružnica je združena v Master (od vsakega Zavezati Palca Master je nova različica po definiciji, Ne pozabite). Potem, To Zavezati Palca Master bi bilo treba označiti, da se olajša prihodnje sklicevanje na to zgodovino različic. Končno, spremembe, opravljene v javnost podružnica treba združiti [Spojene] ponovno Razviti, tako, da Izpust terminske pogodbe vsebujejo tudi te napake popravki.

Prvi dve koraki v GIT:

$ kreten Checkout mojster
# Preklopi na vejo "Master"
$ kreten spajanje --Palca-FF za javnost-1.2
# Spoji, ki jih rekurzivni.
# (Povzetek sprememb)
$ kreten tag -na 1.2

Na Sprostitev je zdaj končan in označen za prihodnje reference.

Opomba: lahko uporabite tudi-s ali-u zastave za podpis oznake na kriptografsko.

Če želite obdržati spremembe v javnost podružnica, moramo jih ponovno sestaviti. Razviti. Brez kreten:

$ kreten Checkout razvoj
# Preklopi na vejo "razvoj"
$ kreten spajanje --Palca-FF za javnost-1.2
# Spoji, ki jih rekurzivni.
# (Povzetek sprememb)

Ta korak lahko privede do spojnega spora (verjetno šel, Ko spremenimo številko različice). Če je tako, popraviti in ne Zavezati.

Zdaj, da smo res razšla, o javnost podružnica lahko odstranite, ker ga ne bomo več potrebovali.:

$ kreten podružnica -d sprostitev-1.2
# Izbrisana podružnica za javnost-1,2 (je bil ff452fe).

Veje sprotni popravek

– Lahko podružnica ven [Podružnice] Iz:
Master
– Združiti [Spoji] ponovno:
Razviti in Master
– Konvencija o imenovanju Podružnice:
hitri popravek-*

Na Veje sprotni popravek so zelo podobni sprostitev veje, zato, ker so namenjeni tudi pripravi nove proizvodne različice, Čeprav nenačrtovane. Izhajajo iz potrebe po ukrepanju takoj po neželenem stanju proizvodne različice [v uporabi]. Ko se v proizvodni različici pojavi Kritična napaka, je treba takoj rešiti, nato hitri popravek podružnice lahko izhaja iz oznake, ki označuje obstoječo proizvodno različico v glavna veja.

Bistvo je, da delo članov ekipe (Palca razvoj podružnice) lahko še naprej, medtem ko nekdo drug pripravlja hitro rešitev izpada proizvodnje.

Ustvarjanje veje sprotni popravek

Na sprotni popravek veje so ustvarjene iz glavna veja. Na primer, ob predpostavki, da je različica 1.2 je trenutna različica proizvodnje za javnost in predstavlja težave zaradi resnih napak. Spremembe v Razviti pustite še vedno nestabilno. Nato lahko podružnico hitri popravek podružnice in začeti reševanje problema:

$ kreten checkout -b hitri popravek-1.2.1 Master
# Switched to a new branch "hotfix-1.2.1"
$ ./Čvoruga-Različico.Sh 1.2.1
# Datoteke so bile uspešno spremenjene, različica vrč za 1.2.1.
$ kreten zavezati -na -m "Bumped version number to 1.2.1"
# [Hotfix-1.2.1 41e61bb] Bumped številka različice, da 1.2.1
# 1 spremenjene datoteke, 1 Vstavljanja(+), 1 Brisanje(-)

Ne pozabite spremeniti številke različice po podružnici!

Potem, popravite napako in naredite Zavezati popravek v enem ali več Zavezati Ločene.

$ kreten zavezati -m "Fixed severe production problem"
# [Hotfix-1.2.1 abbe5d6] Fiksna huda proizvodnja problem
# 5 spremenjene datoteke, 32 Vstavljanja(+), 17 Brisanje(-)

Zaključna veja sprotni popravek

Ko končate, o Bugfix treba združiti nazaj v Master, vendar je treba ponovno vključiti v Razviti, , da se zagotovi, da Bugfix je vključena tudi v naslednjo različico. To je precej podoben način sprostitev veje dokončane.

Prvi, posodobite Master in označite Sprostitev [označite poletje]:

$ kreten Checkout mojster
# Preklopi na vejo "Master"
$ kreten spajanje --Palca-hitri popravek FF-1.2.1
# Spoji, ki jih rekurzivni.
# (Povzetek sprememb)
$ kreten tag -na 1.2.1

Opomba: lahko uporabite tudi-s ali-u zastave za podpis oznake na kriptografsko.

Potem, vključujejo Bugfix Palca Razviti Tudi:

$ kreten Checkout razvoj
# Preklopi na vejo "razvoj"
$ kreten spajanje --Palca-hitri popravek FF-1.2.1
# Spoji, ki jih rekurzivni.
# (Povzetek sprememb)

Edina izjema od tega pravila je, da, kadar obstaja javnost podružnica v teku, spremembe Nos treba združiti za to javnost podružnica, Namesto Razviti. Spojite Bugfix Palca javnost podružnica bo povzročil Bugfix združeni v Razviti Tudi, ko je javnost podružnica je končana. (Če je delo v Razviti takoj zahteva to Bugfix in ne more počakati, da javnost podružnica je končana, lahko varno spojite Bugfix za (v mestu) Tudi.)

Končno, odstranite Podružnice Začasno:

$ kreten podružnica -hitri popravek d-1.2.1
# Izbrisana podružnica sprotni popravek-1.2.1 (je bil abbe5d6).

Povzetek

Čeprav ni nič res nenavadnega v tem razvejane model, številka na začetku post je lahko zelo koristna pri naših projektih. To kaže, enostaven za razumevanje duševnega modela in omogoča članom skupine, da razvijejo skupno razumevanje Razvejane in Sprostitev.

Visoka kakovost PDF različica številka je na voljo na blogu prvotnega post: http://nvie.com/posts/a-successful-git-branching-model/ [ali na spodnjo povezavo Prenesi]. Pojdi naprej in ga položite na steno, da bi dobili hitro referenco v vsakem trenutku.

Skupaj zadetkov: 7536

Komentar na “Uspešen branchs model v GIT

  1. Deivson rojstvo je dejal:

    dober dan, vem, da je bil kreten sprva razvil sistem Linux, vendar ko govorimo o prenosljivosti, radoveden sem če kreten runs naprej okno MSIS ter POSIX??

pusti odgovor

Na vaš e-poštni naslov ne bo objavljen. Zahtevana polja so označena z *