Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ufuk/d1b0fb210e52de9cf65f to your computer and use it in GitHub Desktop.
Save ufuk/d1b0fb210e52de9cf65f to your computer and use it in GitHub Desktop.
"Git Branch İsimlerinde Büyük/Küçük Harf Karmaşası" hakkında blog yazım (n11.com)

Eğer geliştirme takımı kendi içinde takımlara ayrılmışsa Feature Branch'leri takım ismine uygun şekilde klasörler altında oluşturmak Source Tree gibi araçlar kullanırken branchleri görüntülemede kolaylık sağlayacaktır.

Burada bu branchleri oluştururken dikkat edilmesi gereken bir durumdan söz edeceğim.

Mac OS X dosya sistemi büyük/küçük harf duyarlı değildir, yani aynı klasör altında farklı büyük/küçük harf kombinasyonuna sahip olsa bile aynı isimde dosya/klasör oluşturulamaz. Bu nedenle Git'te branchlerimizi grup adlarına göre klasörlerken grup adı için standart bir biçim kullanmamız en iyisi olacaktır.

Örneğin "Grup1" ve "GRUP1" OS X için aynı anlamdadır ve ikisinin aynı anda varolduğu bir T anında Source Tree'nin ve Git'in kafası yanmak üzere demektir. Local repomuzda "Grup1/Issue-1071" adlı bir branch olduğunu düşünelim. Remotetaki "GRUP1/Issue-1453" adlı bir branche geçmek istediğimizde localimizde "Grup1" adlı bir klasör varolduğu için (".git/refs/heads/" altında) "GRUP1/Issue-1453" branchi remotetakinden farklı olarak "Grup1/Issue-1453" altında oluşturulur ve böyle bir branch remoteta varolmadığı için yeni bir branchmiş gibi görünür. Örneği klasörleme için verdim ancak klasörleme olmaksızın branch isimlendirmelerinde de aynı durum geçerli olacaktır. Büyük/küçük harf bu ve bunun gibi pek çok değişik garip duruma sebep olmaktadır.

Çözüm için eylem planı:

  • "Grup1" ve "GRUP1" arasında bir seçim yapıp takım olarak ortak bir biçim kullanılır.
  • Tercih edilen biçim dışındaki tüm branch isimlendirmeleri yeni biçime göre düzenlenir. (remoteta)
  • Klasörlemeleri localimizde sıfırlamak için ".git/refs/heads/" altındaki uygun olmayan biçimdeki klasörler silinir. Örneğin 2. maddedeki düzenleme sonrasında remoteta hep "Grup1/..." şeklinde branchlerimiz varsa ancak localimizde "GRUP1/..." şeklinde bir branch varsa bu branchi localden silmemiz yetmez, çünkü ".git/refs/heads/" altında "GRUP1" adlı bir klasör boş olarak varolmaya devam eder. Remotetaki "Grup1/..." gibi bir branche geçtiğimizde OS X için orada "Grup1" klasörü "GRUP1" şeklinde zaten varolduğu için Grup1 olarak oluşturma zahmetine girmez ve yukarıdaki örnekte olduğu gibi çeşitli sorunlarla karşılaşırız. Bu boş klasörü de silerek çözüme kavuşmuş oluruz.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment