Git ile Açık Kaynaklı Projelere Katkıda Bulunmak

Daha önceki yazımda açık kaynaklı projelere nasıl katkı sağlanabilir şeklinde teorik olarak bir giriş yapmıştım. O yazı: Açık Kaynaklı Projelere Nasıl Katkı Sağlanır

Bu yazıda teoriden çok pratik olarak Git ile açık kaynaklı projelere nasıl katkı sağlandığı üzerinde konuşacağım. Burada yazılanları anlamanız için tabiki de Git bilmeniz gerekiyor. Ben buradaki anlatımları GitHub üzerinden yapacağım ancak diğer servislerde de aynı şekilde çalışıyor. Siz de deneme yapmak için bu repoyu kullanabilirsiniz. https://github.com/cangelis/open-source-example

Fork

Katkı yapmak istediğimiz projeyi seçtikten sonra projeyi forklamamız gerekiyor.

Fork Nedir?

Katkı yapmak istediğiniz projenin birebir kopyasıdır. Yapacağımız tüm geliştirmeleri bu fork repo üzerinde yapacağız.

Git Fork

Projeyi Forkladıktan sonra birebir kopyası kendi repolarım arasında gözükecek.

GitHub Fork

Clone

Şimdi fork’umuzu kendi bilgisayarımıza clone’layalım.

git clone git@github.com:cangelis-test/open-source-example.git

Branching

Şimdi gerçek repoda hangi branch’e katkı yapacağız ona bakalım. Bazı projeler, develop branch’ine katkı yapılmasını ister, kimileri direk master branchine. O yüzden CONTRIBUTION dökümanını iyice okuyalım. Bizim örnekte direk master branchine yapacağız. Eğer ki farklı bir branch ise o branche geçip değişiklikleri yapmamız gerekiyor. Şöyle:

git fetch # remote'da bulunan tüm branchleri çekelim.
git checkout develop

Artık develop branch’i üzerinde çalışıyorsunuz.

Şu anda çalıştığımız branchi görmek için:

git branch

Buraya kadar süper! Şimdi ise kendimiz develop branch’i üzerinden yeni bir branch yaratacağız. Neden?

Eğer ki, aynı branch’e birden fazla katkı yapmak isterseniz, o branch’i hiç değiştirmeden sürekli 0 haline katkı yapmanız gerekiyor. Onun için yapacağımız her katkı için yeni branch yaratıyoruz. Yaratalım:

git checkout -b readme-eklenti # -b branch yoksa yarat anlamına geliyor

Şimdi değişikliklerimizi yapalım. Ardından commit yapalım ve forkumuza gönderelim:

git commit -am "readme güncellendi"
git push origin readme-eklenti

Sonuç olarak şöyle birşey görmelisiniz:

To git@github.com:cangelis-test/open-source-example.git
* [new branch]      readme-eklenti -> readme-eklenti

GitHub üzerinden şu şekilde görebilirsiniz:

GitHub branch

Daha sonra GitHub Üzerinde şunu göreceksiniz:

GitHub Pull Request

Pull Request

Artık yapacağımız katkı hazır! Şimdi gerçek reponun yöneticilerine bunu sunacağız. Eğer ki tamam ise onaylayıp gerçek repo ile merge edecekler. Eğer ki uygun değilse kabul edilmeyecek.

Bu işleme Pull Request deniyor. Kısaca PR. Şimdi şu Compare & Pull Request buttonuna bir basalım.

Karşımıza çıkan ekranda en üstte:

GitHub PR Branch

Burası, gerçek repodaki hangi branch’e katkı yapacağımızı seçeceğimizi gösteriyor. Eğer ki buradaki örnekten farklı olarak develop branchine katkı yapacaksanız oradan seçmeniz gerekiyor.

Bir altında açıklama ve başlık kısmı var.

Onun bir altında sizin commitiniz var:

GitHub PR commit

Burası çok önemli. Burada sadece kendi commitleriniz olduğuna emin olun. Burada eğerki başkalarının commitleri de varsa, bir yerlerde yanlış yapmışsınız demektir.

Daha sonra Create Pull Request buttonuna basıp PRı gönderiyoruz.

GitHub PR

Bu ekran topluluktaki diğer insanların sizin kodlarınızı inceleyip, yorumlayıp gerekirse yeni güncellemeler istediği bölümdür. Burada yaptığınız tüm commitler gözükür.

PR üzerinde yeni değişiklikler yapmak

Topluluk kodunuzu inceledi ancak yeterli bulmadı ve sizden bazı değişiklikler istedi. Bunun için 0’dan yeni PR yaratmıyoruz eskisini güncelliyoruz. O da çok basit.

Şimdi kendi bilgisayarımıza geri dönüp hangi branch üzerinde çalışıyorsak oraya dönüyoruz:

git checkout readme-eklenti

Değişikliklerimizi yapıyoruz

git commit -am "Yeni istekler yapıldı"
git push origin readme-eklenti

Bu kadar basit! PR otomatik olarak güncellendi! ve yeni commit oraya otomatik eklendi:

GitHub PR update

Eğer PR onaylanırsa gerçek repo ile merge edilir.

Git PR merge

Fork ile gerçek repoyu senkronize etmek

Fork zamanla eskiyebilir. Çünkü gerçek repo hiç durmadan geliştirilir. Bu yüzden eklenti yapmadan önce forkunuzu reponun son hali ile güncelleyin. Önce gerçek repo’yu remotelarımıza ekliyoruz.

git remote add gercek git@github.com:cangelis/open-source-example.git

Daha sonra hangi branch’e katkı yapacaksak:

git checkout master
git pull gercek master

Bu kadar basit. gercek remote’unda bulunan değişiklikleri aldık. İsterseniz forkunuza bunları gönderebilirsiniz:

git push origin master

Deneme yapmak

Eğer ki burada okuduklarınızı denemek isterseniz benim burada kullandığım repo’ya PR gönderebilirsiniz. Adres: https://github.com/cangelis/open-source-example

4 thoughts on “Git ile Açık Kaynaklı Projelere Katkıda Bulunmak

  1. engin

    Çok güzel ve faydalı bir yazı olmuş. Yazı için teşekkür ederiz. Bu konuda türkçe kaynak bulmak zor. Yazı gerçekten bir açığı kapatmış.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax