Maqolalar 2 daqiqa 43 ko‘rish
Git nomlar fazosi: bitta bazada ko‘p repozitoriy
Namespace bitta repozitoriydagi ref'larni mantiqan ajratib, tashqaridan bir nechta mustaqil repozitoriyga o‘xshatadi. GIT_NAMESPACE, ichki refs/namespaces/ joylashuvi va nega bu xavfsizlik chegarasi emasligi.
Mundarija
Bitta obyektlar bazasidan bir nechta mantiqiy repozitoriy xizmatini ko‘rsatish kerak bo‘lsa, namespace shu ishni qiladi. Bo‘lim qisqa, lekin oxiridagi xavfsizlik izohi muhim: namespace ref'larni ajratadi, obyektlarni esa to‘liq ajratmaydi.
Bu ma’lumotnoma, dars emas
Bu qism Git'ning rasmiy qo‘llanmasi (git help namespaces, 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.
Nomi#
gitnamespaces — Git nomlar fazolari.
Tavsif#
Git namespace bitta repozitoriydagi ref’larni mantiqan ajratib, tashqi tomondan bir nechta mustaqil repozitoriyga o‘xshatadi. Har bir namespace o‘z branchlari, teglari va HEAD kabi ref’larini ko‘radi, ammo obyektlar bazasi va konfiguratsiyaning ayrim qismlarini umumiy ishlatadi.
Namespace tanlash:
GIT_NAMESPACE=alice git show-ref
Yoki:
git --namespace=alice show-ref
Namespace’dagi ref’lar ichkarida refs/namespaces/<namespace>/refs/... ostida saqlanadi. Masalan, alice namespace’dagi refs/heads/main:
refs/namespaces/alice/refs/heads/main
Namespace nomi / saqlashi mumkin; har bir qism ichma-ich refs/namespaces/ orqali kengaytiriladi.
Asosiy qo‘llanish holati — git daemon, SSH yoki HTTP orqali bitta obyektlar bazasidan bir necha mantiqiy repozitoriy xizmatini ko‘rsatish. Server GIT_NAMESPACE ni autentifikatsiya qilingan foydalanuvchi yoki virtual loyiha nomidan kelib chiqib belgilashi mumkin.
Xavfsizlik#
Namespace’lar ref’larni ajratadi, lekin obyektlarni to‘liq xavfsizlik chegarasi sifatida ajratmaydi. Bir namespace foydalanuvchisi boshqa namespace’dagi ref nomini ko‘rmasligi mumkin, ammo obyekt ID ma’lum bo‘lsa yoki obyekt boshqa yo‘l bilan erishiladigan bo‘lsa, umumiy obyektlar bazasidagi ma’lumot sizib chiqishi ehtimoli bor.
Shuning uchun:
- o‘zaro ishonmaydigan tenantlar uchun namespace’ni yagona maxfiylik himoyasi deb hisoblamang;
- qat’iy ajratish zarur bo‘lsa, alohida repozitoriy va filesystem ruxsatlaridan foydalaning;
- serverdagi upload/receive hooklari va yashirin ref sozlamalarini tekshiring;
- foydalanuvchidan kelgan namespace qiymatini tekshirmasdan muhitga qo‘ymang.
Namespace’lar administrativ va saqlash optimallashtirish vositasi; sandbox yoki access-control tizimi emas.
Git to‘plami#
git(1) buyruqlar to‘plamining bir qismi.