CS alanında olmayan birine [dağıtılmış] versiyon kontrol sistemi kullanmanın önemini nasıl açıklıyorsunuz? [kapalı]


13

Bu tanıma uyan birine iyi bir örnek proje yöneticisi olabilir.

Geçen gün patronum tarafından "bu Github olayı nedir ve neden önemli?" O, özel barındırma ihtiyacı olacak bazı özel projeleri vardır ve ben her zamanki ötesinde açıklamak için mücadele kendimi buldum: VCSs işbirliği önemsiz yapmak, tüm verilerinizin bir geçmişini ve "yedek" sağlamak ve bir kod tabanı atom değişiklikleri kaydetmek için izin . Aklımda, "sanki bunun ne kadar yararlı olduğunu gerçekten anlamak için bir DRVS kullanmak zorundasınız" diye düşünüyordum.

Size sınırsız özel depolar verdikleri için onu BitBucket'e işaret ettim (hatta bir havuzun ne olduğunu açıklamak zorunda kaldım).

Herkesin bir VCS'nin kıçını nasıl kurtardığı veya hayatını nasıl kolaylaştırdığı gibi gerçekten iyi somut örnekleri var mı?



4
Bu genel olarak VCS veya dağıtılmamış v dağıtılmamış mı?
JeffO

2
Sabah sabit diskini sökün ve masanıza koyun. O zaman önemi fark edecek.
Andrew T Finnell

Yanıtlar:


6

Sürüm kontrolü (en azından) üç dört şey için mükemmeldir: yedekleme, geliştiriciler arasında kod paylaşımı, hataları bulma + düzeltme ve ilerleme izleme.

  1. Yedekleme . Başka bir şey yoksa, steroidlerin yedeği. Tüm geliştirme geçmişine sahipsiniz, her taahhüt tüm kodunuzun bir kimliği (revizyon numarası), bir açıklama, zaman damgası, kullanıcı bilgisi ile bir anlık görüntüsüdür. Revizyonlar arasında dosyaları karşılaştırmak kolaydır. Başka bir şey yoksa, basit bir yedeklemeden daha hızlıdır (yalnızca dosya değişiklikleri gönderilir ve saklanır) ve çok daha kullanışlı meta veriler içerir. Bunu neden yeniden icat ettiniz?

  2. Kod geliştiriciler arasında paylaşılıyor . Aynı ürün üzerinde aynı anda çalışan en az iki geliştiriciniz varsa, kod değişikliklerini güvenilir ve tutarlı bir şekilde paylaşmanın ve birleştirmenin başka bir yolunu göremiyorum. Posta ile fermuar göndermek mi istiyorsunuz?

  3. Hata bulma ve düzeltme . Müşterileriniz belirli bir ürün sürümü için bir hata bildirdiğinde, yeniden oluşturmak ve düzeltmek için gerçek kaynak anlık görüntüsünü hızlı bir şekilde alabilirsiniz. Kaynağınız müşterinin isteğinden farklıysa hataları yeniden oluşturmak zordur. Sökebilmeniz için yürütülebilir dosyayı göndermelerini istiyor musunuz? Ayrıca, bir hatanın nedenini belirleme konusunda sorun yaşıyorsanız, VCS'yi tam olarak hangi sürümde sunulduğunu saptamak için kullanabilirsiniz.

  4. İlerleme takibi . Çalışmanızı anlık görüntülerde yürüttüğünüzde, sizin (ve yöneticinizin) özellik uygulamaları ve açık hataların durumu hakkındaki ilerlemeyi izlemenize olanak tanır. VC sistemleri ayrıca izleme sistemleri ve sürekli entegrasyon sistemleri ile kolayca entegre edilebilir . Bir VCS'niz yoksa, hobi projesi dışında herhangi bir şey için bir kalite seviyesini korumak imkansızdır.

Eğer hiç yazılım geliştirme gerektiğini kabul ettikten sonra hiç (Ben bile bir hobi projesi için kaçırmazdım) bir VCS dışında yapılabilir, o zaman pervasızca kopyalanan bir (biraz daha komplike) DVCS özelliklerini (aşağıdaki kısmı tartışabilirsiniz Wikipedia ):

  • Her kullanıcının deponun kendi yerel kopyası vardır (ve etkili bir şekilde yedek kopyası)
  • Kullanıcıların bir ağa bağlı olmasalar bile verimli bir şekilde çalışmalarını sağlar
  • Hiçbir ağ dahil olmadığından çoğu işlemi çok daha hızlı yapar
  • Proje yetkililerinden izin almaksızın projelere katılmaya izin verir
  • Özel çalışmaya izin verir, böylece kullanıcılar yayınlamak istemedikleri ilk taslaklar için bile revizyon kontrol sistemlerini kullanabilirler
  • Tek bir arıza noktasına tek bir fiziksel makineye güvenmekten kaçınır

Hata çoğaltmasından bahsettiği için +1. Bunu hiç düşünmemiştim!
David Cowden

31

"'Geri al' düğmesini hiç yararlı buldunuz mu? Oh, o zaman sürüm kontrolünü kullanmamız gerektiğini kabul ediyor musunuz?"

Sürüm kontrolünü kullanmaya başladığımda ilgilendiğim ana özellik, hatalarımı 'geri alma' ve önceki bir sürüme geri dönme yeteneğiydi. Herkes geri al düğmesini takdir edebilir. Verilen sürüm kontrolü çok daha fazlasını yapabilir.


1
Bir şekilde geri alma düğmesi kavramı etrafında bulunan bir yanıtın kullanıcı tarafından gönderildiğini takmak @ Buttons840
David Cowden

9

Temel bilgilerle başlayın:

Birincisi, bir VCS geliştiricileri kendilerinden ve birbirlerinden korur - iki veya daha fazla geliştiricinin aynı kod tabanı üzerinde nispeten güvenli bir şekilde çalışmasına izin vermekten başka bir amaca hizmet etmezse, çok değerli olurdu (ve daha önce gün iş biraz dikkatsiz kopyalama tarafından üzerine yazılmıştır).

İkincisi, bir denetim izi sağlar - bir geçmiş - geri dönebilir ve kimin ne zaman ve ne değiştirdiğini görebilir ve geri döndürebilir ve sildiğiniz kodu geri alabilirsiniz, çünkü artık gerekli veya daha sonra gerekeceği ortaya çıktığında uygun değildir herşey.

Üçüncüsü size bir referans noktası verir - kesin kaynak işlenmiş koddur (gerçek dünyada özellikle DVCS ile biraz daha karmaşıktır, ancak bu tartışma uğruna yeterince yakındır). Eğer deponuzu doğru bir şekilde yedeklediyseniz, şirketin varlığını korumalısınız.

Bu üç şey VCS satmak için "bu" olmalıdır - eğer bir yönetici başka bir yönetici bulma zamanının üstünde yeterli değeri göremezse.

VCS sattıktan sonra (her şeyden önce, yalnızca devs sayısının sıfırdan büyük olduğu geliştirme ekiplerine kullanım içindir), DVCS'nin neden SVN veya TFS üzerinden çalışıp çalışmadığı sorusu Evde veya Fırın veya Bitbucket veya Github gibi barındırılan bir hizmeti kullanmak (ödeme yaparsanız özel olan) oldukça daha derin ve bağlama bağlıdır.


5

VCSS

Sadece yedekleme kavramını açıklayın . Yedeklemeler, belirli bir zamanda ne üzerinde çalıştığınızı görmenizi sağlar. VCS programcılarının tüm projelerini zorunlu olarak kopyalamaya başlamadan önce, genel olarak sahip oldukları her iyi ve istikrarlı sürümü kaydetmek için nasıl olduğunu söyleyin, bu yüzden işler kötüye gittiğinde, işlerin ne zaman çalıştığı, en son şeylerle karşılaştırın ve nerede olduğunu görün onlar ya da bir başkası , projenin iki yedeklemesinin tamamı yerine sadece farklılıklara bakarak bunu berbat etti ve düzeltti .

Özetle : VCS'ler çalışmanızın yedeklerini kaydetmenize ve yalnızca yedeklemeler arasındaki farkları görebilmenize olanak tanır .

DVCSs

Dağıtılmış sürüm kontrolüne gelince, tipik sürüm kontrolünün bir sunucuya ve internet bağlantısına nasıl ihtiyaç duyduğunu ve herkesin bundan yorulduğunu açıklayın , çünkü daha yavaştı ve herkes tek bir yedekleme üzerinde çalıştı, eğer biri dağınıksa projeyi herkes için bozdu, dağıtılmış sürüm kontrolü ile herkes internet bağlantısı olmadan makinelerinde kendi yedekleri üzerinde çalışabilir ve herkes mutludur, çünkü kimse çalışırken yedekleriyle uğraşmaz ve daha sonra işlerini paylaşma konusunda endişelenebilirler.

Bir başka iyi olan, sadece bir yedeklemenin olduğu merkezi bir VCS'den farklı olarak, yedekli makine ateş yakarsa, etrafta dolaşacak başka tam yedeklemeler de vardır (her geliştirici için en az bir tane).

Özetle : DVCS'ler , herkes birbirinizi rahatsız eden tek bir sunucuda sıkışmak zorunda kalmadan kendi yedeklemenizde çalışmanıza izin verir ve eşyalarınızla işiniz bittiğinde diğer değişiklikler hakkında endişelenmenize izin verir. Ayrıca, ana depo makinesi alev alırsa hiçbir şey olmaz .


Sanırım geliştiriciler için olası en kötü senaryoyu düşünmek tipik bir durum ... patolojik bir korkuları var. Bu çok ilginç ...
Radu Murzea

Çok fazla kalın !!
David Cowden

2

Çoğunlukla mühendislerle çalışıyorum (geliştiriciler için değil, kod yazıyorlar)

Ana nokta, onlara sürüm kontrolü hakkında açıkladığımda, kodunuzu / belgelerinizi / herhangi bir şeyi geri alma ve yönetme ve diğer geliştiriciler / yazarlar / vb ile işbirliğini basitleştirme olasılığıdır ...

Bu iyi bir satış noktası - ve tüm işlerim için bir VCS kullanmamın ana nedeni, diğer avantajları da vardı: bir geçmişe sahip olmak, kolayca yedeklenebilen bir repo ...

Birçoğu fikri seviyor ve bunu projeleri için benimsiyor (özellikle diğer mühendislerle işbirliğini içeriyorsa).


2

Birini herhangi bir şeyden ikna etmeye çalışırken, her zaman ona bakış açısından gelmeye çalışmanız gerekir.

Proje yöneticinizin basit bir hedefi vardır - projeleri zamanında ve bütçeyle tamamlamak.

Şu anda sürüm kontrolü kullanmıyorsanız, geliştirme ekibiniz sürüm kontrolünün elle çözdüğü sorunları çözüyor. Tüm bu problemler diğer cevaplarla iyi sayıldı, bu yüzden buraya girmeyeceğim.

Yapmanız gereken, proje yöneticinize ekibin Xher hafta saatlerce GIT'nin otomatik olarak veya örneğin 0.1 * Xgeliştirici saatlerinde çözebileceği sorunları manuel olarak çözerek geçirdiğini açıklamaktır .

GIT'in hayatınızı kolaylaştıracağı veya diğer geliştiricilerinizin hayatlarını kolaylaştıracak nedenlerle yaklaşmayın, GIT'in yazılımı daha hızlı ve daha ucuz göndereceği perspektifinden yaklaşın.


1

@ Buttons840'ın açıklamasını kod tabanı için geri alma düğmesi olarak seviyorum. Ayrıca Word'ün veya InDesign'ın "Değişiklikleri İzle" özelliğinin (daha az sinir bozucu) bir sürümüyle karşılaştırılmasına yardımcı olabilir. Deneyimlerime göre, bir kişinin önümüzdeki birkaç saat boyunca başkalarına X, Y ve Z dosyalarına dokunmamalarını söyleme ihtiyacını azaltır, bu da işleri halletmek için kullanışlıdır.

Ayrıca ince taneli sürüm bilgisini hataların giderilmesi / düzeltilmesi için son derece yararlı buldum. Oluşturduğum hemen hemen her veri dosyasında SVN sürüm numarasını ($ Id özelliği aracılığıyla) saklıyorum. Bu şekilde, (ne zaman?) Bir hata bulunursa, potansiyel sorunları olan dosyaları tanımlamak ve bunları yeniden oluşturmak veya hatayı telafi etmek için başka bir kodun olması önemsizdir.


1

Sürüm kontrolü kullanmıyorsanız, üretim ortamınızı nasıl yeniden oluşturacağınızı nasıl bilebilirsiniz?

1 Farklı kişiler (test uzmanları, geliştiriciler) farklı yerlerde aynı bilgileri arayacaktır

senkronizasyondan çıkacak ÇİFT VERİ'ye yol açar.
Sürüm kontrolü, yinelenen verileri ortadan kaldırmanın en kolay yoludur.

2 Sürüm kontrolünü kullanırsanız, üretim ortamının sürüm kontrolündeki ile eşleşmesini sağlamak kolaydır.

Bu, bir sorunun kötü bir yapıdan (prod sürüm kontrolüyle eşleşmediğinden) veya bir tasarım veya kodlama hatasından (prod sürüm kontrolüyle eşleştiğinden) kaynaklanıp kaynaklanmadığını tespit etmeyi kolaylaştırır.

Sürüm kontrolü, her test ortamına bir sürüm numarası atamayı kolaylaştırır ve doğal olarak üretimin test veya geliştirmeden daha düşük bir sürüm sayısına sahip olmasını ve testin geliştirmeden daha düşük bir sürüm sayısına sahip olmasını beklersiniz. Durum böyle değilse, kodun bir kısmı düzgün bir şekilde test edilmemiştir.


0

Ayrıca yazılımı serbest bırakırsanız, bir VCS'nin aşağıdaki özelliği oldukça önemlidir: Müşterinizin bir hata bulduğunu varsayın. Yazılımın mevcut gelişimi, muhtemelen müşterinin sahip olduğu sürümden çok farklı bir durumdadır. Belki hata şimdi düzeltildi, belki değil, ama her durumda mevcut yazılım sadece müşteriye gönderebileceğiniz bir durumda değildir.

Bir VCS, müşteriye gönderilen sürüme geri dönmeyi, talep ettiği hatayı düzeltmeyi, derlemeyi ve revize edilmiş bir sürümü göndermeyi önemsiz kılar. Tüm bunlar, mevcut gelişmeyi bozmadan, ona tamamlanmamış / kararsız özelliklere veya yeni tamamlanmamış geliştirme nedeniyle tanıtılan ek hatalara sahip bir sürüm göndermek zorunda kalmadan.

Buna ek olarak, bir VCS, hata hala oradaysa, bu düzeltmeyi yeni geliştirme dalına geri taşımanızı kolaylaştırır.

Güçlü bir disiplinle, bunu çok küçük bir takım için VCS olmadan yönetebilirsiniz, ancak birini kullanmak size zaman ve sonuçta para kazandıracaktır. Büyük olasılıkla müşterilerinizi korumanıza da yardımcı olacaktır.


0

Şirketinizde ikiden fazla kişi varsa, muhtemelen birden fazla kişi tarafından düzenlenen bir yerde yatan bir kelime belgeniz veya excel belgeniz vardır. Ve bazen bu kişiler, iş gezisi vb. İçin yerel kopyalar çıkarırlar. Veya her değişiklikten sonra belge e-posta ile gönderilir.

Böyle bir dosyanız varsa, o zaman bazı kişilerin değişiklikleri geçmişte veya gelecekte kaybolacaktır. Ya da insanlar değişiklikleri kaybettiklerini düşünürler, ancak kanıtlayamazlar. Ya da kimin neyi ne zaman ve neden değiştirdiğini görmek istiyorlar. Bir VCS'nin çözdüğü sorun tam olarak budur.


2
Word / Excel belgeleri şimdiye kadar gördüğüm her VCS için opak. Bu açıklamayı kullanırken dikkatli olun!
Peter Taylor

E-posta zinciri örneğini de kullanmayı seviyorum.
David Cowden

0

Açık kaynaklı yazılım / kitaplık seçerken, DVCS deposuna sahip olmak seçim kriterlerinde kesinlikle bir avantajdır.

1) Tüm depoyu klonlayabiliriz, proje hakkında endişelenmenize gerek yok veya web sitesi öldü.

2) İnsanlar çekme isteği ile hata düzeltmesi göndermeye daha istekli, acil sorunlar için daha hızlı hata düzeltmesi ile sonuçlanır.

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.