Git gibi bir Dağıtılmış Sürüm Kontrol Sistemi kullanın ve referans havuzunu saklamak için paylaşılan klasörler makinenizi kullanın. İşte nedeni:
Her klon bir yedek
Sunucu sabit diski çökerse, herkesin yeni bir sürücüye veya sunucuya dağıtılmaya hazır bir kopyası vardır. Şirketiniz sürüm kontrolü konusunda ciddi olmadığından, yedeklemelerle hemen hemen aynı olabileceğini düşünüyorum.
Ortak referans
Ana dal içeren bir ana depoya sahip olmak, son sözcüğü içeren sürümü bilmenizi sağlar. Bu, "Değişikliklerinizi Franck'ın sürümüne karşı test ettiniz, ancak John'un da var mı? Ve bunları nasıl birleştirdiniz?".
Daha rahat sunun
Müşteri bugün alfa versiyonu istiyor mu? Eh, ustanın yeterince kararlı olup olmadığını test edebilir ve gönderebilirsiniz. Değilse ve düzeltmek için zamanınız yoksa, zamanda geriye gidin ve daha eski ama daha kararlı bir sürüm elde edin. Yalnızca en son sürüme sahipseniz bunu yapamazsınız.
Zamanda geriye gidin ve hatalarınızı düzeltin
Manuel birleştirme işleminizde yalnızca birkaç gün sonra gördüğünüz sorunlar vardı, ancak paylaşılan klasörlerinizin içeriğinin üzerine zaten yazdınız mı? Bir VSC olmadan geçmişiniz yok, bu yüzden yaptığınız hataları kontrol edip düzeltebileceğiniz bir noktaya kolayca geri dönemezsiniz. Kod bir resim gibi değil, bir film gibi: zamanla gelişiyor. Bir filmden resim çıkarabilirsiniz. Bir resimden film çıkaramazsınız.
Hataları daha kolay bulun
Bir hata ortaya çıktı ama gerçekten tanıtıldığı anda fark etmedi, bu yüzden kod "sıcak" iken bunu düzeltemedim. Şimdi hangi değişikliğin getirildiğini gerçekten bilmiyorsunuz, bu yüzden koddaki birkaç farklı yerden gelebilir. Nereye bakacağınızı bulmak saatler sürecek. Git ile, hatanın belirli bir sürümde olup olmadığını söylemek için bir test geliştirebilir ve hatayı git bissect
getiren kesin taahhüdü bulmak için kullanabilirsiniz . Binlerce kod satırı aramak yerine, artık 10 satırın değiştiğini biliyorsunuz ve hatanın tekrar kullanılmadığından emin olmak için testi test paketinizde tutabilirsiniz.
Her geliştirici kendi çalışmasından sorumludur
Takım lideri iseniz ve VCS'niz yoksa, büyük olasılıkla kirli işi, birleştirmeleri yapmanız gerekecektir. Kendi başınıza yaparsanız, muhtemelen tüm değişiklikler hakkında her şeyi bilmiyorsunuz ve hatalar oluşturabilirsiniz. Tam tersine, her zaman kodun birleştirildiği kişilere her zaman birleştirme kodu olduğunda sizinle toplanmalarını isterseniz, o zaman yeni kod üretmek için kullanmayacaklardır.
Bir VCS ile, basit bir iş akışında, geliştirici sadece işine ve bir dış değişiklik kaynağına dikkat etmelidir: ana dal. Ana dalda 1 veya 100 kişi işliyor olabilir, bu aynı. Değişikliklerini zorlayabilmesi için, başkaları tarafından yapılan en son değişikliklere uyarlaması gerekecektir. Kodu zorlamak daha uzun sürebilir, ancak bunun nedeni de zaten zaman alacak bir birleştirme işlemidir.
Aradaki fark, birleştirmenin değişiklikleri yapan, bu kodu en iyi bilen, çünkü yazdığı kişi tarafından yapılmasıdır.
Bu kodu kim yazdı?
Burada bir hata var, ama o kod satırını kim yazdı? Özellikle proje sevral ay sürerse hatırlamak zor. git blame
bu satırın kim ve ne zaman yazıldığını size söylerdi, böylece doğru kişiye sorabilirsiniz ve "Bunu yazdığımı hatırlamıyorum" diye bir şey yok.
Proje büyüyor
Müşteri daha fazla özellik istiyor ve çok küçük bir takımsınız, başka bir geliştiriciye ihtiyacınız olacak. Bir VSC olmadan artan birleştirme karmaşıklığını nasıl yönetirsiniz?
Acil değişiklikler
Müşteri aradı ve üretim için kritik bir hata düzeltmesi istedi, ancak şu anda yeni bir özellik üzerinde çalışıyordunuz. Sadece git stash
değişikliklerinizi bir kenara bırakmak veya yeni bir dalda işlemek ve değişiklikleri zorlamak ve bekleyen işinizi kaybetme korkusu olmadan acil düzeltme üzerinde çalışmaya hazırsınız.
10 dakika önce çalıştı
Yerel olarak bazı değişiklikler yapıyorsunuz ve 10 dakika önce çalışan bir şey çalışmayı bıraktı. Bir VCS olmadan, ya koda ya da en iyi şekilde bakıyorsunuz, referans sürümünün bir kopyasını yapıyorsunuz ve neyi değiştirdiğinizi görmek için farklı oluyorsunuz. Oh bekleyin, çalışmaya başladığımdan beri referans değişti, bu yüzden artık fark edemiyorum. Ve değişikliklerimi dayandırdığım kodun bozulmamış bir kopyasını tutmayı düşünmedim.
Bir VCS ile hemen hemen benzer bir şey yaparsınız git diff
ve temel aldığınız kodun doğru sürümüne kıyasla değişmiş olursunuz.
Hata ayıklama günlüklerimi saklamalıyım
Yani sen kötü birisin ve loglama kullanmıyor musun? printf
O kötü böceğin tüm parçalarını bulana kadar tüm kod tabanınıza serpiştirmek zorunda mıydınız? Şimdi bir tane buldunuz, düzelttiniz, ancak kalan sorunları düzeltmek için özenle hazırlanmış hata ayıklama kodunuzu korumak istiyorsunuz.
Bir VCS olmadan, dosyaları kopyalamanız, hata ayıklama kodunu (bazı düzenleme hataları ekleyebilir) ortadan kaldırmanız, itmeniz ve yedeklediğiniz dosyaları geri koymanız gerekir. Oh, ama yine de bazı hata ayıklama kodları var gibi görünüyor.
Git ile sadece git add --patch
ve taahhütte koymak istediğiniz birkaç kod satırını seçersiniz ve sadece bunu yapabilirsiniz . Sonra işinizi devam ettirmek ve hala hata ayıklama kodu var. Koda dokunmanız gerekmediği için kopyalama / yapıştırma hatası yok.
Büyük çamur topu
Bir VCS olmadan, insanlar kendi taraflarında çalışır ve size bazen ilgisiz bir sürü değişiklik verir. Kontrol etmek için çok fazla kod olduğunda, bir hata bulmak zor.
Bir VCS, küçük, artımlı değişiklikler yapmanıza ve size bir değişiklik günlüğü vermenize izin verecektir. Changelog önemlidir: insanlar söylemek gerekir neden onlar değişikliği yapıyoruz, değil neyi değişimdir ( Ne sorusu Üyeliğiniz kod değişikliği kendisi tarafından cevaplanır). Bu, örneğin yeni bir özelliğin bazı kodlarını incelediğinizde, alakasız hata düzeltmeleri gibi alakasız karışık değişiklikleri okumak zorunda kalmayacağınız anlamına gelir. Bu, önem verdiğiniz koda odaklanmanıza yardımcı olur.
Size 1'e 1 patates verirseniz ve biri çürürse, hemen bulacaksınız. Şimdi önünüze 100 patates döküp çürük olanı bulmanızı istersem, bu aynı görev değil.
girinti
Umarım iyi bir kodlama stili politikasına sahip olursunuz, aksi takdirde elle birleştirme yaparsanız girinti değişiklikleri sizi çıldırır. Elbette, değişikliklerdeki boşlukları yok sayabilirsiniz (ancak girinti sayıldığında, Python gibi dillerde değil). Ama sonra garip görünen kodu okumak zor olacak.
Sen proje liderisin
Liderseniz, işler yolunda gitmezse suçlanacaksınız demektir. Durumdan rahat kalamazsanız, patronunuz hala doğru iş için doğru aracı kullanmanın buna değdiğini anlayamazsa, en azından tahmin edilebilir bir başarısızlığın lideri olmayı reddederim.