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 (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.
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).
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.
# 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
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.
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.
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.
Tez-tez beriladigan savollar
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.
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 — 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.
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 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
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.
Shuningdek o'qing