GitHub ile açık kaynak projelere katkıda bulunmak


Uzun zamandır aklımda olan Open-Source projelere dil bağımsız katkıda bulunmak için izlenecek yol yordamı -döküman şeklinde- paylaşıyorum.

GitHub != Git
Git; kod yönetim ve sürüm kontrol sistemidir. GitHub ise Git projelerinizi depolayabileceğiniz çok güçlü bir platformdur.

Neden PR yaparız?

Projede bug olabilir, yeni özellikler kazandırmak isteyebilirsiniz. Bu tarz değişikleri PR yaparak projelere katkıda bulunabilirsiniz.

1. Fork

İlk olarak GitHub projemizi forklayalım.

Not: Fork, GitHub üzerindeki bir projeyi kendi hesabınıza klonlamanızı sağlar.

2. Clone

Kendi hesabımıza forkladığımız projeyi bilgisayarımıza indirelim.

git clone PROJE_URL

3. Branch!

Burada birinci kuralımız her işi branch’lere ayırmak olacaktır (master veya develop branch’i üzerinden de gidebilirsiniz ancak tavsiye etmiyorum). İkinci kuralımız, referans branch’imize dikkat etmemiz olacaktır. Genelde bu master olur ama bazen “3.x”,“2.0” gibi sürümler de olabiliyor. Bu duruma göre üzerinden gideceğiniz branch’i seçip ilerlerseniz problem yaşamazsınız.

# referans brach’imizi seçelim.
$ git checkout master
# yeni branch açalım
$ git checkout -b yeni-branch-adi

Not: Branch adımız çok önemli değil ancak yapacağımız iş ile ilgili açıklayıcı olursa daha sonraki kullanımlarda size kolaylık sağlayacaktır. Örneğin: bugfix-pagination, email-events…

Artık çalışabilirsiniz.

4. Pull Request (PR)

Buradaki altın kuralımız, bir branch için sadece 1 kere PR açıyoruz, biz branch’imizi güncellediğimiz zaman açtığımız PR da güncelleniyor.

Değişiklikleri commit’ledikten sonra artık pushlayabiliriz.

$ git push origin yeni-branch-adi

Bu adımdan sonra proje anasayfasına gittiğimizde PR açmak için bir buton göreceksiniz (GitHub bunun için bize kolaylık sağlamış).

Not: Eğer bu ekranı göremiyorsanız proje anasayfasından “Pull Requests” sekmesine tıklayın, ardından sağ tarafta bulunan “New pull request” butonunu kullanın.

Sağdaki “pull request” butonuna tıkladıktan sonra aşağıdaki sayfa bizi karşılıyor:

Hangi branch’e PR açmak istediğimizi seçiyoruz. Ayrıca otomatik olarak seçili gelen “master” branch’idir.

Görsel üzerinde altını çizdiğim bölümde, eğer projede “CONTRIBUTING.md” dosyasının var olduğunu belirten bir uyarıdır. PR için doğru adımları takip etmek için bu dosyayı mutlaka okumalısınız.

5. Review

Değişikliklerinizin projeye eklenmesi için, diğer katkıda bulunanlar çalışmanızı gözden geçirecek; değişiklikler isteyecek ya da onaylayacaktır.

Projeye göre çok küçük değişiklikler bile uzun code review sürecinden geçebilir. Bir problem olduğunda hangi değişikliği neden yaptığınızı açıkladığınız zaman sorun olmayacaktır.

Not: Her açtığınız PR kabul olmak zorunda değil. Yaptığınız veya yapacağınız bir işi daha önceden başkası yapıp, PR açmış olabilir. Bu sebeple önceden açılan PR’lara bir göz gezdirmenizde fayda var.

Bonus

Açık kaynak bir projeyi fork’lamanın en önemli problemi zamanla güncelliğini yitirmesi ve orjinalinden geride kalmasıdır. Orjinal proje linkini yeni remote adresine ekleyerek bu problemi hızlıca çözebilirsiniz.

# upstream adını verdiğimiz remote url'i ekleyelim.
$ git remote add upstream PROJE_URL

Bu işlemi yaptıktan sonra bilgisayarınızda 2 adet remote bulunacaktır.

  1. origin forkladığınız projenin remote url’i (sizin hesabınız, okuma ve yazma iznine sahipsiniz.)
  2. upstream forkladığınız projenin orjinal remote url’i (orjinal projenin hesabı, sadece okuma iznine sahipsiniz.)

Projeyi güncel tutmak için aşağıdaki komutları uygulamanız yeterli olacaktır.

# referans brach’imizi seçelim.
$ git checkout master
# orjinal projeden değişiklikleri çekelim. && forkladığımız yere push'layalım.
$ git pull upstream master && git push origin master

Sonuç olarak;

  1. Projeyi forkla ve bilgisayarına indir.
  2. Başlamadan önce, projeyi orjinali ile senkronize tutmak için “remote upstream” oluştur.
  3. Yapacağın işle ilgili branch oluştur.
  4. Değişiklikleri yap, commit mesajını yaz ve “CONTRIBUTING.md” dosyası varsa oku.
  5. Forkladığın projeye push’la
  6. Yeni bir PR oluştur.
  7. Katkıda bulunmanın tadını çıkar ve açtığın PR’ı takip etmeyi unutma.

Umarım faydalı olur. Aklınıza takılan sorular ve eklemek istediklerinizi lütfen yorum olarak yazın.

Bir sonraki yazıda görüşmek üzere!