Asosiy kontentga o‘tish

Maqolalar 4 daqiqa 32 ko‘rish

CVS'dan Git'ga: umumiy repozitoriy uslubi

CVS'ga o‘rgangan jamoa uchun Git: bitta umumiy repozitoriy bilan ishlash, bare shared repozitoriy yaratish, CVS arxivini import qilish va server hooklari orqali branch siyosatini belgilash.

git devops

Mundarija

Git taqsimlangan tizim, lekin hamma bitta markaziy repozitoriyga push qiladigan CVS uslubida ham ishlay oladi. Bu bo‘lim aynan shu o‘tish yo‘lini tushuntiradi: umumiy repozitoriy qanday sozlanadi, eski arxiv qanday import qilinadi va kim nimaga push qila olishi qanday cheklanadi.

Bu ma’lumotnoma, dars emas

Bu qism Git'ning rasmiy qo‘llanmasi (gitcvs-migration(7), Git 2.50.1) asosida o‘zbekchaga o‘girilgan. Ketma-ket bajariladigan dars emas: kerak bo‘lganda ochib, kerakli joyini o‘qiysiz. Git'ni noldan o‘rganmoqchi bo‘lsangiz, avval Git va GitHub darslarini bajaring.

Mahalliy Git 2.50.1 paketida man sahifa o‘rnatilmaganligi sababli rasmiy Git hujjatidagi qo‘llanma asosida tarjima qilindi.

Nomi#

gitcvs-migration — CVS foydalanuvchilari uchun Git.

Qisqacha ishlatilishi#

Terminal
git cvsimport *

Tavsif#

Git CVS’dan farq qiladi: har bir ishchi daraxt loyiha tarixining to‘liq nusxasiga ega repozitoriyni saqlaydi va hech bir repozitoriy tabiatan boshqasidan muhimroq emas. Shunga qaramay, hamma sinxronlanadigan yagona shared repozitoriy belgilab, CVS modeliga o‘xshash ishlash mumkin.

Avval gittutorial(7) va gitglossary(7) bilan tanishish yetarli boshlang‘ich bilim beradi.

Umumiy repozitoriy bilan ishlash#

foo.com dagi /pub/repo.git ni klonlash:

Terminal
git clone foo.com:/pub/repo.git/ my-project
cd my-project

CVS’dagi cvs update ga yaqin amal:

Terminal
git pull origin

O‘zgarishlarni yuborish:

Terminal
git push origin master

Git’da ish avval mahalliy commit qilinadi, keyin umumiy repozitoriyga push qilinadi. Shu sababli tarmoq uzilgan paytda ham commit, log va diff ishlaydi.

Umumiy repozitoriy yaratish#

Bare shared repozitoriy yaratish:

Terminal
git init --bare --shared /pub/my-repo.git

Barcha committerlarni bitta tizim guruhiga kiriting va repozitoriyni shu guruhga bering:

Terminal
chgrp -R <group> /pub/my-repo.git

Kataloglar boshqa guruh a’zolari tomonidan yozilishi va ko‘rilishi uchun mos umask hamda setgid ruxsatlari zarur. --shared kerakli Git konfiguratsiyasini va boshlang‘ich ruxsatlarni sozlashga yordam beradi.

Har bir dasturchi repozitoriyni klonlab, mahalliy commitlar yaratadi va tayyor ishni push qiladi. Push rad etilsa, avval yangiliklarni pull/rebase qilib, konfliktlarni hal qilish kerak.

CVS arxivini import qilish#

Tarixiy qo‘llanmadagi usul:

Terminal
git cvsimport -C <destination> <module>

Bu CVS modulini <destination> ichidagi Git repozitoriysiga import qiladi. git cvsimport cvsps ga tayanadi.

Zamonaviy bir martalik migratsiyada cvs2git yoki cvs-fast-export yaxshiroq natija berishi mumkin. Import qilingan branchlarda bevosita ishlashdan oldin mualliflar, teglar, branchlar, fayl tarkibi va commit vaqtlarini tekshiring.

Masofaviy nom bilan incoming branchlarni ajratish tavsiya qilinadi:

Terminal
git cvsimport -C project-git -r cvs <module>

Import tekshiruvi:

Terminal
git fsck --full
git log --all --graph --decorate --oneline
git tag --list

Shared public repozitoriy kerak bo‘lsa, import natijasidan bare klon yarating:

Terminal
git clone --bare project-git project.git

Kengaytirilgan boshqaruv#

Branch bo‘yicha ruxsat va siyosatni server hooklari, ayniqsa pre-receive va update, orqali tekshirish mumkin. Masalan:

  • faqat ayrim foydalanuvchilarga muayyan branchga push ruxsati;
  • non-fast-forward push’ni taqiqlash;
  • teglarni o‘chirish yoki almashtirishni cheklash;
  • commit xabari yoki imzosini tekshirish.

Hook rad etsa, push qabul qilinmaydi. Hooklar executable bo‘lishi va ishonchli server tomonida saqlanishi kerak.

Git’ga CVS kirishini berish#

Eski CVS mijozlariga Git repozitoriysini CVS serveri sifatida ko‘rsatish uchun git cvsserver dan foydalanish mumkin. Tafsilotlar git-cvsserver(1) da.

Bu moslik qatlami Git’ning barcha imkoniyatlarini bermaydi; imkon bo‘lsa foydalanuvchilarni to‘g‘ridan-to‘g‘ri Git ish jarayoniga ko‘chirish ma’qul.

Muqobil ish modellari#

CVS foydalanuvchilari umumiy repozitoriyga bir guruh dasturchi commit qilishiga o‘rgangan. Git buni qo‘llaydi, ammo taqsimlangan tabiati boshqa modellarni ham beradi:

  • bitta maintainer asosiy public repozitoriyni yuritadi;
  • dasturchilar uni klonlab, mustaqil branchlarda ishlaydi;
  • tayyor o‘zgarishlar uchun pull request yoki pull so‘rovi yuboradi;
  • maintainer o‘zgarishlarni tekshiradi va asosiy tarixga qo‘shadi;
  • kichik jamoalar markaziy maintainersiz bir-birining repozitoriylaridan pull qilishi mumkin.

Shuningdek qarang#

gittutorial(7), gittutorial-2(7), gitcore-tutorial(7), gitglossary(7), giteveryday(7).

4 daqiqa 32 marta o‘qildi