Gitflow kullanıldığında bir serbest bırakma dalı veya ana dal etiketlenmeli mi?


16

Bu sorun şunu göstermektedir:

Anlayışımdan etiketi birleştirmeden önce (ana dalda değil) serbest bırakma dalına yerleştirmek, aslında doğru olan şeydir, bu yüzden git description tarafından da - geliştirme dalından etiketler de bulunabilir. Bkz. # 374

ederken başka yazı :

Bugün yanlışlıkla 0.4.2 öncesi sürümü homebrew aracılığıyla yükledim ve etiketlemenin bu sürümdeki çalışma şekliyle karıştırıldım. Daha önce (sürüm 0.4.1) etiket, serbest bırakma dalı onunla birleştirildikten sonra ana dalda oluşturuldu. Şimdi, etiketin, serbest bırakma dalının son taahhüdünde oluşturulduğu anlaşılıyor, bu benim için iyi bir fikir değil gibi görünüyor. Özellikle git etiketlerine dayanan ve HEAD etiketli bir taahhüt ise bir yayın sürümü ve aşağıdakilerden biri gerçekleşiyorsa bir geliştirme sürümü oluşturan bir sisteminiz varsa. Birisi bana bu değişikliğin arkasındaki mantığı açıklayabilir mi? Semantik versiyonlama ile ilgili olarak bunun yama düzeyinde bir versiyon patlaması olduğunu düşünmüyorum!

Ekibimizde bunun hakkında birçok tartışma yaptık ve tartıştık. Bazıları bir etiketin ana koldan oluşturulması gerektiğini belirtirken, diğerleri serbest bırakma kolunu tercih eder. Gitflow resmine göre:

resim açıklamasını buraya girin

etiketin kalıp üzerine yerleştirildiği anlaşılıyor.


1
GitLab'ın eski şubeleri budadığınızda dallardaki etiketlerle mücadele ettiğini biliyorum, bu yüzden etiket master'da olsaydı daha iyi olurdu. Diğer git araçları hakkında emin değilim.
HorusKol

'Gitflow' bu (IMO fakir) iş akışının standart veya resmi git iş akışı olduğunu ima eder. Öyle değil.
Miles Rout

@MilesRout En sevdiğiniz git iş akışınız nedir?
030

benim durumum için git etiketi değerlerini uygulama serbest bırakıldığında uygulamanın sürümünü adlandırmak için kullanın, bu yüzden onu sürüm dalında yapmak.
İki Kez Kod Düşünün

Yanıtlar:


16

İlk olarak, dalları etiketleyemezsiniz, yalnızca taahhütleri etiketleyebilirsiniz.

Gerçekte yayınladığınız taahhüdü etiketlemelisiniz. Bu, sürüm etiketleme işlemlerinin yapıldığı noktadır. Yazılımınızla bazı ortamlarda (üretim veya başka türlü) bir sorununuz varsa, sorunun bu sürümün türetildiği taahhüt tarafından getirildiğini güvenle söyleyebilirsiniz.

(Bu yüzden insanlar 'yeniden üretilebilir yapılar' hakkında konuşurlar: böylece yayınlama süreçlerinin önizleme / hazırlama ortamlarında bulunmayan yeni hatalar getirmediğinden ve aynı üretimde bir hataya sahip olduklarından emin olabilirler. İkili hata ayıklamaya giderken makinelerinde çalışıyor.)

İkinci yeşil taahhüdü en alttan ('Yalnızca hata düzeltmeleri!' Olarak işaretlenen taahhüdün yeşil alt öğesi) 'v1.0' olarak etiketlemenin bir anlamı yoktur, çünkü üretim için bu taahhüdü serbest bırakmadınız. Usta taahhüdünü serbest bıraktın. Git akışının bunu 'Etiket 1.0' olarak işaretlediğini bile görebilirsiniz.

Unutmayın, etiketlerin bir amacı vardır: taahhütleri kolayca bulmak. Sürüm 1.0 olarak yayınladığınız şeyi kolayca bulabilmek için bir taahhüdü 'v1.0' olarak etiketlersiniz. Gerçekte bıraktığınız taahhüdün yakınında belirsiz bir şekilde ağaçta bir yerde 'v1.0' etiketi olması için etiketlemezsiniz.

Geliştirme şubenizdeki etiketleri bulmakta sorun yaşıyorsanız bu tamamen ayrı bir konudur. Etiketleri bulmak için kullandığınız aracı düzeltin. Ya da daha iyisi: git-flow kullanmayın. Güzel renkli noktalar ve güzel bir şekilde düzenlenmiş çizgiler nedeniyle bu şemada güzel görünüyor, ancak gerçekte renkli çizgiler ve noktaların çılgın dağınık bir ağına benziyor.


3
You should tag the commit you actually release. Dolayısıyla, örneğin, serbest bırakılması gereken 20 taahhüt, serbest bırakma dalında bulunuyorsa ve bu dal, ana dalda birleştirilirse, ne yayınlandığını bilmek için oluşturulan birleştirme taahhüdü etiketlenmelidir?
030

1
Evet, birleştirme taahhüdü etiketlenir. Git- branch:master
flow'un
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.