Başarılı bir Git şube modelini paylaşın (yalnızca şube stratejisini ve yayın yönetimini tartışın)

Bazı projelerde kullanılan geliştirme modellerinin paylaşılması, sonuçları çok başarılı ve alan sınırlıdır Burada sadece şube stratejisi ve sürüm yönetimi tartışılmaktadır.

Neden git kullanıyorsunuz?

Git ve merkezi kaynak kodu sürüm kontrol sistemi www.baidu.com'un avantajları ve dezavantajları ile ilgili olarak Git, birleştirme ve dallanma anlayışımı gerçekten değiştirdi.Git'i kullanmak, basit ve tekrarlanabilir genleri nedeniyle artık dallanma ve birleştirme değil Endişelenmeye değer konu nedir? Sürüm kontrol araçları, başka şeylere değil, dallara ayırmaya / birleştirmeye odaklanmalıdır.

Araçların anlaşılması yeterli, geliştirme modeline girmeye başlayalım. Tanıtmak istediğim geliştirme modeli, yazılım geliştirme sürecine girmeden önce her ekip üyesinin uyması gereken bir özelliktir.

Ademi merkeziyetçilik ve merkezileştirme

"Gerçek" bir merkezi kütüphaneye dayalı bu şube modeli, birlikte iyi çalışmamızı sağlar. Bu kitaplığın yalnızca bir merkezi kitaplık olarak kabul edildiğini unutmayın (çünkü GIT'in teknik açıdan merkezi bir kitaplığı yoktur). Bu ambarın kökeni adını verdik!

Tüm geliştiriciler kodu kaynak havuzundan çeker veya iter. Merkezileştirilmiş itme-çekme ilişkisine ek olarak, geliştiriciler diğer geliştirici kitaplıklarından kod değişikliklerini de çekebilir. Örneğin, büyük ölçekli bir özellik geliştirmek için, birden fazla geliştirici bir geliştirme ekibi oluşturur.Özellik tamamlanmadan önce, geliştirme sürecinin kaynak havuzuna gönderilmesi gerekmez. Yukarıdaki resimde Alice ile Bob, Alice ile David ve Clair ile David arasında gruplar var.

Teknik olarak, Alice'in yerel kitaplığa uzak bir Git dalı eklemesi ve Bob olarak adlandırarak Bob'un deposunu göstermesi gerekir. Aynı şey diğerleri için de geçerli.

Ana şube

Git'in özü, geliştirme modelindeki mevcut modelden büyük ölçüde esinlenmiştir. Merkezi depo, yaşam döngüsü boyunca iki ana dalı korur:

  • usta
  • geliştirmek

Her Git kullanıcısı başlangıçtaki ana dala aşinadır. Ana dala paralel olarak geliştirme adı verilen başka bir daldır.

Köken / ana dalı geliştirme diyoruz Bu şubenin kaynak kodunun HEAD'i her zaman bir sonraki sürümün en son geliştirme durumunu yansıtır. Bazıları bu şubeye "entegrasyon şubesi" diyor. Tüm günlük otomatik yapılar buradan oluşturulur.

Geliştirme dalındaki kaynak kodu kararlı bir noktaya ulaştığında ve yayımlanmaya hazır olduğunda, tüm değişiklikler bir şekilde ana dalda birleştirilmeli ve ardından yayın sürümü ile işaretlenmelidir. Daha sonra, bunun nasıl yapıldığını ayrıntılı olarak tartışacağız.

Bu nedenle, bir değişiklik ana dalda her birleştirildiğinde, bu tanım gereği yeni bir ürün sürümüdür. Bu konuda çok katı olma eğilimindeyiz, bu yüzden teoride, ana dala her taahhütte bulunduğumuzda yazılımımızı üretim sunucusunda otomatik olarak oluşturmak ve yayınlamak için bir Git kanca komut dosyası kullanabiliriz.

Yardımcı şube

Ana şubeyi ve geliştirme şubesini tartıştıktan sonra, tartışılacak olan çeşitlendirilmiş yardımcı şubeler, üyeler arasında paralel gelişimi destekleyecek, işlev geliştirmeyi, üretim sürümü sürümlerini kolayca izleyecek ve üretim ortamında oluşan hataları hızla düzeltecektir. Ana dalın aksine, yardımcı dalın yalnızca sınırlı bir yaşam döngüsü vardır ve genellikle görev tamamlandıktan sonra silinir.

Kullanılabilecek yardımcı branş sınıflandırmaları şunlardır:

  • Fonksiyonel dal
  • Yayın dalı
  • Hata dalını düzeltin

Her şubenin özel bir amacı vardır. Bu şubelerin kaynak şubesi ve birleştirmek istedikleri şube kesin olarak tanımlanmıştır.

Fonksiyonel dal

Fonksiyonel dal şunlardan türetilebilir: şube geliştirmek

Özellik dalı geri birleştirilmelidir: geliştirme dalı

Özellik dalı adlandırma kuralı: herhangi bir ad uygundur, ancak ana, geliştirme, yayın- * veya düzeltme- * içeremez.

Özellik dalları (veya özellik dalları) yeni özellikler geliştirmek için kullanılır ve bu yeni özellikler yakında veya daha sonra yayınlanacaktır. Özellik dalı oluşturulduktan sonra geliştirme başladığında, daha sonra birleştirileceği zaman noktası bilinmemektedir. Özellik dallanmasının özü, her zaman geliştirme süreciyle birlikte olması, ancak kesinlikle geliştirilmek üzere birleştirilmesi (bir sonraki beklenen sürümde açıkça yeni özellikler eklenmesi) veya atılması (deneyin tatmin edici olmaması durumunda) olmasıdır.

Özellik dalları genellikle geliştiricinin deposunda saklanır ve kaynak depoda görünmez.

Yayın dalı

Bu dal şunlardan türetilebilir: şube geliştir

Şunlarla birleştirilmelidir: dallar geliştirin ve ustalaşın

Dal adlandırma kuralı: sürüm- *

Sürüm dalları, yeni ürün sürümlerinin hazırlanmasını destekler. Ayrıntıların son dakikada takip edilmesine izin veriyorlar. Ek olarak, küçük hata düzeltmelerine izin verirler ve yayın için meta verileri hazırlarlar (sürüm numarası, oluşturma tarihi vb.). Sürüm dalında yapılan çalışma sayesinde, geliştirme dalı bir sonraki ana sürümün özelliklerini almak için temizlenir.

Geliştirme dalından yeni bir sürüm dalı kontrol etmenin önemli anı, geliştirmenin (temelde) yeni sürümün beklenen durumunu yansıttığı zamandır. En azından o sırada, "oluşturulacak sürüm" (oluşturulacak sürüm) için hedeflenen tüm özellikler geliştirme dalında yeniden birleştirilmelidir. Gelecek sürümler için tüm özellikler olmayabilir - bunu yapabilmeleri için sürüm şubesinin teslim alınmasını beklemeleri gerekir.

Hot fix dalı

Şube şuradan gelebilir: usta

Birleştirilmeli: geliştir ve ustalaş

Dal adlandırma kuralı: düzeltme- *

Düzeltme dalı sürüm dalına benzer, çünkü her ikisi de beklendiği gibi olmasa da yakında yeni bir üretim sürümünün yayınlanacağı anlamına gelir. Bunlar, mevcut üretim versiyonunun istenmeyen olması ve hemen etkili olması gerektiğinden ortaya çıkar. Üretim sürümündeki ciddi bir hatanın derhal düzeltilmesi gerektiğinde, düzeltme dalı, üretim sürümünü işaretlemek için kullanılan ana daldaki ilgili etiketten bir dal oluşturabilir.

İşin özü, bir kişi üretim sürümünde hızlı bir düzeltme yapmaya hazır olduğunda, ekip üyelerinin (geliştirme dalında) çalışmaya devam edebilmesidir.

sonuç olarak:

Bu dallanma modeli şu anda yeni bir şey gibi görünmese de, bu makalenin başındaki "büyük resim" bu modelin projeler için gerçekten yararlı olduğunu kanıtladı. Zarif ve anlaşılması daha kolay bir model oluşturur ve ekip üyelerinin şubeleri ve bunların yayınlanma sürecini anlamasını güçlendirebilir.

Not: Yararlı bulan arkadaşlar toplanabilir ve bu arada, dikkat çekmek için tıklayın. . .

Elveda, kağıt tren bileti!
önceki
Özel | Beijing Hyundai gelecek yıl ilk güneş enerjili otomobilini tavan veya akü panelleri kapalı olarak piyasaya sürecek
Sonraki
Çocuklar her şeyi anlar, ancak sadece çok "düşünceli" görünen yetişkinleri anlamazlar
Sadece inanç değil: ASUS ROG STRIX GTX 1070Ti ekran kartı incelemesi
Yedi rengin hepsini toplamak sorun değil ... Bu resmi fotoğraf yanıyor!
Yepyeni Geely Emgrandın katil özelliği, 100.000den daha düşük bir fiyata "üst düzey bir his" yaratmaktır.
"Yırtıcı Şehir" çok iyi bir konu ama bir sokak filmine çekildi
Tanrı dünyayı yaratmak için 7 gün kullandı, kendimi yok etmek için 7 saniye kullandım
Kimse savaşamaz! OnePlus 5T, en hızlı akıllı amiral gemisi makinesi olarak tasarlandı, pürüzsüzlük herkesi öldürür!
6 yıldır kayıp olan kız bulunduğunda, zaten bir çift baba ve oğul ile 3 çocuğu vardı!
"Gelen Çağrılar" ın herhangi bir filminin yeniden çekimine neden üç kaba unsur eklemek gerekiyor?
Gençlik filmi böyle yapıldı, bu yüzden insanlar bilet alma arzusuna sahip!
Hızlı bakış! Huawei Mate 10'un bakım maliyetini bilmeniz gerekiyor, Porsche anakart değişimi 5499 yuan'a kadar!
Fonlar avlanıp transfer edildiğinde birçok hisse senedi% 80 arttı. Hangi şirketlerin gönderme ve transfer potansiyeli var?
To Top