Modül 3 · Collaboration · ⏱ 15 dakika

Pull requests ve code review

Pull requests and code review

Bu derste neler öğreneceksin

  • Pull request'in amacını ve anatomisini açıklamak
  • Review türlerini (Approve, Request changes, Comment) bilmek
  • Draft PR ve normal PR arasındaki farkı anlamak
  • Merge stratejilerini ve hangi durumda hangisini seçeceğini açıklamak
  • Required reviews ve branch protection'ın bağlantısını kurmak

Pull Request (PR), bir branch’teki değişiklikleri başka bir branch’e (genellikle main) merge etme tekliifdir. PR GitHub’ın işbirliğinin merkezindedir ve GH-900’ün en kritik konularından biridir.

Pull Request anatomisi

PR açıldığında şu bileşenler görünür:

BileşenAçıklama
TitleDeğişikliğin özeti
DescriptionNeden yapıldı, nasıl test edildi
Commits tabPR’daki commit’lerin listesi
Files changedDiff görünümü
ConversationsReview yorumları
ChecksCI/CD sonuçları
ReviewersKim review edecek
Labels / AssigneesKategori ve sorumlular
Linked issuesİlgili issue’lar

PR oluşturmak

git switch -c feature/dark-mode
# değişiklikler...
git commit -am "Add dark mode toggle"
git push -u origin feature/dark-mode
gh pr create --title "Add dark mode" --body "Resolves #88"

GitHub web UI’da push sonrası “Compare & pull request” banner’ı çıkar.

Draft PR

Draft PR, incelemeye hazır olmayan ama takıma görünür olması istenen PR’dır. Review yapılamamaz (submit review butonu disable). Hazır olduğunda “Ready for review” tıklanır.

Kullanım senaryoları:

  • WIP (Work in Progress) bildirimi
  • CI’nın çalışmasını izlemek
  • Erken geri bildirim almak

Review türleri

Reviewer, PR’ı inceledikten sonra üç seçenekten biri ile submit eder:

TipNe zaman?Etki
ApproveDeğişiklikler kabul edilebilirMerge için yeşil ışık
Request changesDüzeltme gerekliMerge engellenebilir
CommentTarafsız yorumMerge engellenmez

Request changes veren reviewer sonradan Approve ile geçişini güncellemelidir.

Inline comment

Files changed sekmesinde, satır numarasına tıklayarak o satıra yorum eklenir. Birden fazla satır seçilip toplu yorum da eklenebilir. “Start a review” ile yorumlar toplu submit edilir (her yorumda bildirim gitmez).

Merge stratejileri

StratejiAçıklamaGeçmiş
Merge commitTüm commit’ler korunur, ek merge commit eklenirNon-linear
Squash and mergeTüm commit’ler tek commit’e sıkıştırılırTemiz
Rebase and mergeCommit’ler main’in ucuna eklenir, merge commit yokLinear

Hangi strateji izin verileceği repo Settings → General’dan kısıtlanabilir.

PR ve branch protection

Branch protection kuralları PR workflow’unu zorlar. Örnek kural: “main’e merge için en az 1 approve gerekli.” Bunu geçersiz kılmak için admin yetkisi lazım.

Protected branch olmadan PR merge için herhangi bir kısıtlama yoktur.

Auto-merge

Tüm required check’ler ve review’lar tamamlandığında PR’ın otomatik merge edilmesi ayarlanabilir. Repo Settings → General → Auto-merge’e izin verilmeli; sonra PR ekranında “Enable auto-merge” seçilir.

PR’ı kapatmak (merge etmeden)

PR merge edilmeden de kapatılabilir: “Close pull request” butonu. Branch silinmeden kalır.

Sınav perspektifinden dikkat noktaları

  • Draft PR → review edilemez, approve edilemez
  • Request changes yetkisi reviewer’da, merge yetkisi maintainer’da
  • Squash merge branch commit geçmişini main’e tek commit olarak ekler
  • PR’ı merge etmek için gerekli minimum yetki: “Write” access
  • Auto-merge: required status check’ler ve review’lar tamamlanınca tetiklenir

Sırada ne var?

Sonraki derste GitHub Discussions ve mention mekanizmasını ele alacağız.