Asosiy kontentga o‘tish

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.

git devops

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:

Terminal
GIT_NAMESPACE=alice git show-ref

Yoki:

Terminal
git --namespace=alice show-ref

Namespace’dagi ref’lar ichkarida refs/namespaces/<namespace>/refs/... ostida saqlanadi. Masalan, alice namespace’dagi refs/heads/main:

Misol
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.

2 daqiqa 43 marta o‘qildi