Approval (apruv) — bu GitHub, GitLab və ya Bitbucket-də pull request-in code review-dən keçdiyini və hədəf filiala birləşdirilə biləcəyini təsdiqləmədir. Repozitoriya sahibi məcburi apruvların sayını konfiqurasiya edir, onlardan sonra PR merge üçün blokdan çıxarılır. GitHub sənədləşdirməsinə (2026) görə, rəy prosesində rəyçi şərhlər buraxa, dəyişikliklər tələb edə (Request Changes) və ya PR-i təsdiqləyə (Approve) bilər. Approval təkcə formalite deyil, həm də hüquqi aktdır: rəyçi qəbul edilən kodun keyfiyyətinə görə məsuliyyət daşıyır.
Başlıca
Apruv (approval) — bu pull request-ə müsbət rəydir, yəni rəyçi kodu yoxladı, kritik problemlər tapmadı və dəyişiklikləri birləşdirməyə hazır hesab edir. GitHub interfeysində bu, PR səhifəsindəki yaşıl «Approve» düyməsidir. Apruvdan sonra müəllif (və ya yazmaq hüququ olan istənilən iştirakçı) merge edə bilər.
Apruv prosesi Branch Protection Rules-un bir hissəsidir. Repozitoriya sahibləri məcburi tələbləri konfiqurasiya edir: minimum apruv sayı (məsələn, 1 və ya 2), kimin apruv edə biləcəyi (kod sahibləri, komanda üzvləri) və PR-in dəyişikliklərdən sonra təkrar apruv edilməli olub-olmaması (Dismiss stale reviews). Qaydalar konfiqurasiya edilmədikdə apruv isteğə bağlı addımdır, lakin peşəkar komandalarda məcburidir.
GitLab Approval Rules adlı oxşar mexanizmdən istifadə edir. GitLab-da müxtəlf qruplardan (məsələn, backend tərtibatçılarından 2 və DevOps-dan 1) nə qədər apruv tələb olunduğunu konfiqurasiya etmək olar. Bütün məcburi apruvlar alındıqdan sonra PR yaşıl CI/CD pipeline şərti ilə avtomatik olaraq merge üçün blokdan çıxarılır.
GitHub və GitLab-da rəyçinin pull request-ə buraxa biləcəyi üç növ rəy var. Hər növün birləşdirmə prosesi üçün fərqli statusu və nəticələri var. Approve — yaşıl, Request Changes — qırmızı, Comment — neytral boz. Növün seçimi kodun keyfiyyətindən və dəyişikliklərin qəbul edilməyə hazırlığından asılıdır.
Approve — rəyçi təsdiqləyir: kod düzgün yazılıb, standartlara uyğundur, açıq səhvlər yoxdur və birləşdirilə bilər. Approve kodun mükəmməl olduğunu deyil — yalnız istehsal üçün kifayət qədər yaxşı olduğunu bildirir. Kiçik qeydlər varsa (stil, adlandırma), onları PR-i bloklamadan şərh kimi buraxmaq olar.
Request Changes — rəyçi merge-dən əvvəl düzəldilməli olan problemlər tapır: məntiqi səhvlər, zəifliklər, memarlıq pozuntuları, testlərin olmaması. Request Changes-dən sonra PR bloklanır və blokdan çıxmaq üçün eyni rəyçidən təkrari apruv tələb olunur (yeni commit-lərdə Dismiss stale reviews opsiyası aktivdirsə).
Branch Protection Rules — bu GitHub-da birləşdirmə keyfiyyətinə nəzarət mexanizmidir. Hər qorunan filial (main, develop, release/*) üçün Settings → Branches bölməsində konfiqurasiya edilir. Əsas parametrlər: məcburi apruvların sayı, kod sahibləri (CODEOWNERS), məcburi CI/CD yoxlaması və PR olmadan push qadağanı.
Dismiss stale pull request approvals parametri — PR-ə yeni commit əlavə edildikdə apruvları avtomatik ləğv edir. Bu, rəyçilərin məhz birləşdiriləcək kod versiyasını apruv etməsini təmin edir. Bu parametr olmadan müəllif apruvdan sonra yeni kod əlavə edə bilər və o, təkrari yoxlama olmadan main-ə düşər.
CODEOWNERS — repozitoriyanın kök qovluğunda müxtəlif qovluqlar üçün məsul şəxsləri təyin edən fayldır. PR kod sahibinə aid fayllara toxunarsa, onun apruvu məcburi olur. CODEOWNERS məsuliyyət zonalarını bölməyə imkan verir: iOS tərtibatçısı Swift fayllarına, DevOps — Docker konfiqlərinə, testçilər — test ssenarilɐ15frinə cavabdehdir.
# Repo kökündə nümunə CODEOWNERS faylı
# iOS tərtibatçıları Swift koduna sahibdir
*.swift @team/ios-developers
# DevOps CI/CD konfiqurasiyasına sahibdir
.github/workflows/* @devops-team
# QA mühəndisləri testləri yoxlayır
**/tests/* @qa-engineers
# Qalan hər şey üçün defolt sahiblər
* @tech-leads
Code review apruvdan əvvəl — bu, diff-ə səthi baxış deyil, kodun sistematik yoxlanmasıdır. Keyfiyyətli code review memarlığın, məntiqin, stilinc, testlərin və təhlükəsizliyin yoxlanmasını əhatə edir. Bu yoxlama olmadan apruv formaliteyə çevrilir və keyfiyyətə nəzarət alətinə çevrilmir.
Əvvəlcə nə yoxlanır: dəyişikliklərin məntiqi — kod qarşıya qoyulan tapşırığı həll edirmi, yan təsirlər varmı, sərhəd hallarının işlənməsi düzgündürmü. Testlər — yeni testlər bütün ssenariləri əhatə edirmi, mövcud testlər dəyişikliklərdən sonra keçirmi. Təhlükəsizlik — SQL-inyeksiyaları, XSS, həssas məlumatların sızması varmı.
Nə rəyin predmeti olmamalıdır: formatlaşdırma stili (bunun üçün linterlər və formatterlər var), əvvəlcədən qəbul edilmiş memarlıq qərarları (onlar kod yazılmamışdan əvvəl müzakirə edilir). Rəydə 400 sətirdən çox varsa və ya bir saatdan çox çəkirsə — bu, tapşırığın çox böyük olduğunu və parçalanma tələb etdiyini göstərir. Rəy üçün ən yaxşı təcrübə — PR yaradıldıqdan sonra 24 saat ərzində 200–400 sətirlik hissələr.
5–10 tərtibatçıdan ibarət komandada apruv ilə tipik iş axını belə görünür: tərtibatçı PR yaradır, rəyçilər təyin edir (adətən komandadan 1–2 nəfər və ya kod sahibləri), CI/CD avtomatik yoxlamaları işə salır. Bütün məcburi apruvlar və yaşıl CI alındıqdan sonra müəllif merge edir. PR yaradılmasından merge-ə qədər olan müddət mürəkkəblikdən asılı olaraq orta hesabla 2 saatdan 2 günə qədərdir.
GitHub Actions apruvdan sonra merge-i avtomatlaşdırmağa imkan verir. Filial qaydaları konfiqurasiya edilərsə, GitHub bütün şərtlər yerinə yetirilənə qədər merge-i özü bloklayır. Bəzi komandalar bors-ng və ya Mergify — bütün apruvları alıb CI keçdikdən sonra PR-i avtomatik birləşdirən botlardan istifadə edir. Bu, prosesi sürətləndirir və merge zamanı insan faktorunu aradan qaldırır.
Müasir yanaşma — qısaömürlü filiallarla trunk-based development. Bu iş axınında apruv bir neçə saat ərzində alınmalıdır, əks halda tapşırıq köhnəlmiş sayılır və main ilə təkrari sinxronizasiya tələb edir. Yüksək rəy mədəniyyətinə malik komandalar 4 iş saatından çox olmayan apruv müddətinə can atırlar.
Ən tez-tez rast gəlinən səhv — kodun həqiqi yoxlanması olmadan formal apruv. PR böyük və ya deadline yaxın olduqda, rəyçi dəyişikliklərə varmadan Approve düyməsini basa bilər. Bu, bütün code review prosesini dəyərsizləşdirir. Həll yolu: PR ölçüsünə limit qoymaq (400 sətirdən çox olmamaq) və avtomatik yoxlama üçün kod analizi alətlərindən (SonarQube, CodeClimate) istifadə etmək.
Ikinci səhv — həddindən artıq sərt apruv. Mükəmməl kod gözləməsi inkişafı bloklayır. Rəyçilər bəzən keyfiyyətə təsir etməyən stilistik qeydləri düzəltməyi tələb edirlər. Həll yolu: məcburi qeydləri (bloklayan) və isteğə bağlı təklifləri (şərhlər) aydın şəkildə ayırmaq. GitHub şərhin bloklayıb-bloklamadığını aydın göstərməyə imkan verir.
Üçüncü səhv — CI/CD yoxlanmadan apruv. Kod düzgün görünsə belə, o, tərtib olunmaya və ya testlərdə uğursuz ola bilər. Konfiqurasiya edilmiş Branch Protection qırmızı CI zamanı merge-i avtomatik bloklayır, lakin bəzi komandalar sürətləndirmək üçün bu müdafiəni söndürür. Həll yolu: apruvdan əvvəl CI statusunu həmişə yoxlamaq və qırmızı pipeline ilə PR-i heç vaxt təsdiqləməmək.
Tez-tez verilən suallar
Apruv etmək — code review-dən sonra GitHub/GitLab-da Approve düyməsini basaraq pull request-i təsdiqləmək. Bu, kodun yoxlanıldığını, standartlara uyğun olduğunu və birləşdirməyə hazır olduğunu bildirir. Apruv — Branch Protection qaydaları konfiqurasiya edilmiş qorunan filiallarda merge üçün məcburi şərtdir.
Repo qaydalarından asılıdır. Minimal standart — müəllif olmayan rəyçidən 1 apruv. Kritik komponentlər (ödəniş modulları, təhlükəsizlik) üçün 2–3 apruv tələb oluna bilər. Say GitHub Branch Protection Rules və ya GitLab Approval Rules-da konfiqurasiya edilir.
Approve — kod birləşdirməyə hazırdır, qeydlər isteğə bağlıdır. Request Changes — kod məcburi düzəliş tələb edən problemlər ehtiva edir, PR təkrari rəyə qədər bloklanır. Request Changes zamanı merge mümkün deyil, Approve zamanı — CI/CD yoxlamaları keçdikdən sonra mümkündür.
Xeyr, müəllif öz PR-ni apruv edə bilməz — bu müstəqil rəy prinsipinə ziddir. GitHub bu imkanı interfeys səviyyəsində bloklayır. Repozitoriya parametrləri qadağan etməsə belə, müəllifin apruvu etibarlı sayılmır, çünki kodun xarici yoxlanması olmayıb.
Dismiss stale review — PR-ə yeni commit-lər əlavə edildikdə apruvları avtomatik ləğv edən Branch Protection opsiyası. Rəyçilərin məhz cari kod versiyasını təsdiqləməsini təmin edir. Bu opsiya olmadan müəllif apruvdan sonra kodu dəyişə bilər və dəyişikliklər əlavə yoxlama olmadan main-ə düşər.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun