Conflict Nedir ve Nasıl Çözümlenir — Github #8

İsmet Kizgin
3 min readJan 2, 2024

--

Ekip içerisinde çalıştığınız herhangi bir yazılım geliştirme projesinde, zaman zaman “conflict” (çakışma) kavramı ile karşılaşabilirsiniz. Bu, aynı dosyanın birden fazla kişi tarafından değiştirilmesi ve bu değişikliklerin birleştirilmesi gerektiği durumları ifade eder. Bu durum, genellikle aynı satıra yapılan değişiklikler veya farklı dallardan gelen çakışan değişikliklerle ortaya çıkabilir.

Conflict Neden Oluşur?

Conflict, bir projede eş zamanlı çalışma durumlarında ortaya çıkar. Örneğin, bir geliştirici A dosyanın belirli bir kısmını değiştirirken, aynı dosyanın aynı kısmını başka bir geliştirici değiştirmeye çalışırsa bir conflict ortaya çıkabilir.

Conflict Çözme

Diyelim ki “change-title” adında bir branch’imiz var ve iki farklı kişi tarafından başlık değişiklikleri yapılmış olsun. Bu durumda, “change-title” branch’inde bir çakışma (conflict) ortaya çıkacaktır. Bu çakışmanın nedeni, “change-title” branch’i merge edilmeden önce “master” branch’inde yapılan başka değişikliklerdir. Bu durumu çözmek için önce “master” branch’indeki değişikliklerin “change-title” branch’ine merge edilmesi ve ardından oluşan çakışmanın çözümlenmesi gerekmektedir.

Merge işlemi gerçekleştirildiğinde, console’a basılan log kayıtları aracılığıyla hangi dosyalarda conflict olduğunu gözlemlemek mümkündür. Bu log kayıtları, merge işlemi sırasında “master” ve “change-title” branch’lerindeki çakışmaları belirtir. Çakışmanın olduğu dosyalarda, görselde görüldüğü gibi ======= işaretiyle ayrılan iki kısım bulunur. Üstte kalan kısım, merge edilen branch’i yani “master” branch’ini temsil ederken, altta kalan kısım ise kullanılan branch’i yani “change-title” branch’ini temsil eder. Çakışmanın sebep olduğu değişiklikleri gözlemledikten sonra, genellikle üç farklı yol izlenebilir:

master Branch’inin Doğruluğu: Eğer “master” branch’indeki değişiklikler doğru ve geçerliyse, bu durumda “master” branch’inde yapılan değişiklikler kopyalanır ve kod düzenlenir.

change-title Branch’inin Doğruluğu: Eğer “change-title” branch’indeki değişiklikler doğru ve geçerliyse, bu durumda “change-title” branch’inde yapılan değişiklikler kopyalanır ve kod düzenlenir.

Her İki Değişikliğin Birleştirilmesi: Eğer her iki branch’teki değişikliklerin de aslında aynı anda olması gereken bir bütünü temsil ettiği düşünülüyorsa, bu durumda kod, her iki değişikliği birleştirecek şekilde düzenlenir.

Bu üç yol, çakışmanın nasıl çözüleceğine dair genel stratejileri temsil eder. Hangi yolun seçileceği, değişikliklerin mantıklı ve proje hedeflerine uygun bir şekilde birleştirilmesini sağlamak adına dikkatlice değerlendirilmelidir.

Bu çözümleme yöntemleri genellikle manuel olarak gerçekleştirilmez. Kullandığımız yazılım editörleri genellikle çakışmaları otomatik bir şekilde çözebilmek için çeşitli seçenekler sunar.

Sonuç

Conflict’ler, yazılım geliştirme sürecinde kaçınılmazdır ancak doğru yöntemlerle çözümlenebilir. Bu makalede anlatılan adımları takip ederek, conflict’leri kolay bir şekilde çözebilir ve proje ekibinizle daha uyumlu bir çalışma ortamı oluşturabilirsiniz.

Yazımı okuduğunuz için teşekkür ederim, umarım sizin için yararlı olmuştur 🙂

İyi Çalışmalar…

Yararlı Olabilecek Kaynaklar

Github Blog Serisi

9 stories

--

--