Apruv qilish / Tasdiqlash: bu nima, approval va code review Gitda

Muallif: IT Sectr Nashr etilgan: 2026-08-01 O'qish vaqti: 8 daq

Approval (apruv) — bu GitHub, GitLab yoki Bitbucketda pull request code review-dan o‘tganligi va maqsadli filialga birlashtirilishi mumkinligini tasdiqlashdir. Repozitoriya egasi majburiy apruvlar sonini sozlaydi, ulardan keyin PR merge uchun blokdan chiqariladi. GitHub hujjatlariga (2026) ko‘ra, ko‘rib chiqish jarayonida ko‘rib chiqruvchi sharhlar qoldirishi, o‘zgartirishlarni so‘rashi (Request Changes) yoki PR-ni ma’qullashi (Approve) mumkin. Approval nafaqat rasmiyatchilik, balki huquqiy aktdir: ko‘rib chiqruvchi qabul qilinayotgan kod sifati uchun javobgarlikni o‘z zimmasiga oladi.

Asosiy

  • Apruv — code review-dan keyin pull request-ni ma’qullash, maqsadli filialga merge qilishga ruxsat beradi.
  • Ko'rib chiqruvchilar soni — repozitoriyada sozlanadi: 1 dan barcha tayinlanganlarning majburiy apruvigacha.
  • Request Changes — bloklovchi holat: PR tuzatishlardan keyin qayta ko‘rib chiqilgunga qadar birlashtirilmaydi.
  • Muallifning apruvi — taqiqlangan: qarorni kod yozishda ishtirok etmagan mustaqil dasturchi qabul qiladi.
  • CI/CD darvozalari — apruv PR-ni faqat barcha tekshiruvlar muvaffaqiyatli o‘tgandan keyin avtomatik blokdan chiqaradi.

Pull request apruvi nima

Apruv (approval) — bu pull request uchun ijobiy taqriz, ya‘ni ko‘rib chiqruvchi kodni tekshirdi, muhim muammolar topmadi va o‘zgarishlarni birlashtirishga tayyor deb hisoblaydi. GitHub interfeysida bu PR sahifasidagi yashil «Approve» tugmasidir. Apruvdan keyin muallif (yoki yozish huquqiga ega har qanday ishtirokchi) merge qilishi mumkin.

Apruv jarayoni Branch Protection Rules ning bir qismidir. Repozitoriya egalari majburiy talablarni sozlaydi: minimal apruv soni (masalan, 1 yoki 2), kim apruv qilishi mumkin (kod egalari, jamoa a’zolari) va PR o‘zgarishlardan keyin qayta apruv qilinishi kerakmi (Dismiss stale reviews). Qoidalar sozlanmagan holda, apruv ixtiyoriy qadamdir, ammo professional jamoalarda majburiydir.

GitLab Approval Rules nomli o‘xshash mexanizmdan foydalanadi. GitLabda turli guruhlardan (masalan, backend dasturchilaridan 2 ta va DevOpsdan 1 ta) qancha apruv talab qilinishini sozlash mumkin. Barcha majburiy apruvlar olingandan so‘ng, PR yashil CI/CD pipeline sharti bilan avtomatik ravishda merge uchun blokdan chiqariladi.

Ko'rib chiqish turlari: Approve, Request Changes, Comment

GitHub va GitLabda ko‘rib chiqruvchi pull requestda qoldirishi mumkin bo‘lgan uch turdagi ko‘rib chiqish mavjud. Har bir tur birlashtirish jarayoni uchun turli holat va oqibatlarga ega. Approve — yashil, Request Changes — qizil, Comment — neytral kulrang. Turni tanlash kod sifati va o‘zgarishlarning qabul qilishga tayyorligiga bog‘liq.

Approve — ko‘rib chiqruvchi tasdiqlaydi: kod to‘g‘ri yozilgan, standartlarga mos, aniq xatolar yo‘q va birlashtirilishi mumkin. Approve kod ideal degani emas — faqat ishlab chiqarish uchun yetarlicha yaxshi. Kichik izohlar (uslub, nomlash) bo‘lsa, ularni PRni bloklamasdan sharh sifatida qoldirish mumkin.

Request Changes — ko‘rib chiqruvchi merge dan oldin tuzatilishi kerak bo‘lgan muammolarni topadi: mantiqiy xatolar, zaifliklar, arxitektura buzilishlari, testlarning yo‘qligi. Request Changes dan keyin PR bloklanadi va blokdan chiqish uchun o‘sha ko‘rib chiqruvchidan qayta apruv talab qilinadi (agar yangi commitlarda Dismiss stale reviews opsiyasi yoqilgan bo‘lsa).

  • Approve — kod birlashtirishga tayyor, CI o‘tgandan keyin merge qilish mumkin.
  • Request Changes — majburiy tuzatishlar, PR qayta ko‘rib chiqilgunga qadar bloklangan.
  • Comment — PRni bloklamasdan umumiy izoh yoki taklif.

Repozitoriyada apruv qoidalarini sozlash

Branch Protection Rules — bu GitHubda birlashtirish sifatini nazorat qilish mexanizmi. Har bir himoyalangan filial (main, develop, release/*) uchun Settings → Branches da sozlanadi. Asosiy parametrlar: majburiy apruvlar soni, kod egalari (CODEOWNERS), majburiy CI/CD tekshiruvi va PRsiz push ta’qiqi.

Dismiss stale pull request approvals parametri — PRga yangi commit qo‘shilsa, apruvlarni avtomatik bekor qiladi. Bu ko‘rib chiqruvchilar aynan birlashtiriladigan kod versiyasini apruv qilishini kafolatlaydi. Bu sozlamasiz, muallif apruvdan keyin yangi kod qo‘shishi mumkin va u qayta tekshirilmasdan main ga tushadi.

CODEOWNERS — repozitoriyaning ildizidagi turli kataloglar uchun mas’ullarni tayinlaydigan fayl. PR kod egasiga tegishli fayllarga tegilsa, uning apruvi majburiy bo‘ladi. CODEOWNERS mas’uliyat zonalarini taqsimlaydi: iOS dasturchisi Swift fayllari uchun, DevOps — Docker konfiguratsiyalari uchun, testerlar — test stsenariylari uchun javob beradi.

bash
# Repo ildizida namunaviy CODEOWNERS fayli

# iOS dasturchilari Swift kodiga egalik qiladi
*.swift @team/ios-developers

# DevOps CI/CD konfiguratsiyasiga egalik qiladi
.github/workflows/* @devops-team

# QA muhandislari testlarni ko'rib chiqadi
**/tests/* @qa-engineers

# Qolgan hamma narsa uchun standart egalar
* @tech-leads

Apruvdan oldin code review: nimani tekshirish

Code review apruvdan oldin — bu diffga yuzaki qarash emas, balki kodni tizimli tekshirishdir. Sifatli code review arxitektura, mantiq, uslub, testlar va xavfsizlikni tekshirishni o‘z ichiga oladi. Bu tekshiruvsiz, apruv rasmiyatchilikka aylanadi va sifat nazorat vositasi bo‘lmaydi.

Avval nimani tekshirish kerak: o‘zgarishlar mantig‘i — kod qo‘yilgan vazifani hal qiladimi, nojo‘ya ta’sirlar bormi, chekka holatlarni qayta ishlash to‘g‘rimi. Testlar — yangi testlar barcha stsenariylarni qamrab oladimi, mavjud testlar o‘zgarishlardan keyin o‘tadimi. Xavfsizlik — SQL inyeksiyalari, XSS, nozik ma’lumotlarning sizib chiqishi bormi.

Ko‘rib chiqish predmeti bo‘lmasligi kerak: formatlash uslubi (buning uchun linterlar va formatterlar bor), oldindan qabul qilingan arxitektura qarorlari (ular kod yozishdan oldin muhokama qilinadi). Agar ko‘rib chiqishda 400 qatordan ortiq bo‘lsa yoki bir soatdan ko‘proq davom etsa — bu vazifa juda katta va parchalanishi kerakligining signalidir. Ko‘rib chiqish uchun eng yaxshi amaliyot — PR yaratilganidan keyin 24 soat ichida 200–400 qatorlik qismlar.

  • Mantiq — vazifa yechimining to‘g‘riligi, xato boshqaruvi, chekka holatlar.
  • Testlar — yangi stsenariylarning qamrovi, mavjudlarining o‘tishi, flaky-testlarning yo‘qligi.
  • Xavfsizlik — inyeksiyalarning yo‘qligi, chiqishni ekranlash, ma’lumotlarga kirish.
  • Unumdorlik — algoritmlarning samaradorligi, ortiqcha so‘rovlar, xotira sizmalari.
  • Hujjatlar — hujjatlar yangilanganmi, murakkab qismlardagi sharhlar tushunarlimi.

Jamoada apruv bilan ish oqimi

5–10 dasturchidan iborat jamoada apruv bilan odatdagi ish oqimi quyidagicha: dasturchi PR yaratadi, ko‘rib chiqruvchilarni tayinlaydi (odatda jamoadan 1–2 kishi yoki kod egalari), CI/CD avtomatik tekshirishlarni ishga tushiradi. Barcha majburiy apruvlar va yashil CI olingandan so‘ng, muallif merge qiladi. PR yaratilishidan mergegacha bo‘lgan vaqt murakkablikka qarab o‘rtacha 2 soatdan 2 kungacha.

GitHub Actions apruvdan keyin merge-ni avtomatlashtirishga imkon beradi. Filial qoidalari sozlangan bo‘lsa, GitHub barcha shartlar bajarilgunga qadar merge-ni o‘zi bloklaydi. Ba’zi jamoalar bors-ng yoki Mergify — barcha apruvlarni olib CI o‘tgandan keyin PRni avtomatik birlashtiradigan botlardan foydalanadi. Bu jarayonni tezlashtiradi va merge paytida inson omilini yo‘q qiladi.

Zamonaviy yondashuv — qisqa muddatli filiallar bilan trunk-based development. Bu ish oqimida apruv bir necha soat ichida olinishi kerak, aks holda vazifa eskirgan hisoblanadi va main bilan qayta sinxronizatsiyani talab qiladi. Yuqori ko‘rib chiqish madaniyatiga ega jamoalar apruv vaqtini 4 ish soatidan oshmasligiga intiladi.

Apruvdagi xatolar va ulardan qanday qochish

Eng keng tarqalgan xato — kodni haqiqiy tekshirmasdan rasmiy apruv. PR katta bo‘lsa yoki muddat yaqin bo‘lsa, ko‘rib chiqruvchi o‘zgarishlarga kirmasdan Approve tugmasini bosishi mumkin. Bu butun code review jarayonini qadrsizlantiradi. Yechim: PR hajmiga cheklov qo‘yish (400 qatordan oshmasligi) va avtomatik tekshirish uchun kod tahlil vositalaridan (SonarQube, CodeClimate) foydalanish.

Ikkinchi xato — haddan tashqari qattiq apruv. Ideal kodni kutish rivojlanishni bloklaydi. Ko‘rib chiqruvchilar ba’zan sifatga ta’sir qilmaydigan uslubiy izohlarni tuzatishni talab qiladi. Yechim: majburiy izohlarni (bloklovchi) va ixtiyoriy takliflarni (sharhlar) aniq ajratish. GitHub izohning bloklovchi yoki yo‘qligini aniq ko‘rsatishga imkon beradi.

Uchinchi xato — CI/CD ni tekshirmasdan apruv. Kod to‘g‘ri ko‘rinsa ham, u kompilyatsiya qilinmasligi yoki testlarda muvaffaqiyatsiz bo‘lishi mumkin. Sozlangan Branch Protection qizil CI vaqtida merge-ni avtomatik bloklaydi, ammo ba’zi jamoalar tezlik uchun bu himoyani o‘chiradi. Yechim: apruvdan oldin har doim CI holatini tekshiring va qizil pipeline bilan PRni hech qachon ma’qullamang.

  • Rasmiy apruv — kodni real tekshirmaslik. Yechim: PRga 400 qator cheklovi.
  • Haddan tashqari qattiqqo‘llik — uslubiy izohlarga ko‘ra bloklash. Yechim: blocking va optionalga bo‘lish.
  • CIni e’tiborsiz qoldirish — qizil pipeline bilan apruv. Yechim: har doim tekshiruv holatini tekshiring.
  • Muallifni tayinlash — PR muallifidan apruv. Yechim: muallifga qarshi Branch Protection sozlash.

Tez-tez beriladigan savollar

PRni apruv qilish yoki tasdiqlash nimani anglatadi?

Apruv qilish — code review dan keyin GitHub/GitLabda Approve tugmasini bosib, pull requestni tasdiqlash. Bu kod tekshirilgan, standartlarga mos va birlashtirishga tayyor degani. Apruv — Branch Protection qoidalari sozlangan himoyalangan filiallarga merge qilish uchun majburiy shart.

PR uchun qancha apruv kerak?

Repozitoriya qoidalariga bog‘liq. Minimal standart — muallif bo‘lmagan ko‘rib chiqruvchidan 1 apruv. Kritik komponentlar (to‘lov modullari, xavfsizlik) uchun 2–3 apruv talab qilinishi mumkin. Son Branch Protection Rules GitHub yoki Approval Rules GitLabda sozlanadi.

Approve va Request Changes o‘rtasidagi farq nima?

Approve — kod birlashtirishga tayyor, izohlar ixtiyoriy. Request Changes — kod majburiy tuzatilishi kerak bo‘lgan muammolarni o‘z ichiga oladi, PR qayta ko‘rib chiqilgunga qadar bloklanadi. Request Changes da merge mumkin emas, Approve da — CI/CD tekshiruvlari o‘tgandan keyin mumkin.

Muallif o‘z PRini apruv qila oladimi?

Yo‘q, muallif o‘z PRini apruv qila olmaydi — bu mustaqil ko‘rib chiqish printsipiga zid. GitHub bu imkoniyatni interfeys darajasida bloklaydi. Repozitoriya sozlamalari taqiqlamasa ham, muallifning apruvi haqiqiy hisoblanmaydi, chunki kodning tashqi tekshiruvi bo‘lmagan.

Dismiss stale reviews nima?

Dismiss stale review — PRga yangi commitlar qo‘shilganda apruvlarni avtomatik bekor qiladigan Branch Protection opsiyasi. Ko‘rib chiqruvchilar aynan joriy kod versiyasini ma’qullashini kafolatlaydi. Bu opsiyasiz, muallif apruvdan keyin kodni o‘zgartirishi mumkin va o‘zgarishlar qo‘shimcha tekshiruvsiz mainga tushadi.

Xulosa

  • Apruv — ko‘rib chiqruvchi tomonidan pull requestni ma’qullash, himoyalangan filialga birlashtirishga ruxsat beradi.
  • GitHub/GitLab turli bloklash holati bilan uch turdagi ko‘rib chiqishni qo‘llab-quvvatlaydi: Approve, Request Changes va Comment.
  • Branch Protection Rules minimal apruv sonini va yangi commitlarda avtomatik bekor qilishni sozlaydi.
  • CODEOWNERS mas’uliyat zonalarini taqsimlaydi: kod egasining apruvi uning kataloglari uchun majburiydir.
  • Apruvdan oldin code review mantiq, testlar, xavfsizlikni o‘z ichiga olishi kerak — nafaqat uslubni.
  • Tekshiruvsiz rasmiy apruv — asosiy xato. Yechim: PR hajmini 400 qator bilan cheklash.
  • CI/CD pipeline apruvdan oldin yashil bo‘lishi kerak, hatto kod to‘g‘ri ko‘rinsa ham.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing