SORU
7 Kasım 2008, Cuma


git branch adlandırma en iyi uygulamalar

Birkaç ay boyunca yerel ve git deposu benim grubun CVS deposu ile etkileşim, şimdi kullanıyorum. Neyse ki benim gövde birleşti geri en dalları, neredeyse nevrotik bir numara yaptım. Ama adlandırma bir sorun haline gelmeye başladı. Eğer ben bir görev kolayca adında basit bir etiket, ama ben ulaşmasına üç aşama vardır ki her biri kendi şube ve birleştirme durumu, sonra ben tekrar şube adı her zaman, ama o yapan geçmişi biraz kafa karıştırıcı. Eğer bu isimler, her sahne için ayrı bir açıklama daha spesifik olursam, o zaman şube adlarını uzun ve hantal olmaya başlar.

Adı / yani, konu/görev, ya da onun gibi bir şey ile dalları adlandırma yapmaya başlayabilirim eski konulara bakmayı burada öğrendim. Bunu ve eğer işler daha iyi organize tutmak yardımcı olur diye sormaya başlayabilirim.

Git dal adlandırma için bazı en iyi uygulamaları nelerdir?

Edit: Aslında hiç kimse herhangi bir adlandırma kuralları önerdi. Onlarla işim bittiğinde silmek dal yapıyorum. Ben sadece etrafında yönetim sürekli önceliklerim yüzünden birkaç ayarlama var. :) Bir görev üzerinde birden fazla şube ihtiyacım olabilir neden bir örnek olarak, grubun CVS deposuna görev ilk ayrık kilometre taşı taahhüt vermem gerek sanırım. CVS ile kusurlu benim etkileşim nedeniyle bu noktada, bu taahhüt yapmak ve bu şube öldürmek istiyorum. (Çok fazla gariplik ise şu noktada aynı dalda kullanmaya devam edersem CVS ile etkileşim gördüm.)

CEVAP
19 Mayıs 2011, PERŞEMBE


Burada bazı şube kullandığım adlandırma ve onlara sebep

Şube adlandırma kuralları

  1. Şube isimlerinizi başında gruplandırma simgeleri (kelime) kullanın.
  2. Ve kısa yol simgeleri iş akışı için anlamlı bir şekilde dalları ayırt tanımlamak için kullanın.
  3. Bölü şube adları ve parçaları ayırın.
  4. Önde gelen parçalar gibi çıplak numaralar kullanmayın.
  5. Ömürlü uzun dalları için uzun açıklayıcı isimler kullanmaktan kaçının.

Grup belirteçleri

Kullan "gruplandırma" şube adları önünde belirteçleri.

group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz

Grupları iş akışı maç için ne gibi adlandırılabilir. Benim için kısa isimler kullanmayı seviyorum. Daha fazla netlik için okumaya devam edin.

İyi tanımlanmış belirteçleri kısa

Şube adları, her biri için çok fazla gürültü Ekle çok kısa simgeleri seçin. Bu kullanın:

wip       Works in progress; stuff I know won't be finished soon
feat      Feature I'm adding or expanding
bug       Bug fix or experiment
junk      Throwaway branch created to experiment

Bu belirteçler her şube ait olduğu söylemek için kullanılabilir.

Bir değişim döngüleri için birden fazla şubesi var gibi geliyor. Durumunuz nedir bilmiyorum, ama var olduklarını farz edelim,'', '' ve 'doğrulandı'. test yeni Bu etiketler kısaltılmış sürümleri ile dalları, hep aynı şekilde yazılmış, onları grup için hem de içinde olduğunuz hatırlatmak için bir isim verebilirsiniz.

new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo

Hızlı bir şekilde her biri farklı bir aşamaya gelmiş olan söyleyebilirsin, sonra bunları kolayca Gıt desen eşleme seçeneklerini kullanarak gruplayabilirsiniz.

$ git branch --list "test/*"
test/foo
test/frabnotz

$ git branch --list "*/foo"
new/foo
test/foo
ver/foo

$ gitk --branches="*/foo"

Ayrı parçalar için eğik çizgi kullanın

En şube adları gibi herhangi bir sınırlayıcı kullanabilirsiniz, ama bölü en esnek buluyorum. Tire veya nokta kullanmayı tercih edebilirsiniz. Ama bölü bazı şube ya da uzaktan gelen iterek getirilirken, yeniden adlandırma yapalım.

$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'

Benim için, eğik çizgi de daha iyi sekme genişleme (komut tamamlama) benim kabuk için çalışır. Ben böyle bölümü ilk harflerini yazın ve TAB tuşuna basarak alt parçaları farklı dalları için arama yapabilirsiniz yapılandırılmış. Zsh sonra bana yazılan var belirtecin parçası maç hangi dalların bir listesini verir. Bu yukarıdaki belirteçleri yanı sıra gömülü olanlar için çalışır.

$ git checkout new<TAB>
Menu:  new/frabnotz   new/foo   new/bar


$ git checkout foo<TAB>
Menu:  new/foo   test/foo   ver/foo

(Zshell komut tamamlama konusunda çok yapılandırılabilir ve aynı zamanda tire işlemek için yapılandırma diye düşünüyorum, ya da aynı şekilde alt çizgi, nokta. Ama vermemeyi tercih ediyorum.)

Ayrıca bunun gibi birçok gıt komutları şubeleri için: arama yapmanıza olanak sağlar

git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*" 
gitk --branches="feature/*" 

Slipp dışarı yorum, bölü sorunlara neden olabilir puan. uyarı: Dalları yollar olarak uygulanır çünkü, bir şube adında var "" ve başka bir şube "adlı". foo/bar foo Bu yeni kullanıcılar için kafa karıştırıcı olabilir.

Çıplak numaralar kullanmayın

Kullanımı şube adlandırma planın bir parçası olarak çıplak sayılar (veya hex sayı) kullanmayın. Referans adı sekme genişleme içinde, git sayıda şube adı yerine sha-1 parçası olduğuna karar verebilir. Örneğin, benim sorunum ondalık sayılarla isimleri böcek tracker. Ben ilgili dallarıma CRnnnnn adı yerine sadece nnnnn karışıklığı önlemek için.

$ git checkout CR15032<TAB>
Menu:   fix/CR15032    test/CR15032

Eğer sadece 15032, git genişletmek için çalıştım eğer SHA-1 ya da şube adları arama isteyip istemediğimden emin olacaktır, ve benim seçenekleri biraz sınırlı olabilir.

Uzun açıklayıcı isimler kullanmaktan kaçının

Long branch isimleri şubeleri listesine bakarken çok yararlı olabilir. Ama tek satır dekore bakıyor şube adlarını tek satır çoğu yemek ve günlük görünen kısmı çok kısa olarak açtığında şekilde alabilirsiniz.

Diğer taraftan uzun şube adları "yaparsa eğer" alışkanlıkla elini. onları yeniden birleştirme yardımcı olabilir Varsayılan mesaj Merge branch 'branch-name' tamamlama birleştirme. Daha yararlı mesajlar Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted' yerine Merge branch 'fix/CR15032' gibi göstermek birleştirme var bulabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • spyib

    spyib

    9 Ocak 2007