Git
Chapters ▾ 2nd Edition

1.1 Başlanğıc - Versiyaya Nəzarət Haqqında

Bu fəsil Git ilə işə başlamaq haqqındadır. Versiya nəzarət alətləri ilə əlaqəli bəzi məlumatları izah etməyə başlayacağıq, sonra Git’in sisteminizdə necə işlədiləcəyinə və nəhayət işə başlamaq üçün necə qurulacağına nəzərdən keçirəcəyik. Bu fəslin sonunda Git’in niyə olduğunu, niyə istifadə etməli olduğunuzu və bunun üçün niyə hazır olmalı olduğunuzu başa düşəcəksiniz.

Versiyaya Nəzarət Haqqında

“Versiya nəzarəti” nədir və ona niyə diqqət etməliyik? Versiya nəzarət sistemi fayla və ya fayllar qrupuna bütün vaxt ərzində edilən dəyişiklikləri qeydə alır. Buna görə də sonradan siz istədiyiniz versiyaya arxaya qayıda bilirsiniz. Bu kitabdakı nümunələr üçün versiyalarına nəzarət edilən fayllar olaraq bir proqramın qaynaq kodlarını istifadə edəcəksiniz ki, bu da reallıqda sizə komputerdəki istənilən fayl üzərində eyni əməliyyatları etməyə imkan verəcək.

Qrafik və ya veb dizaynersinizsə və şəkilin və ya layoutun hər bir versiyasını saxlamaq istəyirsinizsə(hansı ki, böyük ehtimalla istəyəcəksiniz), bir versiya nəzarət sistemi (VNS) istifadə etmək üçün çox ağıllı seçimdir. O sizə seçilmiş faylları əvvəlki vəziyyətinə qaytarmağa, bütün proyekti əvvəlki vəziyyətinə geri qaytarmağa, vaxt ərzində edilmiş dəyişiklikləri müqayisə etməyə, kimin etdiyi sonuncu dəyişikliyin sistemdəki problemə səbəb olduğuna, kimin problemi nə vaxt təqdim etdiyinə və daha çoxuna imkan yaradır. VNS-dən istifadə ümumilikdə, hər şey tərs getdiyində və ya faylları itirdiyinizdə asanlıqla bərpa edə biləcəyiniz mənasına gəlir. Əlavə olaraq, bütün bunları çox kiçik səy ilə edirsiniz.

Lokal Versiya Nəzarət Sistemi

Bir çox insanın versiyaya nəzarət metodu faylları digər qovluğa atmaqdır (əgər ağıllıdırlarsa, üzərində vaxt yazılı bir qovluğa). Bu metod çox sadə olduğu üçün çox görülür, ancaq bu metod həm də inanılmaz dərəcədə səhvə meyillidir. Hansı qovluğun içində olduğunuzu unutmaq və istəmədiyiniz fayla səhv şeyi yazmaq vəya digər fayllara kopyalamaq çox sadədir.

Bu problemi aradan qaldırmaq məqsədi ilə proqramistlər uzun zaman öncə sadə verilənlər bazasına sahib olan VNS-ləri proqramlaşdırdılar ki, fayllara edilən bütün dəyişiklikləri nəzarət altında saxlamaq mümkün olsun.

Lokal Versiya Nəzarət diaqramı
Figure 1. Lokal Versiya Nəzarəti.

VNS alətlərindən ən məhşurlarından biri RCS adlanırdı. O, bu gün də bir çox komputerdə yayılmışdır. RCS yamaq dəstələrini(fayllar arasındakı fərqləri) diskdə xüsusi formatda yadda saxlaması sayəsində fəaliyyət göstərir; İstənilən faylı göstərilmiş vaxta uyğun olaraq bütün yamaqları əlavə edərək yenidən yaratmağa qadirdir.

Mərkəzləşdirilmiş Versiya Nəzarət Sistemləri

İnsanların qarşılaşdığı əsas problemlərdən biri də budur ki, onlara digər sistemlərdəki developerlərlə bir işləmək lazım olur. Bu problemlə başa çıxmaq üçün, Mərkəzləşdirilmiş Versiya Nəzarət Sistemləri (MVNS) yaradılmışdır. Bu sistemlər(CVS, Subversion və Perforce kimiləri) bütün versiyalanmış faylların saxlandığı tək bir serverə və həmin mərkəzləşdirilmiş yerdən fayllara baxan bir neçə müştəriyə sahib olurlar Bir neçə illərdir ki, versiya nəzarəti üçün bu bir standart olmuşdu.

Mərkəzləşdirilmiş versiya nəzarəti diaqramı
Figure 2. Mərkəzləşdirilmiş Versiya Nəzarəti.

Bu quruluş bir çox üstünlüyə sahibdir, xüsusiylə lokal VNS’lərdən. Məsələn, hamı bir-birinin proyekt üzərində hansı dərəcədə iş gördüyünü bilir. İdarəedicilərin kimin nə edə biləcəyinə dair yaxşı nəzarəti var və mərkəzləşdirilmiş nəzarət sistemlərini idarə etmək, hər müştəridəki müxtəlif lokal verilənlər bazalarını idarə etməkdən daha asandır.

Buna baxmayaraq, bu quruluşun həm də bəzi ciddi mənfi yönləri var. Ən barizi, mərkəzləşdirilmiş serverin təmsil etdiyi tək nöqsan nöqtəsidir. Əgər bu server 1 saatlığına çökərsə, həmin 1 saat ərzində heç kim heç bir işbirliyi görə bilməz ya da öz işlədikləri versiyalanmış dəyişiklikləri yadda saxlaya bilməz. Əgər mərkəzləşdirilmiş verilənlər bazasındakı sərt disk zədələnərsə və lazımi ehtiyatlar alınmaıbsa, siz hər şeyi itirirsiniz — insanların öz lokal komputerlərində saxladığı anlıq vəziyyətlərdən başqa proyektin bütün tarixi. Lokal versiya nəzarət sistemləri də eyni problemdən əziyyət çəkirlər — proyektin bütün tarixinin bir yerdə olduğu bütün vaxt ərzində siz hərşeyi itirmək riskinə gedirsiniz.

Paylanmış Versiya Nəzarət Sistemləri

Burada işə Paylanmış Versiyaya Nəzarət Sistemləri (PVNS)lər qarışır. PVNS’də (Git, Mercurial, Bazaar ya da Darcs kimi), müştərilər sadəcə faylların anlıq vəziyyətini yadda saxlamır; bunun əvəzinə, onlar bütün anbarı fayllarının bütün tarixçəsi ilə bərabər olaraq kopyasını götürürlər. Beləliklə, əgər server çökərsə və sistemlər həmin serverlə iş birliyi görürlərsə, müştərilərdəki anbarlardan hansısa biri serverə geri kopyalanaraq onu əvvəlki vəziyyətinə qaytara bilər.

Hər bir klon, həqiqətən də bütün məlumatın tam ehtiyatıdır.

Paylanmış versiya nəzarəti diaqramı
Figure 3. Paylanmış versiya nəzarəti.

Bundan başqa, bir çox sistemlər, bir çox uzaq anbarlarla rahat işləyə bilirlər, beləliklə, siz eyni proyektdə fərqli insanlar qrupu ilə müxtəlif yollarla işbirliyi edə bilərsiniz. Bu sizə ierarxik modellərdə olduğu kimi mərkəzləşdirilmiş sistemlərdə mümükün olmayan müxtəlif iş görmək metodlarını quraşdırmağa imkan verəcək.