Modern versiyon kontrol sisteminin avantajlarını belirleme [kapalı]


24

Üç yılın daha iyi bir bölümünde büyük bir finansal işletme ortamında ekip lideri / geliştiricisi olarak çalıştım. Üretim sürüm sürecimiz bir kabus çünkü Clearcase etrafında dönüyor. Tüm sürümleri uygulayan ve yalnızca ondan alınan üretime kod girmesine izin verecek bir değişim yönetimi grubumuz var.

Katılırken yaptığım ilk şeylerden biri takımımı Git ile kurmaktı. Herkes, Clearcase’in korkunç olduğunu ve günlük kaynak kontrol meselelerinin ele alınmasında pratik olmadığını kabul etti. Bu yüzden yerel makineme bir tür "gayri resmi" depo oluşturduk ve git ve Clearcase depolarımızı yayınlanma süresi boyunca eşitlemek için bir senaryo yazdım.

Bunun diğer takımlara yayılması ve birkaç aynı işlemi benimsemiştir. Git'i günlük aktiviteler için "gayri resmi" bir şekilde kullanmak ve "resmi olarak" sürümleri için Clearcase'i kullanmak. Git ile ilgili herhangi bir sorun için erkeğe gitmeye başladım.

Bu yüzden, bu hafta SVP ile, özellikle Git'in yararlarını açıklamamı isteyen altyapı değişikliği konusunda bir toplantım var. Görünüşe göre Clearcase'deki sık rastlanan rahimlerimden söz etmişti. Argümanlarımı kabul ederse, işverenimin kendilerini bu istismardan kurtarmasına yardımcı olmak için gerçek bir şansım olacak.

Yöneticilerle olan deneyimim bana onların a) her şey için son derece özlü açıklamalar istediklerini söyleme b) sadece dolar rakamları içeren gerçeklerle ilgilendiklerini

Bir geliştiriciye Clearcase'in Git'in faydalarını açıklayabilirim (veya bu konuda Clearcase'in üzerinde başka herhangi bir sürüm kontrol sistemi), ancak bunun teknik bir altyapıya sahip olmayan bir teknik yöneticiye nasıl yapılacağı konusunda boş bir çizim yapıyorum. MBA ve onun coğrafyada lisans yaptı.

Ona yaptığım herhangi bir tartışmanın ya teknik saçmalık gibi konuşacağını ya da kişisel tercihlerimi arttırdığımı hissediyorum.

Bulmaya çalıştığım şey, geliştiricilerin Git veya herhangi bir modern kaynak kontrol sistemi ile daha verimli çalıştıklarını gösteren somut gerçeklerdir.

Diğer takımların Git'i dahili olarak kullanmaya başladıklarının anlamlı bir işaret olduğunu düşünüyorum, ancak yine de yeterince kişisel değil çünkü yine de kişisel tercih olarak reddedilebiliyor.

Gerçekten ihtiyacım olan şey, "Bu işlem 20 yıldır çalıştı, neden değiştirelim?" argüman.


4
Bence sadece dolar rakamlarına sahip gerçeklerle ilgilendiklerini düşünüyorsanız, onları yargılıyorsunuz. Kısa açıklamalar yapmak isteyebilirler, çünkü ayrıntılı açıklama onları anlamadıkları bir şeye kandırabilir. En iyi yaklaşım belki de Git'in sahip olduğu fakat ClearCase'in sahip olmadığı iyi şeylerin bir listesini vermek. Yine de, şirket ortamı yöneticilerinin, özellikle iyi kurulmuş bir işletme sürümü varsa, açık kaynaklı yazılımlara güvenmediğini hissediyorum.
InformedA


2
Git'i kullanmanın sizi (ve diğer takımları) görevlerinizi yerine getirmede ne kadar etkili hale getirdiğini gösterin. ClearCase’i kasayı duymadan, değiştirmeden gönüllü olmayın, günlük yararların nerede olduğunu gösterin. ClearCase, inşa denetimi veya Github'un güçlü olmadığı proje çapında sorun takibi için gerekli olabilir.
Kevin

3
Dolar ile ilgileniyorlarsa, onlara yıllık ClearCase lisans ücretlerini ve bakımı için ödemesi gereken personeli gösterin.
26

3
“öncelikle görüşe dayalı olarak bekletildi” Bu konuda çok katılıyorum. Benim soruma göre "Bulmaya çalıştığım şey, geliştiricilerin Git ile daha verimli çalıştığını gösteren somut gerçeklerdir." Buna dayanan görüş nedir?
Mike,

Yanıtlar:


22

Çok benzer durumlarda (havacılık ve otomotiv endüstrilerinde) bulundum. Bu ya da sonraki toplantılarda çok ilerleme kaydetmeyi beklemeyin. Bu iki durum da, iyileştirme için savaşmaya devam etme isteğimin ötesine geçti, ama işte şimdiye kadar gördüğüm en iyi taktik ...

"Bu süreç 20 yıldır işe yaradı" diyorsunuz, fakat gerçekten oldu mu? Ne demek istediğinizi "üretim sürüm sürecimiz bir kabus" olarak tanımlayarak başlayın. Geçerli işlem / araçla ClearCase'in mümkün olduğunca agnostik olan sorunlarının bir listesini oluşturun.

Ardından, Git'in mümkün olduğu kadar agnostik olan bir işlem / araç "çözümleri" listesi oluşturun (Git veya herhangi bir modern DVCS, tasarıya tam olarak uyacaktır). Git'in neden ClearCase'den daha iyi olduğunu açıklamak, kullanıcılar için hiçbir şey ifade etmez.

Altyapı ekibinin mevcut yaklaşımın tanımladığınız sorunları olduğunu onaylamasını sağlayın. Bu muhtemelen IBM'in bu sorunları "düzeltmek" için destek aramalarına yol açacaktır. IBM'in sorunları adım adım atmamasını sağlamak için bağlantıda kalın. ClearCase, modern sürüm kontrolü anlayışımızın temel özelliklerinden yoksun olduğundan, bu sorunların çoğu düzeltilemez veya büyük bir altyapı değişikliği gerektirecektir.

Umarım bu noktada, altyapı ekibi bunu bir iş sorunu olarak görecek, ancak kolay bir çözümü olmayan biri. Bu noktada, ek maliyetleri tahmini maliyetlerle karşılaştırmayı teklif ediyorsunuz. Ekiplerinizden çoğu Git'i zaten kullandığından, eğitimi gider olarak kaldırabilmelisiniz.

İyi şanslar!


Not: ClearCase 20 yaşında değil.
Jan Hudec,

2
Bir şey bulacaksınız sanmıyorum olamaz ClearCase ile yapılabilir. Ancak, ClearCase ile birçok şey daha karmaşık olacak ve pekmez kadar yavaş olacak . Neyse ki işleri daha hızlı halletmek çoğu yöneticinin kabul edeceği bir argüman .
Jan Hudec,

10
@ JanHudec, Rational ClearCase'in ilk sürümü olan 1992 yılında 22 yaşındaydı.
private_meta

@private_meta: Hm, neden 1998'i hatırladığımı bilmiyorum.
Jan Hudec

14

Üretim sürüm sürecimiz bir kabus çünkü Clearcase etrafında dönüyor. Tüm sürümleri uygulayan ve yalnızca ondan alınan üretime kod girmesine izin verecek bir değişim yönetimi grubumuz var.

Hayır, değişim yönetim grubunuz ve serbest bırakma prosedürleriniz nedeniyle işleminiz bir kabus. Devam edin ve SVN veya git veya Fossil için Clearcase değiştirin. Sen gerekecek tam aynı sorunlar . (Bence doğru yapıyorlar TBH, güçlü serbest bırakma kontrolleri şarttır).

Bu, odaklanmanız gereken şeydir, git'in geeky kimlik bilgilerine değil (hepsi devs ile alakası yoktur), süreci daha az zahmetli hale getirmek için değiştirerek iş vakasına odaklanmanız gerekir. Muhtemelen Clearcase kullanarak bunu yapabilirsin, ama yine de git kullanma fikrini gizlice sokma fırsatı veriyor.

Buradaki "daha büyük resme" bakmazsanız, git grubunu bırakma grubunun gerektirdiği kısıtlamalarla kullanmaya devam etmenin en iyi yolu. Değişim kontrolünün ne için olduğuna dair daha geniş kapsamlı hususları göz önünde bulundurursanız, gidişi kuruluşunuzun ihtiyaç duyduğu güçlü bir şekilde kontrol edilen salım süreci için yararlı olması için uygulamanız gereken kısıtlamaları takdir edersiniz.


Sizin için bazı fikirler: Mevcut sistemle ilgili verimlilik sorunlarını geliştirici bakış açısıyla görmelerini sağlayın. Bunu 2. bölümün 1. parçası olarak yapın. 2. bölüm gidin ve onlarla birlikte çalışın; böylece geliştiricilerin anlamanız gereken kontrol sorunlarını görebilirsiniz. Karşı tarafın görüşünü görüntülemek için her iki taraf için de bir öğrenme alıştırması olarak düşünün ve daha sonra her iki tarafın da sahip olduğu temel gereksinimleri çözen bir çözüm bulmanız daha iyi olmalıdır. Sürümlerin dev'den daha önemli olduğuna dikkat edin, bu nedenle beklediğinizden daha fazla zemin vermeye hazır olmalısınız.

Sürümler için neyin gerekli olduğu bilgisine sahip olduktan sonra, onlara ihtiyaç duydukları şeyi verdiklerini gösterebileceğiniz ayrıntılı bir işlem belgesi (izlenmesi gereken ayrıntılarla birlikte) yazmayı kabul etmelisiniz. Bu şekilde nasıl masaj yapabilirsin, böylece dev tarafı senin için daha iyi olacak. Kaynak düzgün bir şekilde yönetildiği ve doğru bir şekilde düzenlendiği müddetçe dev'in ne kadar önemli olduğunu umursamadıklarını hayal ediyorum - bu, kod değişikliklerinin biletleri değiştirmek için nasıl bağlanabileceğini, yapılan kodun nasıl alınacağını göstermek zorunda kalacağınız anlamına gelir. yama yapmak, oluşturmak ve yeniden yayınlamak için bir sürüm.


Belki ClearCase ile ilgili en büyük sorun pekmez kadar yavaş olmasıdır. Dolayısıyla süreç karmaşıksa (ve bunun için iyi bir sebep olabilirse), daha hızlı bir şeye geçmek onu iyileştirir.
Jan Hudec

1
@JanHudec Clearcase'i hatırlıyorum ... çalıştığım yer o kadar yavaş değildi ama belki de repo bir sunucuya yerleştirilmiş olan ürünlerden biri, güvenlik ve yönlendirme ile çevrili uzak bir kurumsal veri merkezinde. OP'nin SVN veya TFS ile gitmeden daha iyi bir şansı olacağını düşünüyorum, ama kalbinin üzerinde durduğu şey değildi.
gbjbaanb

3
ClearCase temelde sürümlendirmeli bir ağ dosya sistemidir. Bu yüzden ağ bant genişliği ve özellikle de gecikme süresi bunun için çok önemlidir. Yerel çoğaltma ile çoğu işlem katlanılabilir (ancak hız için tasarlanmış olan Git'ten çok daha yavaş), ancak bazı işlemler korkunçtu. En kötüsü 15 dakika süren tüm dosyaları serbest bırakılmak üzere etiketlemekti ve bu çok büyük bir proje değildi.
Jan Hudec

1
Bir teknoloji probleminden ziyade "insan" problemi olduğuna dikkat çekmek için + 1.
kdgregory

1
Clearcase ile sahip olduğum en büyük kabus, CVS gibi, sadece bireysel dosya seviyesinde versiyonlandı; Birleştirme problemleri / etc'in anlamı, CC'deki en yeni sürümün kırılmış bir yapı haline gelmesine ve tüm kod tabanının keyfi bir tarih / saate geri döndürülememesiyle sonuçlanacaktı. Sanal bir ağ yerine yerel görünüm yapma seçeneğini kullanmak IO gecikmesinden kaynaklanan ağrıyı büyük ölçüde azaltır.
Dan Neely

6

Özel örnekler soyut avantajlardan daha fazlasını etkileyecektir. (A) Clearcase'in çözülmesi zaman alan sorunlara neden olduğu belirli örnekleri belgeleyebiliyorsanız en çok başarıya ulaşacağınızı düşünüyorum ve (b) Git bu sorunları çözer. Bunun neden böyle olduğunu (sorulmadıkça) basitçe gösterdiğini; yönetimin teknik özellikleri bilmesi gerekmiyor, bunun için para alıyorsunuz.

Bu örneklere belirli zaman çizelgeleri ve tarihler ekleyebilirseniz çok daha iyi. Ayrıca, çok sayıda yaptığınız X görevinin Clearcase'de Y dakika ve Git'te Z dakika sürdüğünü göstererek de bunu başarabilirsiniz.

Zamanın para olduğunu unutmayın, böylece Git'le çalışmanın daha hızlı olduğunu gösterebilirseniz, finansal olarak da anlamlı olacağını gösterebilirsiniz.


3

İşte bunu nasıl deneyeceğimi denemek.

Bir geliştirici için aptalca gelebilir, ancak yönetime göre teknolojik değişiklikler riskli olarak görülür.

“Sihirli şey zaten çalışıyorsa, neden onu kırma riskini aldın?”

Böylece masayı çevirmelisin. Düğmeyi git yapmamak için daha riskli hale getirin. Ne pahasına olursa olsun, yeni bir oyuncak gibi görünmüyor.

Git'in artık yaygın olarak kullanıldığını söyleyerek başlarım. Sayıları, bunun gibi kullanın: http://ianskerrett.wordpress.com/2014/06/23/eclipse-community-survey-2014-results/

Bir yönetici için bu, git'i kullanan birçok geliştirici bulabilmeleri gerektiği anlamına gelir. Ve bütün bir üçüncü parti araçları ekosistemi (Microsoft'un bile git'i görsel stüdyosuyla bütünleştirdiğini duydum).

Ayrıca bir yönetici, genel olayları takip ettiği için gerçekten suçlanamaz, değil mi? Buna karşılık, kim burada $ other_cvs kullanıyor?

Projelerin ne kadar büyük kullanıldığına vurgu yapın, çünkü basit, hızlı, esnek, güçlü ... Git kullanan büyük adlara (GNU / Linux, Google, Microsoft ...) bağlı büyük projeler bulun.

Bunun kötü bir hareket olamayacağını kanıtladıktan sonra, durumunuzdaki olayları nasıl iyileştireceğine devam edebilirsiniz.

Şirketin rekabet gücünü korumasını ve daha hızlı, daha çevik ekipler tarafından tüketilmemesini istiyorsunuz, değil mi? Clearcase vs Git'i kullanarak verimliliğin nasıl değiştiğine dair bazı dahili (yazılı) tahminler bulmaya çalışırdım. Oradaki geliştiricilerden yardım isteyebilirsin. Ardından, sayıları ve Clearcase ile kalma tahmini maliyeti ile tüm şirket için (yani tüm yazılım geliştiricileri) ekstrapolasyon yapın.

Uygun olsa bile toplantıdan sonra her şeyi yazılı bir e-postada özetleyeceğim (doğru kişileri de dahil).


1
Özel bir serbest bırakma departmanlarına sahiplerse, kesinlikle "daha hızlı, daha çevik ekipler" hakkında incir vermezler. Muhtemelen geliştirici verimliliğini de umursamıyorlar. Güvenilirlik, değişikliklerin izlenebilirliği ve sürümde neyin sona ermesinin kontrolü ile ilgileneceklerdir.
gbjbaanb

@gbjbaanb iyi bir nokta, ancak başka bir CVS zaten kullanıldığında bir yönetici ile yapılan bir tartışmada bunun hakkında nasıl tartışacağımı görmedim.
nha

1

Gerçekten ihtiyacım olan şey, "Bu işlem 20 yıldır çalıştı, neden değiştirelim?" argüman.

Bu geçersiz bir argümandır (atlı arabalar "yüzyıllardır işe yaramıştır", ancak muhtemelen bunun yerine bir araba satın almak istersiniz).

Ben svn ve merkür ile ilgili aynı argümanı duydum (geliştirme sistemimde merkür'ü kullanan bendim).

Bu sorun neyin işe yaradığını değiştirmekle ilgili değildir; Öyle ifade etmeye çalışmayın ve bu "yenmek" için gereken soru ise, bunun işe yarayıp yaramadığı meselesi değil, git ile ne gibi avantajların olduğu meselesidir. , ikisi de çalıştığında (ve neden git daha iyi çalışıyorsa).

Git kullanmak için iyi argümanlar:

  • git, dosya merkezli yerine değişiklik merkezlidir. Bu, değişikliklerin dosyalar arasında izlenmesi daha kolay olduğu anlamına gelir (proje genelinde izlenebilirlik).

  • git, merkezileştirilmiş yerine dağıtılıyor; Bu, işleri kontrol etmenin ağ hızı ile sınırlı olmadığı anlamına gelir - yine çok zaman tasarrufu sağlar. Ayrıca, ClearCase sunucunuzun çökmesi ihtimaline karşı tek bir başarısızlık noktanız olmadığı anlamına gelir.

  • dallanma sistemi sayesinde git birleştirme ihtiyacını en aza indirir (yani her check-in sırasında değil, tamamlanan her özellik için dosyaları birleştirirsiniz). Birleştirme çatışmalarını (eğer varsa) günde birkaç kez (her bir işte) haftada bir veya iki defa (her tamamlanan özellikte) çözmek için geçersiniz. Bu, geliştiricileriniz için daha fazla geliştirme süresi anlamına gelir (yöneticilerin maksimize etmek isteyeceği bir şey).

Diğer takımların Git'i dahili olarak kullanmaya başladıklarının anlamlı bir işaret olduğunu düşünüyorum, ancak yine de yeterince kişisel değil çünkü yine de kişisel tercih olarak reddedilebiliyor.

Niteliksel farkın o kadar büyük olduğunu, şirketinizin genelindeki geliştiricilerin Clearcase'in üstüne ekstra özellikler için Git'i kurmanın, yapılandırmanın ve kullanmanın komplikasyonlarını tercih ettiğini belirtebilirsiniz. Aslında güçlü bir argümandır (tamamen daha iyi bir kullanıcı deneyimi ve özellik seti sunmasaydı, insanlar onu kullanmak için fazladan bir adım atmazlardı - özellikle de şirket için gerekli olmayan bir şey ).

Bu yüzden, bu hafta SVP ile, özellikle Git'in yararlarını açıklamamı isteyen altyapı değişikliği konusunda bir toplantım var.

İki sistemle ilgili taahhütleri temsil eden bir grafik çizin ve geliştiricilerin halka açık olmayan bir şekilde geliştirmelerinden elde edilen akışları gösterin (örn. Bir dosyayı kullanırsanız, ekibin geri kalanı engellenmez ve düzeltene kadar tamamlayamazsınız). Ayrıca, başkalarını etkilemeden aracı taahhütler verebildiğiniz zaman yapabileceğiniz ekstra kalite kontrollerini de açıklayın, her özellik için temiz farklar olabilir (kod incelemeleri için önemlidir).


3
Teknik olmayan yönetim muhtemelen bu argümanlarla ilgilenmeyecektir.
Jcm,

1
Belirli bir karşılaştırma noktası ortaya koymadaki problem, alternatifleri son derece iyi bilmek zorunda olmanız veya parçalara ayrılmanız gerektiğidir. Bu cevap durumunda, geçerli olan tek nokta "dağıtılmış vs merkezileştirilmiş" olandır ve o zaman bile hazırlıklı olmak zorundasınız. "Muhtemelen her hoşnutsuz çalışanın tüm kaynak depomuzu dizüstü bilgisayarlarında mı?"
kdgregory

2
@kdgregory Her hoşnutsuz çalışanın ayrıca birkaç zip dosyası ve kodun kişisel depoları vardır, çünkü ClearCase% 100 oranında çalışmak için çok yavaş ve zahmetlidir. :-)
Jace Browning,

@kdgregory ve onlar üzerinde dururlar "sunucuya gitmeden kontrol edebilirsiniz, ya PC'niz çökerse, tüm girişlerinizi kaybedersiniz. Yedekler nerede? Her birini oluşturmak için kaynakların tek bir akışını nasıl kontrol ederiz? yayınlansın mı? "
gbjbaanb

1

Gerçekten ihtiyacım olan şey, "Bu işlem 20 yıldır çalıştı, neden değiştirelim?" argüman.

Sahneye tanıklık etmeden iyi bir argüman olacağını gerçekten yargılamak zor. Fakat argümanlarınızı duymak için çerçevelemenize yardım etmeye çalışacağım.

Hedef kitlenizin konuyla ilgili uzman olmayan bir bilgi düzeyi olduğunu ve mevcut derste kalmaya ilgi duyduğunu varsayıyorum. Farklı kaygıları ve sorumlulukları var ve eğer bir şeyler ters giderse ciddi sonuçlara varabilir, bu yüzden bu zihniyetten çalışmak zorunda kalacaksınız. Bazı soru veya endişelerini tahmin et:

  • Bu hangi yeni yetenekleri getirir? Şu anda yapamadığımız, yapmak istediğimiz ve bu yeni şeyin bize izin vereceği bir şey var mı? Olumlu bir notla başla.

  • Yayınlanma zamanlamaları üzerindeki etkisi nedir? Bu değişikliğin hemen bir sonraki sürümde gerçekleştirilmesinin maliyeti nedir? Aşağıdaki sürümlerde maliyet ve faydalar nelerdir?

  • Bu süreçte bir değişiklik gerektirecek mi? Yayınlanma zamanlamasından farklı olarak, bu değişiklik bırakma sürecindeki kişilerin yollarını değiştirmesini gerektirecek mi? Bu onlar için şeffaf mı olacak, yoksa uyum sağlamaları mı gerekecek? Diğer bölümlerle işbirliği yapmanız gerekecek mi? İnsanlar değişime dayanıklıdır.

  • Mevcut sisteme bağlı kalmanın tehlikeleri var mı? Mevcut sürecin yakında bitecek olan ya da bitecek olan yazılım veya donanım bağımlılıkları var mı? İşe alma maliyetini artıran bireylerden gelen uzmanlık bilgisine mi dayanıyor? Yeni sistemin taktığı potansiyel bir güvenlik deliği var mı (bu delik yasal işlemlere yol açabilirse bonus puan)? El sallama ya da 'belki' ya da 'muhtemelen' deme: duyu, 20 yıl boyunca iyi çalıştığını gösterir, bu yüzden ispatın yükü değişimin savunucusudur.

Ayrıca, sorunlara ve çözümlere özel olun . Belirli örnekleri bulamıyorsanız, uzman konumunuzdan dürüst tahminleri kullanın. Sektörünüzden tercihen bu tür bir değişikliği benimseyen diğer şirketlere / bölümlere / kuruluşlara ve bunların bu değişikliklere ilişkin değerlendirmelerine örnekler size yardımcı olacaktır. (Son yıllarda bir tür kamuya açık BT sorunu olan örnekleri seçmeyin, yoksa bu değişimin neden olmadığını ispatlamak için tarafınızdan gelir.)

Sen bulabilirsiniz bu cevabı için Sürüm Kontrolü Uygulama için Şirket Ben Work ikna? faydalı.

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.