Birleştirme ve devralmalar nedeniyle çeşitli sürüm kontrol sistemlerini entegre etme veya diğerlerinden birini seçme yöntemi?


11

Şirketler, farklı sürüm kontrol sistemleri kullanan diğer şirketleri satın alırlar.

Subverson-GIT köprüsünün kullanılması veya hatta sadece bir aracın diğerinin üzerinde kullanılmasına karar verilmesi gibi sistemlerin nasıl entegre edileceği ve sistemler arasında nasıl geçiş yapılacağı konusunda ortak bir bilgelik var mı?

İnsanlar, yazılım geliştirme konusundaki "Joel" testine eşdeğer bir karar kümesi için bir dizi kriter kullanıyor mu?

Yanıtlar:


11

Göç sorusunu çeşitli göçlerin kişisel deneyiminden cevaplamak için:

Yazılımın güncel sürümünü temel kaynak olarak yeni kaynak kontrol sistemine yerleştirmekten ve oradan çalışmaktan korkmayın.

Zamanın büyük çoğunluğu tarihe ihtiyacınız olmayacak. Bu, entegrasyon sırasında gerçekleştirilecek daha az görev ve yanlış gitmek için daha az şey olduğu anlamına gelir.

Aktif olarak geliştirilen dosyalar / projeler yakında yeni bir tarih yaratacaktır. Bu nedenle, neden bir değişiklik yapıldığını öğrenmeniz gerektiğinde, tarihin yakın zamandaki bir değişiklik olacağı için mevcut depoda olması ihtimali vardır.

Taşıma işleminden önce kararlı olan dosyalar / projeler, taşıma işleminden sonra sabit kalmalıdır (her şey eşittir), böylece geçmişe bakmanıza gerek kalmaz. Böyle eski bir dosya / projedeki bir hatayı araştırmak zorunda olsaydık, geçmişe sahip olmanın gerçekten faydası olmadığını gördük. Eski depoyu yılda 6 ay boyunca sakladığınız sürece bu gibi durumlarda referansınız olacaktır.


+1 adil nokta, sadece ihtiyacınız olanı taşıyın, eski sürümleri eski depoda bırakın. Kendi iyiliği için göç etmeyin. Bu yaklaşım, düzenleme ile arama arasında seçim yapma yaklaşımının bir varyasyonudur. Arama yapmak istediğinizi hızlı bir şekilde elde edebiliyorsa, her seferinde aradığınızı düzenlemenize gerek yoktur.
therobyouknow

1
+1 IMO en iyi strateji. Her ihtimale karşı sadece birini, diğerlerini salt okunur modda kullanmaya devam edin.
user281377

1
+1: geçiş bölümünde daha doğru yanıt.
VonC

1
+1 - son üç sürümü bir kenara bırakarak mevcut kodu anlamak için yeterince zor.
JeffO

1
Çok iyi çalışan harika cvs2svn betiğini kullanarak birçok CVS deposunu SVN'ye dönüştürdük. Geçmişi 'son değişikliklerin' ötesinde arayan kimseyi hatırlamıyorum, bu yüzden aslında disk alanına değmezdi. Tekrar yapsaydım, CVS deposunu etiketledim, SVN'ye yeni olarak giriş yaptım ve CVS deposunu salt okunur olarak işaretledim.
JBRWilkinson

4

Yönetimsel açıdan, bu temel olarak bir sorudur:

  • destek : VCS'yi serbest bırakan şirket sorun çıkarsa hala orada olacak mı?
    Ne yazık ki ClearCase gibi eski ürünlerin hala dikkate alınmasının ana nedenlerinden biridir (ClearCase 2003'ten beri ... IBM ürünü)
  • lisans maliyeti : ücretsiz alternatifler olsa bile, bazen bir VCS için "grup lisansları" müzakere edilebilir veya aslında sunucular, ağlar, destek vb.Dahil olmak üzere çok daha büyük bir sözleşmeye dahil edilebilir ... Bu tür bir ürün için küresel bir lisans sona erebilir kamu fiyatından çok daha az maliyet.

Proje tarafında, bu aynı zamanda bir sorudur:

  • yönetim : hangi sunucuya bir VCS (veya Git, SVN ve diğerlerinden bahsediyorsak birçok VCS) kuracaksınız? Hangi yedekleme politikasıyla? Hangi DRP (Felaket Kurtarma Planı)?
  • yerel destek : 1. seviye desteği kim alacak? Seviye 2?
  • pazar bilgisi : Bu VCS ve tüm özelliklerinden yararlanmak için doğru bilgiye sahip yeterli geliştirici ve / veya yönetici bulacağınızdan emin misiniz?

Ücretsiz ya da değil, "özgür" yazılım hatırlıyorum "özgür konuşma" (özgür olanı seçmek ve dağıtmak için özgür) gibi "özgür bira" değil, (hala sunucuda çok para mal olacak) , yedekleme, yönetim, destek, ...)

Yukarıdaki kriterler, hangi VCS'nin tutulacağını, neyin terk edileceğini belirlemeye başlar.
Ancak ikinci durumda, dikkate almanız gerekir:

  • taşıma stratejisi : bir proje geçmişini bir VCS'den diğerine aktarabilir / aktarabilir misiniz?
  • köprü stratejisi : iki farklı VCS'de bir geçmişe sahip olmak mantıklı mı?
  • Proje eskimesi : Bir proje bakımda / Kullanım Ömrü Sonu durumundaysa, eski bir VCS'yi kısa bir süre desteklemek daha iyi olabilir.

+1 iyi yanıt, mermi noktaları aradığım kriterleri özetliyor ve onlarla ilgili açıklamalarınız da yardımcı oluyor. Cevabı kabul etmeden önce başkalarına bir şans vereceğim. Teşekkürler.
therobyouknow

1

Farklı sistemleri entegre etmeye gerçekten ihtiyacınız var mı? Ekibimizde, her proje kendi deposunda yaşıyor ve böylece tarihleri ​​birbirinden bağımsız. Burada, aralarında bağımlılıklar olsa bile, yıkım altındaki bazı projelerle ve civa altındaki başka projelerle çalışmak konusunda hiçbir sorunumuz yok.

Bir VCS'den diğerine geçmeyi seçerseniz, kullanılabilir dönüştürme araçlarına bakın. Deneyimlerime göre, projelerin geçmişini bırakmak için teknik bir neden yok.

Düzenle

Sanırım soruda ve diğer cevaplarda örtük olan bir şey anladım. VCS'nin bağımlılıkları yönetmek için de kullanıldığı gerçektir. svn:externalsBir repo'yu (bağımlılık) diğerine entegre etmek gibi VCS özelliklerini kullanmanın oldukça yaygın olduğunu biliyorum .

Ekibimizin 2 farklı sistemimizi köprülemeye (veya entegre etmeye) ihtiyaç duymadığını (teknik) nedeninin, bağımlılıkları yönetmek için ayrı bir aracımız olması olduğunu düşünüyorum. Depomuz birbirini tanımıyor.


Farklı sistemleri entegre etmek mi istiyorsunuz? Evet, bir takımın çalışması başka bir takım tarafından kullanılıyorsa. Entegrasyon, ihtiyaç düzeyine ve mevcut personel kaynağına bağlı olarak sıkı olabilir veya kaybedilebilir. Hayır, projeler tamamen bağımsızsa. Geriye kalan tek endişe birden fazla sistemi ve bunun iyi ya da kötü bir şey olarak algılanıp algılanmadığını desteklemektir. Farklı bir bilgi işlem dünyasında yaşadığımızı kabul edersek iyi olur ya da kendi istekleri için odaklanıp kararlılık göstermemiz gerektiğini düşünürsek, aşırı derecede kaygısız olabilecek bir araç seçerek!
therobyouknow

PS. +1 Şanslısınız, barjak, çeşitli bilgi işlem ortamlarını tolere eden bir organizasyonda olduğunuz için.
therobyouknow

0

Çok iyi cevaplar. Düşünülmesi gereken bir diğer şey de, takım üyelerinin VC'yi değiştirmeyi düşünmekten kaçınmasına izin vermemek çok önemli. Göç, bir öğrenme eğrisi vb. İle ilgili bir aksaklık olacaktır, ancak çok fazla problemleri varsa, yetenek ve / veya işbirliği seviyelerini sorgulamaları gerekir.


+1 Burada bir gerçekçilik. İnsanların sinirlerini tutmaları, cesur olmaları ve ilerlemeleri gerekiyor. Risklerin iyi tanımlanması gerekir. Gördüğüm ve diğer insanların işyerimde söylediğini duyduğum bir öğrenme, bazen meşgul olmadan önce belirsizliği / riskleri / süreklilikleri net bir şekilde tanımlamak için yeterince çalışmamamızdır. Yanlış / düzeltme yinelemesi için yeterli zaman var ama ilk seferde doğru almak için yeterli zaman yok gibi görünüyor. Sorunları gidermek, bazen gereksiz olsalar bile ödüllendirilir ve devam eden faaliyet olarak görülür.
therobyouknow

1
Bu, söz konusu VCS'lere ve göçün ne kadar iyi yapıldığına bağlıdır. Git veya hatta CVS'den herhangi bir kilitleme VCS'sine geçmek son derece sarsıcı olacaktır.
David Thornley
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.