Arxitektura
Download 94.99 Kb.
|
Reja: Dasturiy kodni lokal boshkarish uchun versiyalar nazorat tizimi (git) tarixi. Amalga oshirish xususiyatlari ArxitekturaLinux yadrosini ishlab chiqish xususiy BitKeeper tizimida amalga oshirildi , uni muallif - Linux dasturchisi Larri MakVoyning o'zi loyihaga bepul litsenziya ostida taqdim etdi. Dasturchilar, yuqori-end Dasturchilar ba'zi kommunal yozish uchun, va bir Endryu Tridgell qildi teskari-muhandis ma'lumotlar formati BitKeeper. Bunga javoban Makvoy ishlab chiquvchilarni shartnomani buzganlikda aybladi va litsenziyani bekor qildi va Torvalds yangi tizimni o'z zimmasiga oldi: ochiq tizimlarning hech biri minglab dasturchilarga hamkorlik qilishga imkon bermadi (xuddi shu mojaro Mercurialning yozilishiga olib keldi ). Mafkura oddiy edi: CVS yondashuvini olingva uni teskari aylantiring [9] , va shu bilan birga ishonchlilikni qo'shing. Dastlabki ishlab chiqish bir haftadan kamroq vaqtni oldi: ishlab chiqish 2005-yilning 3-aprelida boshlandi va 7-aprelda Git kodi tayyorlanmagan tizim tomonidan boshqarildi. Linux 16-iyunda Git-ga koʻchirildi va Torvalds 25-iyulda yetakchi dasturchi lavozimini tark etdi. Tizim stsenariylarda foydalanishni hisobga olgan holda maxsus ishlab chiqilgan dasturlar to'plami sifatida ishlab chiqilgan . Bu sizga qulay tarzda Git-ga asoslangan versiyani boshqarish tizimlari yoki foydalanuvchi interfeyslarini yaratish imkonini beradi. Misol uchun, Cogito Git omborlari uchun o'rashning shunday namunasidir va StGit yamoqlar to'plamini boshqarish uchun Git-dan foydalanadi . Git tezkor versiyalarni bo'lish va birlashtirishni qo'llab-quvvatlaydi va chiziqli bo'lmagan rivojlanish tarixini vizuallashtirish va navigatsiya qilish vositalarini o'z ichiga oladi. Kabi Darcs , BitKeeper , Mercurial , Yopiq Bozor, va bir xildagi , Git bir jihozi nusxa o'zgarishlar bilan ularning butun rivojlanish tarixi mahalliy nusxasi har bir shaxslar beradi. Git omborlariga masofadan kirish git daemon , SSH yoki HTTP serveri tomonidan ta'minlanadi. Git-daemon TCP xizmati Git tarqatilishiga kiritilgan va SSH bilan bir qatorda kirishning eng keng tarqalgan va ishonchli usuli hisoblanadi. HTTP kirish usuli, bir qator cheklovlarga qaramay, nazorat qilinadigan tarmoqlarda juda mashhur, chunki u mavjud tarmoq filtri konfiguratsiyasidan foydalanishga imkon beradi. Git-ning yadrosi - bu parametrlarga ega buyruq qatori yordamchi dasturlari to'plami. Barcha sozlamalar matn konfiguratsiya fayllarida saqlanadi. Ushbu dastur Git-ni har qanday platformaga osongina ko'chirish imkonini beradi va Git-ni boshqa tizimlarga osongina integratsiya qilish imkonini beradi (xususan, istalgan interfeysga ega grafik git mijozlarini yaratish). Git ombori - bu ombor konfiguratsiya fayllarini, omborda bajarilgan operatsiyalarni saqlaydigan jurnal fayllarini, fayllar joylashuvini tavsiflovchi indeksni va haqiqiy fayllarni o'z ichiga olgan fayl tizimi katalogi. Fayllarni saqlash strukturasi omborda saqlanadigan fayl daraxtining haqiqiy tuzilishini aks ettirmaydi, u ombor bilan operatsiyalar tezligini oshirishga qaratilgan. Yadro o'zgartirish buyrug'ini qayta ishlaganda (mahalliy o'zgarishlar bo'ladimi yoki boshqa tugundan yamoq olinganmi farqi yo'q), u o'zgartirilgan fayllarning yangi holatiga mos keladigan omborda yangi fayllarni yaratadi. Hech qanday operatsiya xotirada mavjud bo'lgan fayllar tarkibini o'zgartirmasligi juda muhimdir. Odatiy bo'lib, ombor omborda saqlangan fayl daraxtining ishchi nusxasi ildizi ostida " .git " nomli kichik katalogda saqlanadi. Tizimdagi har qanday fayl daraxti ushbu daraxtning ildiz katalogidan ombor yaratish buyrug'ini berish orqali (yoki dastur parametrlarida ildiz katalogini ko'rsatish orqali) git omboriga aylantirilishi mumkin. Repozitoriy tarmoq orqali kirish mumkin bo'lgan boshqa tugundan import qilinishi mumkin. Agar yangi jihozi import bo'lsa, bir ish nusxasi avtomatik import jihozi oxirgi sodir davlatga mos (bu uchun emas, balki nusxa manbai tugun ish nusxada o'zgartiradi deb yaratilgan majburiyatini buyrug'i deb berilgan edi tugun ). Git-ning pastki qatlami - bu kontent-manzilli fayl tizimi deb ataladi . Git buyruq qatori vositasi ushbu omborni past darajada to'g'ridan-to'g'ri boshqarish uchun bir qator buyruqlarni o'z ichiga oladi. Bu buyruqlar git bilan versiyani boshqarish tizimi sifatida normal ishlashda kerak emas, lekin ular murakkab operatsiyalarni amalga oshirish uchun kerak (buzilgan omborni ta'mirlash va hokazo), shuningdek, git repozitori asosida ilovangizni yaratish imkonini beradi. Repozitariydagi har bir ob'ekt uchun SHA-1 xeshi hisoblanadi va aynan shu xesh .git / objects katalogidagi ushbu ob'ektni o'z ichiga olgan fayl nomiga aylanadi . Kataloglar daraxtlaridan foydalanmaydigan fayl tizimlari bilan ishlashni optimallashtirish uchun xeshning birinchi bayti kichik katalog nomiga, qolgani esa undagi fayl nomiga aylanadi, bu esa bitta katalogdagi fayllar sonini kamaytiradi (cheklovchi). bunday eskirgan fayl tizimlarida ishlash omili). Repozitariy ob'ektlarga barcha havolalar, shu jumladan boshqa ob'ekt ichidagi bir ob'ektga havolalar SHA-1 xeshlaridir. Bundan tashqari, omborda ba'zi Git ob'ektlari uchun odam o'qiy oladigan nomlarni belgilash imkonini beruvchi refs katalogi mavjud . Git buyruqlar, ikki inson-o'qib refs va asosiy SHA-1 Manbalar butunlay o'zgarishi mumkin. Klassik git omboridagi odatiy stsenariyda uchta turdagi ob'ektlar mavjud - fayl daraxti va "commit" ( Ingliz . The commit - qulf). Fayl - bu foydalanuvchi faylining ba'zi bir versiyasi, daraxt - turli pastki kataloglardagi fayllar to'plami, "majburiy" - bu daraxt va ba'zi qo'shimcha ma'lumotlar (masalan, ota-ona majburiyatlari, shuningdek sharh). Chiqindilarni yig'ish ba'zan omborda amalga oshiriladi, bu vaqt davomida eskirgan fayllar ular va haqiqiy fayllar o'rtasidagi " deltalar " bilan almashtiriladi (ya'ni faylning joriy versiyasi asta-sekin saqlanadi, o'sishlar faqat avvalgisiga qaytish uchun ishlatiladi. versiyalar), shundan so'ng "deltalar" ma'lumotlari indekslash uchun bitta katta faylga qo'shiladi. Bu saqlash talablarini kamaytiradi. Git ombori mahalliy yoki masofaviy bo'lishi mumkin. Mahalliy ombor bu git init buyrug'i bilan yaratilgan (bo'sh) va (ota-ona masofaviy ombori mazmunini darhol nusxalash va ota-ona bilan bog'langan bo'sh emas) git clone buyrug'i bilan yaratilgan .git pastki katalogidir . Deyarli barcha oddiy versiyalarni boshqarish operatsiyalari, masalan, topshirish va birlashtirish, faqat mahalliy ombor bilan amalga oshiriladi. Masofaviy omborni faqat mahalliy bilan sinxronlash mumkin, ham "yuqoriga" ( surish ) va "pastga" ( pull ). Har bir shaxslar uchun mahalliy butun loyiha jihozi ega git ustidan bir qancha afzalliklarga beradi SVN . Shunday qilib, masalan, surish va tortishdan tashqari barcha operatsiyalar Internetga ulanmasdan amalga oshirilishi mumkin. Git-ning juda kuchli xususiyati shoxlar bo'lib, ular SVN-ga qaraganda ancha to'liqroq amalga oshiriladi: aslida git filiali ombordagi majburiyatga ishora qiluvchi nomlangan havoladan boshqa narsa emas ( refs pastki katalogidan foydalangan holda ). Yangi filial yaratmasdan berilgan majburiyat shunchaki bu havolani o'ziga o'tkazadi va filial yaratish bilan bog'liq majburiyat eski havolani joyida qoldiradi, lekin yangi majburiyat uchun yangisini yaratadi va uni joriy deb e'lon qiladi. Mahalliy ishlab chiqish fayllarini boshqa filialdagi fayllar to'plami bilan almashtirish va shu bilan u bilan ishlashga o'tish ham xuddi shunday ahamiyatsiz. Subrepozitoriylar ulardagi joriy filiallarni sinxronlashtirish bilan ham qo'llab-quvvatlanadi. Push buyrug'i barcha yangi ma'lumotlarni (hali masofaviy omborda bo'lmaganlar) mahalliy ombordan masofaviy omborga o'tkazadi. Ushbu buyruqni bajarish uchun masofaviy omborda boshqa mijozlardan yangi majburiyatlar bo'lmasligi kerak, aks holda push muvaffaqiyatsiz bo'ladi va siz tortib olishingiz va birlashtirishingiz kerak bo'ladi. Pull buyrug'i surish buyrug'iga qarama-qarshidir . Agar bitta filial mahalliy va masofaviy nusxalarda mustaqil tarixga ega bo'lsa, birlashtirish uchun darhol torting . Turli xil fayllar ichida birlashish avtomatik ravishda amalga oshiriladi (bu xatti-harakatlarning barchasini sozlash mumkin) va bitta fayl ichida - standart uch panelli fayllarni taqqoslash. Birlashtirgandan so'ng, siz nizolarni hal qilingan deb e'lon qilishingiz kerak. Bularning barchasi birlashmani amalga oshirgan ishlab chiquvchi uchun mahalliy fayllardagi yangi holatdir. U zudlik bilan majburiyatni bajarishi kerak va bu topshiriq ob'ektida omborda majburiyat ikki filialni birlashtirish natijasi ekanligi va ikkita ota-ona majburiyatlari borligi haqida ma'lumot bo'ladi. Bundan tashqari, termoyadroviy, Git ko'proq ko'chirish operatsiyasini qo'llab-quvvatlaydi ( Engl. Rebase ). Bu operatsiya A filialidagi barcha o'zgarishlar to'plamini oladi, ularning keyingi "o'tish" filiali B. Natijada B filiali AB holatiga ko'tariladi. Birlashishdan farqli o'laroq, AB filiali tarixida A filialining oraliq majburiyatlari bo'lmaydi (faqat B filialining tarixi va rebasening o'zi haqidagi yozuv, bu katta va juda katta loyihalarni birlashtirishni osonlashtiradi). Shuningdek, Git-da vaqtinchalik mahalliy fayl indeksi mavjud. Bu haqiqiy fayllar va keyingi majburiyat o'rtasidagi oraliq saqlashdir (majburiyat faqat ushbu indeksdan amalga oshiriladi). Ushbu indeks yordamida yangi fayllar qo'shiladi ( git add ularni indeksga qo'shadi, ular keyingi majburiyatga kiritiladi ), shuningdek, barcha o'zgartirilgan fayllar bajarilmaydi (majburiyat faqat git add amalga oshirilgan fayllarga amalga oshiriladi) ga ). Git add-dan so'ng siz faylni yanada tahrirlashingiz mumkin, siz bir xil faylning uchta nusxasini olasiz - oxirgisi, indeksda ( git add vaqtida bo'lgan ) va oxirgi topshiriqda. Standart filial nomi master hisoblanadi . Odatiy "mavjud loyihani serverdan kompyuteringizga o'tkazish" operatsiyasi davomida git clone tomonidan yaratilgan standart masofaviy ombor nomi : origin . Shunday qilib, mahalliy omborxona har doim o'z ichiga mahorat filiali o'tgan mahalliy sodir bo'ladi, va kelib chiqishi / master filiali vaqt o'tgan da Uzoq odatiy oxirgi davlat, pull yoki surish buyruq yakunlandi . Qabul qilish buyrug'i (qisman tortib olish ) - masofaviy serverdan kelib chiqish / master ga kiritilgan barcha o'zgarishlarni qabul qiladi va ularni mahalliy omborga yozadi, kelib chiqish / asosiy tegni targ'ib qiladi . Deb Usta va keyin bo'lsa kelib chiqishi / master og'gan, keyin (birlashtirish natijasida uchun ustani, birlashtirish lozim pull buyruq hisoblanadi + birlashma olib ). Keyin birlashma natijasini serverga yuborish va unga kelib chiqish / masterni o'rnatish orqali surish mumkin . Windows versiyasi (rasmiy Windows versiyasi mSysGit deb ataladi) MinGW loyihasidan Windows uchun POSIX- mos keluvchi buyruq qatorining porti bo'lgan mSys paketidan foydalanadi . Git uchun zarur bo'lgan barcha kutubxonalar va vositalar, shuningdek, Gitning o'zi mSys ostida ko'chirildi. SSL orqali masofaviy omborlar bilan ishlashda Windows-dan emas, mSys-dan sertifikatlar do'koni ishlatiladi. Windows uchun TortoiseGit kabi bir nechta grafik Git ramkalari mavjud . Ularning barchasi mSysGit-ga qo'ng'iroqlar orqali amalga oshiriladi va uni mashinaga o'rnatishni talab qiladi. SourceTree, Atlassian yechimi bundan mustasno emas, lekin uning ichida mSysGit mavjud bo'lib, uning ijobiy va salbiy tomonlari bor (masalan, chuqur pastki katalogga o'rnatish mSys-ga kerakli SSL sertifikatlarini qo'shishni qiyinlashtiradi). Windows ko'pgina Unix-ga o'xshash tizimlarga qaraganda boshqa qator oxiri belgilaridan foydalanganligi sababli , ketma-ket yakuniy ko'rinishni ta'minlash uchun turli xil operatsion tizimlardan foydalanadigan jamoalar uchun variantlar (mijoz va ombor darajasida) mavjud. Git tarmoqdan faqat masofaviy omborlar bilan almashish operatsiyalari uchun foydalanadi. Quyidagi protokollardan foydalanish mumkin: git protokoli (URI sxemasi - git :) ochiq protokol [12] , serverda ishlaydigan git demonini talab qiladi [13] (Git bilan ta'minlangan), protokolda foydalanuvchi autentifikatsiya qilish vositalari yo'q; SSH ( ssh:) - kalit juftliklari yordamida foydalanuvchi autentifikatsiyasidan, shuningdek Unix tizimiga o'rnatilgan "asosiy" SSH serveridan (sshd) foydalanadi, server tomondan qobiq sifatida git bilan hisob yaratish talab etiladi; HTTP va HTTPS ( http: , https: ) - curl vositasidan foydalanadi (Windows uchun - git bilan birga keladi) va uning HTTP-autentifikatsiya qilish qobiliyati, shuningdek, SSL va sertifikatlarni qo'llab-quvvatlaydi. Ikkinchi holda, serverdagi Git buyruqlari va HTTP serveri (jumladan, ASP.NET MVC 4 da ishlab chiqilgan WebGitNet) o'rtasida qatlam sifatida ishlaydigan veb-ilovaning server tomonida ishlash talab qilinadi. Server tomonidagi surish va tortish buyruqlarini qo'llab-quvvatlashdan tashqari, bunday veb-ilovalar veb-brauzer orqali omborga faqat o'qish uchun kirishni ham ta'minlaydi. Foydalanilgan adabiyotlar ro’yxati: https://github.com/git/git/graphs/contributors Re: Trivia: Git qachon o'z-o'zini xost qilgan? https://git.kernel.org/pub/scm/git/git.git/tag/?h=v2.34.1 Open Hub-dagi git Open Source loyihasi: tillar sahifasi - 2006 yil. Orqaga o'tish:1 2 3 4 5 6 Git to'plami formati ↑ BitKeeper va Linux: yo'lning oxiri? (mavjud havola) . Olingan 7-noyabr 2017. Arxivlangan 8-iyun 2017-yil. ↑ Torvaldsning nutqi ↑ GitFaq: Nima uchun "Git" nomi . ↑ Munozaralardan so'ng Torvalds "git" ustida ishlay boshlaydi . Kompyuter dunyosi. .Chacon S., Straub B. Git Professional dasturchi uchun. - Butrus , 2017 .-- 496 b. - ISBN 978-5-496-01763-3 . Download 94.99 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling