Većinu postova na blogu prati i izvorni kôd, do sada smo postavljali link na demo projekte kao arhive (zip fajl) na našem veb serveru. Ovo nije idealno rešenje iz više razloga, ne postoji mogućnost saradnje više programera, nema istorije izmena i sve ostalo što nam omogućavaju source control sistemi. Sistemi za verzionisanje (sors kontrole) su potrebni i korisni, čak i za ovakve primere kôda za koje nije planirano puno izmena, u pravim projektima su jednostavno neophodni. Poznavanje najmanje jednog sistema za verzionisanje kôda i osnovnih termina je neophodno, o tome ne bih da raspravljam, ima puno tutorijala na tu temu, evo jednog dopadljivog Intro to version control.
Ukoliko imate produkcioni kôd koji nije na sors kontroli, to je svakako veći prioritet od čitanja ovog posta, molim vas da pre sledećeg pasusa verzionišete taj kôd!
Na sreću postoji puno dobrih rešenja, od klasičnih (client-server) tu je čuveni Subversion, ako uživate blagodeti microsoft licenci Team Foundation Server je moćan alata koji između ostalog uključuje i sors kontorolu. Drugi pristup su distribuirane sors kontrole, među najpoznatijima su GIT i Mercurial, oba otvorenog kôda. Izborom bilo kojih od ovih sistema nećete pogrešiti, recimo da su distribuirane sors kontrole bolji izbor za timove gde ima više verzija, spajanja i razdvajanja (brenching /merging), naročito ako u timu ima puno članova koji rade sa različitih lokacijama. Detaljnije o oba pristupa možete naći na Better Explained: A Visual Guide to Version Control, Intro to Distributed Version Control.
Za naše primere sa Bug.Rs potreban nam je javni servis, da ne bi morali da održavamo sistem, i još bitnije široko prihvaćeno rešenje gde većina nas već ima otvoren nalog. Ovakvih rešenja postoji puno, recimo da su ovo najpoznatiji:
Po brojevima koje sam uspeo da pronađem GitHub je daleko najpopularniji sa približno 3,6 miliona korisnika i oko 7 miliona repozitorija, sledi Bitbucket sa preko milion korisnika, CodePlex ima daleko manje korisnika, ali može da bude interesantan za projekte koji su pre svega orijentisani ka Microsoft zajednici, koja se okuplja ovde.
Očigledno prvi pik je GitHub, međutim pored najvećeg broja korisnika i servisa za razmenu manjih celina koda (snipetts) GitHub Gist, tu je i tamna strana, Git prati glas da je prekomplikovan i koristi ne uvek tako čitljivu komand line sintaksu, što nije baš idealno za našu namenu. Na kraju GitHub Windows je razvejao sve sumnje, mada ne pokriva sve funkcionalnosti i može da iznenadi novim terminima (synhronize umesto uobičajenog push i pull), ova aplikacija je učinila korišćenje GitHub na windows-u više nego jednostavnim. Na adresi http://windows.github.com/ možete naću ClickOnce instalaciju koja je sve u jednom paket. Po završetku instalacije dobićete dve aplikacije, GitHub metro stajl windows klijent, dovoljno je da se logujte svojim GitHub nalogom i uživate, a za ljubitelje komande linije tu je i Git Shell.
Napravili smo jedan repozitorijum https://github.com/bramom/Bug.RS za primere sa bloga koji nemaju ambiciju da izrastu u zaseban projekat, za sata tu je njih četiri raspoređenih po folderima. Ukoliko ima dobrovoljca koji bi pomogao da sredimo i primere koda iz posta .NET Enumeration Types više ste nego dobrodošli. Draganov JSTools je zaslužio zaseban repozitorijum https://github.com/draganjovanovic1/JSTools.
Nadam se da će sada biti lakše doći do korisnih primera, održavati ih, ispravljati greške i šta već. Tu je i stranica na blogu Projects sa aktivnim repozitorijumima, nadam se da će rasti broj projekata, folovera… Umalo da zaboravim, za kraj šta drugo do developerska molitva 🙂