Modül 3 · Collaboration · ⏱ 12 dakika

Issues ve label sistemi

Issues and label system

Bu derste neler öğreneceksin

  • GitHub Issues'un amacını ve bileşenlerini açıklamak
  • Label, milestone ve assignee kavramlarını anlamak
  • Issue şablonlarını nasıl oluşturacağını bilmek
  • Issue'ları commit ve PR'larla nasıl bağlayabileceğini öğrenmek

GitHub Issues, bir projede yapılacak işleri, hataları ve önerileri takip etmek için kullanılan yerleşik görev yönetim sistemidir. GH-900 sınavının ağır domain’lerinden biri olan collaboration’ın temel taşıdır.

Issue nedir?

Issue, bir proje içinde tartışılabilecek ve takip edilebilecek herhangi bir konuyu temsil eder:

  • Bug (hata raporu)
  • Feature request (özellik isteği)
  • Soru veya tartışma
  • Görev veya yapılacak iş

Her issue’nun bileşenleri:

BileşenAçıklama
TitleKısa açıklama
BodyMarkdown destekli detay
AssigneesSorumlu kişi(ler)
LabelsKategorilendirme etiketleri
Milestoneİlgili sürüm veya sprint
ProjectsBağlantılı project board
Linked PRsİlgili pull request’ler
CommentsTartışma thread’i

Labels

Label’lar issue ve PR’ları kategorize eder. GitHub varsayılan olarak şu label’larla gelir:

LabelRenkAnlam
bugKırmızıHata raporu
enhancementMaviYeni özellik
good first issueYeşilYeni katkıcılar için
help wantedSarıEkstra yardım gerekiyor
documentationDokümantasyon değişikliği
duplicateDaha önce açılmış
invalidGeçersiz issue
wontfixBeyazÇözülmeyecek
questionPembeSoru

Özel label’lar oluşturulabilir: Issues → Labels → New label.

Milestones

Milestone, ilgili issue ve PR’ları bir hedef etrafında gruplar. Genellikle bir sürüm veya sprint’e karşılık gelir. Milestone’un ilerleme çubuğu, açık/kapalı issue sayısına göre otomatik hesaplanır.

Oluşturmak için: Issues → Milestones → New milestone, başlık, açıklama ve due date ekle.

Issue şablonları

.github/ISSUE_TEMPLATE/ dizininde şablon dosyaları oluşturarak issue açma ekranında form sunulabilir:

<!-- .github/ISSUE_TEMPLATE/bug_report.md -->
---
name: Bug Report
about: Bir hata bildirin
labels: bug
---

## Hata açıklaması
<!-- Hatayı kısaca açıklayın -->

## Yeniden üretme adımları
1. '...' sayfasına git
2. '...' butonuna tıkla
3. Hata görünür

## Beklenen davranış
<!-- Ne olmasını bekliyordunuz? -->

## Ekran görüntüsü
<!-- Uygulanabilirse ekran görüntüsü ekleyin -->

YAML front matter ile label, assignee otomatik atanabilir.

Issue’ları PR ve commit’lerle bağlamak

Issue’yu otomatik kapatmak için PR açıklamasına veya commit mesajına anahtar kelime + issue numarası ekle:

Closes #42
Fixes #42
Resolves #42

PR merge edildiğinde issue otomatik kapanır.

Farklı repo’daki issue için:

Closes owner/repo#42

Issue’larda mention ve cross-reference

  • @username — kullanıcı mention
  • #42 — aynı repo’daki issue veya PR’a link
  • Commit SHA yazınca otomatik link oluşur

Issue’ları CLI ile yönetmek

# Issue oluştur
gh issue create --title "Login sayfası yavaş" --label bug --assignee ydemir

# Issue listele
gh issue list --label bug --state open

# Issue kapat
gh issue close 42 --comment "v1.2.0 ile düzeltildi"

Sınav perspektifinden dikkat noktaları

  • Issue şablonları .github/ISSUE_TEMPLATE/ altında tanımlanır
  • Closes #42 sadece default branch’e merge edilince çalışır
  • Milestone kapatıldığında bağlı open issue’lar kapanmaz
  • good first issue etiketi GitHub Explore’da öne çıkar — açık kaynak katkı için
  • Issue numarası repo içinde unique’tir ve PR’larla aynı numaralandırma havuzunu paylaşır

Sırada ne var?

Sonraki derste pull request’ler ve code review sürecini derinlemesine ele alacağız.