Sizi bu talihsiz duruma sokmadan yeni gelişmenizi ana branştan ayrı tutmanın basit bir yolu olurdu : Sandıktaki herhangi bir değişiklik günlük olarak dev şubenizde birleştirilmeliydi . (Müvekkiliniz, şubenizin bir gün ana hattına geri dönmesi gerektiğini öngöremediği için gerçekten yetersiz kaldı mı?)
Her neyse, en iyi yaklaşım IMHO'nun ilk elden ne olması gerektiğini yinelemeye çalışıyor:
- Şube kurulduktan sonraki ana hattaki değişikliklerin anlamını 1. gün için tanımlayın . Bunları mümkün olduğu kadar geçerli kod tabanınıza uygulayın. Eğer bu bir "yerel değişiklik" ise, basit olmalı, yaygın olarak kullanılan bir sınıfı yeniden adlandırmak gibi bir "çapraz kesim yeniden düzenleme" ise, bunu geçerli kod tabanınıza anlamsal olarak eşit şekilde uygulayın. İnşallah o yıl boyunca “temel” şubenizde kod tabanında çelişkili hiçbir çapraz değişiklik yapılmadı, aksi takdirde bu gerçek bir zekâ haline gelebilir
- sonucu test et (bu görev için iyi bir test odasına ihtiyacın olduğunu söylemiş miydim)? Testin ortaya çıkardığı tüm hataları düzelt
- Şimdi bu işlemi ana hattaki değişiklikler için 2. gün, 3. gün vb. için tekrarlayın.
Bu, takımlar klasik versiyon kontrol kurallarına ("sadece derlenebilir, test edilmiş durumları yerine getir" ve "erken ve sık kontrol et") kesinlikle uyduğunda işe yarayabilir.
365 kez tekrarladıktan sonra (veya 250, eğer şanslıysanız ve hafta sonu değişiklikleri için çalışmayı paketleyebiliyorsanız), neredeyse bitmiş olacaksınız (neredeyse çünkü entegrasyon döneminde ana hatta olacak değişikliklerin sayısını eklemeniz gerekecek) ). Son adım, güncellenmiş dev şubesini tekrar bagajda birleştirmektir (böylece bagajın geçmişini kaybetmezsiniz). Bu kolay olmalı, çünkü teknik olarak sadece etkilenen dosyaların yerine geçmelidir.
Ve evet, ben ciddiyim, muhtemelen bunun için bir kısayol yoktur. “Günlük porsiyonların” bazen çok küçük olabileceği ortaya çıkabilir, ancak bunu beklemem, belki günlük porsiyonların arı yetiştiriciliğinin çok büyük olabileceği daha muhtemel. Umarım müvekkiliniz size bunun için çok iyi para öder ve bu onun başarısızlığından öğreneceği için çok pahalı.
Şunu da eklemeliyim ki, bunu da değiştirilmiş taraflarla da deneyebilirsiniz - şubenizdeki değişiklikleri küçük parçalarda ana hatta yeniden entegre edin. Bu, dev şubenizde, bagajda olduğundan çok daha az değişiklik olduğunda veya değişikliklerin çoğu, şu anda bagajın bir parçası olmayan yeni kaynak dosyalarında gerçekleştiğinde daha kolay olabilir. Bunu, bir özelliği A ürününden (dev dalı) biraz farklı bir ürün B'ye (bagajın şu anki durumu) bir özelliği "taşıma" olarak görebilir. Ancak, çapraz kesim refactorlarının çoğunluğu ana hat üzerinde yapıldıysa ve yeni kodunuzu etkilediler (6500 birleştirme çakışmaları bunun için bir kanıt gibi görünüyorlarsa), önce tarif ettiğimden daha kolay olabilir.