2015-10-22 14:03:33

VCS (kodo versijavimo sistemos) žaliems

Kuriant IT projektus programinis kodas keičiasi dažnai. Keičiasi rinka, dėl ko keičiasi klientų poreikia.
Taisomos klaidos, kartais jos pataisomos blogai, dėl ko reikia operatyviai grįžti i paskutinę gerai veikusią versiją.
Dirbant su projektais, kelios panašios, bet skirtingos kodo versijos turi būti palaikomos skirtingiems klientams.
Taip atsiranda tikros kodo džiunglės, primenančios pirmakursio spintą :D

Šiam administraciniam pragarui išvengti yra puikių įrankių. Tai kodo versijavimo sistemos (version control systems arba VCS).

KODĖL VERTA NAUDOTI VERSIJAVIMO SISTEMĄ

 

 

Programiniam kodui patinka būti laikomam tvarkingai, patikėkit jums tai irgi patiks.
Versijavimo sistemų tema yra plati, todėl detaliai jos neperžvelginėsiu.

 

    Ir jei tingite skaityti, tai mano asmenine nuomone rinkitės Git, tai nėra paprastas ar lengvas yrankis, tačiau jis po truputį tampa IT standartu.


Taigi, kodėl reikia ir netgi būtina naudoti VCS:

- Palengvina diegimus.

Šis pirmasis argumentas yra tiesogiai susijęs su kitomis mano parengtomis pamokėlėmis. Remiantis jomis yra iliustruotas pavyzdys, kaip su VCS, o konkrečiai Git pagalba galima diegti tik Jums aktualius ar naujausius pakeitimus. T.y. jei puslapyje ar sistemoje keitėte 20 failų kurie yra išsibarstę po visą projektą, Jums nereikės prisiminti, kurie konkrečiai iš jų buvo pakeisti. VCS atrinks tik aktulius, o Jenkis juos nukopijuos į serverį.

- Padeda greitai atstatyti klaidas.

Jei jus pagavo įkvėpimas ir nukodinote per toli ir per greitai, viena komanda konsolėje, leis gražinti visą Jūsų projektą ar konkretų failą iki veikiančios būsenos. Dauguma VCS turi integracijas su IDE, todėl gali nereikėti net konsolės, viską galėsite atlikti iš patogios IDE sąsajos.

- Pagerina pakeitimų atsekamumą. Kadangi išlieka visa pakeitimų istorija.

- Efektyvesnis ir greitesnis darbas komandoje. Net jei keli žmonės ir redaguos tą patį failą, prieš diegiant visi pakeitimai turės būti apjungti vieno žmogaus.

- Leidžia nustatyti kas padarė klaidas ar konkrečius pakeitimus.

- Prieš apjungiant kodą su jau veikiančiu (LIVE), visuomet galite leisti peržiūrėti savo pakeitimus kolegoms. VCS išskirs tik tas vietas kurios buvo pridėtos/pašalintos/pakeistos.

- Leidžia dalyvauti opensource bendruomenės veikloje.

    Greičiausiai jau pastebėjote, kad praktiškai visi OpenSource projektai yra patalpinti Git repositorijose (GitHub ir BitBucket). Naudodamiesi VCS galėsite ne tik parsisiųsti failus *.zip` formate, bet galėsite palyginti kokie failai ir konkretūs kodo gabaliukai buvo atnaujinti projekte. O jei esi pakankamai kietas, galėsi ir pasiūlyti savo pakeitimus ar pataisymus.

Centralizuotas VS išsibarstęs VCS

 

Visi VCS (Version controll systems) yra skirstomi į dvi rūšis. Centriniai (centric) ir paskirtyti (distributed).

Centralizuotosios kodo versijavimo sistemos remiasi idėja, jog egzistuoja viena centrinė kodo kopija į kurią savo pakeitimus kelia programuotojai.

 

Paskirtytose sistemose,  gali būti bet kiek "centrinių kopijų". Jo isšsaugo istoriją ir kitus orginalius metaduomenis, o jas galima apjungti tarpusavyje.

 

SVN - GIT - MERCURIAL - Bazaar


Be specifiniu Microsoft ekosistemai skirtu VCS'u, pvz: Team Foundation Version Control (TFVC) ar Microsoft Visual SourceSafe (VSS).

Yra pagrindiniai: SVN - GIT - MERCURIAL - Bazaar

 

Paskirtyti (distributed).

Mercurial:

  • Lengvai išmokstamas.
  • Paprastai ir lengvai scalinasi.
  • Lengvai prisitaikomas (customizable).
  • Išplečiamas python pagalba.
  • Panašus į Git.

 

 

Git:

  • Greitis.
  • Į komandinę eilutę orientuotas įrankis (sudėtingi ir nelabai nepatogūs UI).
  • Platus funckcionalumas.
  • Išplečiamas ir scriptinamas.
  • Ne native pilietis windows aplinkoje (veikia per Cygwin).
  • Rekomenduojamas didesniuose projektuose, didesnese komandose. Unix sistemose.

 

Bazaar:

  • Sukurtas veikti su UI.
  • Native Windows pilietis.
  • Direktorijos yra šakos...
  • Rekomenduojamas dirbant vienam ar mažoje komandoje, lokaliai, su closed source...

 

Centriniai (centric)

SVN:

  • Leidžia dirbti su atskira direktorija, nepriklausomai nuo visos repositorijos (git tai turėtų pradėti palaikyti per pluginus).
  • Ledžia efektyviai versijuoti binary failus (pvz.: *.psd, *.exe).
  • Papraščiau naudojamas.
  • Leidžia užrakinti failus (redaguoja tik vienas vartotojas).

 

Tiek susipažinimui ir pradžiai.

Kitose pamokėlese apžvelgsime Git pagrindus ;)