Subversion / kaynak kontrolü sadece üretim kodu için mi?


21

Bir yıl önce Bilgisayar Bilimi bölümünden mezun oldum ve şu anda küçük bir web geliştirme şirketinde (ben ve bir geliştirici artı yöneticiler, müşteri hizmetleri ve test uzmanı) çalışıyorum. Ben başlamadan hemen önce kaynak kontrol sistemi yoktu. Şimdi yavaşça SVN'i uygulamaya başlıyoruz, ancak diğer (kıdemli) geliştirici (bundan böyle Joe olarak anılacaktır), SVN depomuza gönderilmesi gereken tek kodun üretime hazır olarak test edilmiş ve onaylanmış olduğunu belirtmektedir. Bu, daha büyük projelerde, bir hafta veya daha fazla bir süre için taahhütte bulunmayabileceği anlamına gelir.

Bu normal bir uygulama mı? Kaynak kontrolünün avantajlarından birçoğunu kaybediyoruz gibi geliyor bana:

  • Proje ilerlemesinin ayrıntılı izlemesi
  • Sorunları göründükleri ve çözüldükleri şekilde izlemek
  • Hataları kolayca geri alma
  • Kolay kod yedekleme, bu nedenle bir iş istasyonu düşerse fazla kaybedemeyiz
  • Düzeltmeleri burada açıklandığı gibi çalıştırılabilirlere damgaladığımızı varsayarak, hangi üretim alanlarında hangi kodun çalıştığını tam olarak belirlemek daha kolay
  • Kolay işbirliği (ekip çalışması yapmamıza rağmen; hepsi solo projeler)
  • Vb.

EDIT: Tarihsel olarak bu şirkette gerçek bir takım çalışması olmadığını vurgulamalıyım; ayrı projeler üzerinde çalışan sadece iki geliştirici. Ayrıca, projelerin çoğu küçüktür, bu yüzden birkaç hafta içinde tamamlanabilir. Ve şirket, on yıldan fazla bir süredir iş dünyasında ve kaynak kontrolü olmadan gayet iyi bir şekilde yürüdü. Projeler genellikle tahmini süreleri içinde tamamlanmaktadır.


2
Bu fikri nasıl motive ediyor? Sana bir sebep vermediyse sordun mu?
Anto,

8
"Joe" Şubeyi anlıyor mu? Bazı nazik sorular bulmak ilginç olabilir.
James,

2
@Anto - Sanırım en iyisi "üretim değil ve üretim havuzunun bir parçası olmamalı" dır.
Bay Jefferson,

1
@James - SVN'yi genel olarak çok iyi tanıdığını sanmıyorum, bu yüzden hayır, dallanmayı bildiğini sanmıyorum. Ancak aşağıdaki yanıtları verdikten sonra, çözümün bu olduğunu düşünüyorum.
Bay Jefferson,

4
Bu soruyu okuyun ve kafamdaki küçük bir ses sadece "NOOOOOOOOOOOOOooooooooooooo" diye bağırdı.
Kevin D,

Yanıtlar:


1

Projeler tahmin edilen zaman dilimi içinde tamamlanırsa, müşterilerin mutlu müşteriler olduğunu varsaymak güvenli midir? :)

Şirketin yeni tür projeler üstlenmeye başladığı ve bazı büyüyen acılardan ya da bazı "değişen ağrılardan" geçtiği görülüyor. Burada bir sürü varsayım var ... Lütfen benimle kal!

Kodun organizasyonu ve kontrolünün size ve ekibinize dahili olarak yardımcı olabileceğinden eminseniz, SVN düşünülmelidir, IMHO. Bu rotaya gidip gerçekten çalışıyorsa ve şirket daha kaliteli ürünler üretebiliyorsa, bu sayede daha mutlu müşteriler kazanıyorsa, bonus puan kazanırsınız!

Yönetimle mücadelenin sıkı bir çalışma ortamı yaratacağı görülüyorsa dikkatli olun. Gerçek şu ki, sahipleri şirket yapmış. Ve sadece bu değil, başarılı bir şirket haline getirdiler. Muhtemelen bir ikramiye vurmaları muhtemeldir, çünkü kumar konusunda iyiler.

Saygılı ol ve duyabiliyorsun.

Umarım bu daha verimli ve daha mutlu bir takımla sonuçlanır. Benim tecrübeme göre, sinirli bir yönetim ile elde etmek zor.


42

Joe hemen hemen yanlış öldü. Şimdi, onaylanmış, üretime hazır kodu temsil eden bir "temiz" dalınız olduğunu iddia edebilirsiniz. Ancak, işler hazır oluncaya kadar kaynak kontrolünü kullanmamak açıkçası kendi kendini yitiriyor. Bir çeşit cinsiz martini yapmaya çalışmak gibi.


6
Lütfen dallanma ve etiketleme konusunu vurgulayın. Bu - bence - insanların SVN'de sadece üretimde ısrar etmelerine neden olan önemli özellik.
S.Lott

3
votkaya karşı önyargınız olsa bile mükemmel bir nokta.
Covar

Neredeyse? Onun derdi olan ölü yanlış. Bunun hakkında soru yok.
Steven Evers

2
@Covar: Votkamı vermouth ile kirletmiyorum :)
Wyatt Barnett

22

"Kıdemli" aslında çok vasıfsız. Derlenebilecek (ve varsa testlerden geçen) herhangi bir kod kaynak kontrolüne bağlı olmalıdır. Kaynak kontrolü, kod paylaşımı ve artımlı olarak SW oluşturmak için merkezi bir değerdir.

İyi olan nokta, üretim kodunu ayırmaktır (son kararlı sürüm) ancak böyle bir durumda kaynak kontrol sistemleri etiketler / etiketler ve dallar gibi özellikler içerir.

Birisi iki-üç gün içinde bir şey yapmazsa ekibimiz çok şüpheli alır. Bazı sorunları olduğu ve belki de yardıma ihtiyacı olduğu anlamına gelir. Kaynak kontrolünün diğer bir noktası, geliştirme makineleri için geçerli olmayan, genellikle düzenli olarak yedeklenmesidir. Diskiniz çökerse birkaç hafta boyunca çalışmanızı kaybedersiniz.


12
Ancak takım üyesi olarak çalışmakta yetenekli değil.
Ladislav Mrnka

2
@ Tom Hamming: Kesme kodu, yazılım geliştirmiyor. Eminim programlama konusunda iyidir, ancak bu günlerde sürüm kontrolü IDE'nin artık bir aracı değil. Elbette, teknik olarak onsuz yapabilirsiniz, ama aklı başında kimse yoktur.
Steven Evers

2
@SnOrfus - SCM'nin faydası hakkında bir dereceye kadar hemfikir olduğum halde, bu sorudaki amacım Joe'yu ve / veya bir geliştirici olarak becerilerini kısmak değil. Yine, mükemmel bir ürün ortaya çıkardı, bilgili ve son 10 yıldır SCM'siz iyi iş çıkardı. Bu soru ile amacım, bakış açısının benim karşılaşmadığım geniş çapta tutulan olup olmadığını görmek; Sonuçta, sadece okul dışındayım ve bu sektörde nispeten deneyimsizim. Her durumda, dürüst bir şekilde iş akışının kalitesini ve güvenilirliğini sağlamak istediğine inanıyorum.
Bay Jefferson,

3
@ Tom: Şu an söyleyebilirim ki, çalışmasının kalitesi hakkında ne düşündüğünüze bakılmaksızın, kaynak kontrolünü doğru şekilde kullanmayı bilmiyorsa, yetenekli bir geliştirici değildir. Başka bir seçenek yok, belki bodrum katında yalnız çalışıyordu. Tek geliştirici olduğum kendi projelerimde bile, kaynak kontrolünü sonuna kadar kullanıyorum.
Ürdün

5
@SnOrfus: IDE'siz çok mutlu çalışabilirim. Sürüm kontrolü olmadan çalışmam. Takım kullanmıyorsa, kendi başıma koşacağım.
kevin cline

12

Joe'nun doğru mu yanlış mı olduğu sorusunu bir kenara bırakmak (bu arada o yanlıştır), Git veya Mercurial gibi dağıtılmış bir sürüm kontrol sistemi kullanıyorsanız, bir uzlaşmaya varılabileceğimi düşünüyorum .

Bu şekilde, kendiniz ve diğer geliştirici, kaynak deposundaki değişikliklerinizi erken ve sık olarak taahhüt ederek yerel deponuz üzerinde çalışacak, ancak değişikliklerinizi "üretime hazır" olarak test edilinceye ve onaylanana kadar "üretim" deposuna itmeyecektir. Haftalar boyunca üzerinde çalıştığınız her şeyin tam bir geçmişine sahip olacaksınız ve Joe, yalnızca üretime hazır olarak kutsanmış olan değişikliklerin tarihçesi olan bozulmamış bir depoya sahip olacaktı.


1
Bunu düşündüm ve biraz araştırma yaptım (ve iyi şeyler duydum), ancak benim tereddütüm, VisualSVN Sunucusu'nu satın almış ve kurmuş olduğumuz ve hiçbirimiz Git veya Mercurial ile hiçbir deneyime sahip olmadığımız gerçeğine dayanıyor. . Herkesi daha fazla yazılım satın almaya ve / veya mevcut bir yatırımı atmaya ihtiyaç duyduğumuza ikna etmeye çalışırsam daha da zorlu bir savaş olacak. Ama iyi nokta.
Bay Jefferson,

3
@ Tom: Arka ucunda Subversion olması gerekiyorsa, üretimi hazır olmayan şeyler için Git'in veya Mercurial's Subversion birlikte çalışabilirlik katmanını kullanabilir ve hazır olduğunda işi subversiyona itebilirsiniz.
Ken Bloom,

2
@ Tom Hamming: Neredeyse bir yıl önce SVN'den GIT'ye geçiyorum. Bazı ilk küfürlerden sonra, onu sevmeye başladım (Cygwin'in altında Linux kadar iyi çalışmasa da). Bunun için hiç para harcamadım, komut satırından ve içerdiği iki ücretsiz araçtan oldukça memnunum. IDE'ye (eclipse) entegre etmek için bile çalışmıyorum. YMMV, ama senin yerinde olsaydım, özel git repo'umu ve git svnetkileşim için kullanırdım. Hiçbir şey satın almanıza gerek yok ve kimseyi ikna etmeniz gerekmez; Bilmeleri bile gerekmez.
maaartinus

1
@ Tom Hamming: Bireysel geliştirici olarak git push, değişikliklerinizi düzenli olarak başka bir makinede (yedek olarak) yapmayı seçebilirsiniz . "Ana" depo olmak zorunda değildir.
Greg Hewgill,

1
@ Tom Hamming: Bir SVN sunucusu satın alıp kurduğunuz için SVN ile bağlantı kurmak gerçekten batık bir yanlışlıktır. Git ve Mercurial hem ücretsizdir, hem de VisualSVN'in maliyeti zaten ödenmiştir, bu nedenle seçeneklerinizi her birinin aynı (sıfır) başlangıç ​​kurulum maliyetine sahip olduğunu görün.
Cercerilla

7

Bu listelediğiniz nedenlerden dolayı hiçbir anlam ifade etmiyor. Sürüm kontrolünü kullanmanın yararları olmadan sürüm kontrolünü kullanmak gibidir.


5

Joe'nun kaynak kontrol sistemlerinin kaynak kod üretim bültenlerinin yedeklerini yüceltmediğini anlamadığına inanıyorum, ancak programcıların gelecekteki benliğiniz ve meslektaşlarınız için daha küçük kod ilerleme ve olgunlaşma aşamaları üzerine sözler vererek yardımcı olacak bir araç olduğunu düşünüyorum. Belki de Joe, diğer insanların kodları olan takımlarda çalışmaya alışkın değildir.

Hiç "bu kod satırı neden eklendi" olarak değerlendirildi? Bunu tanıtan taahhüdü bulun ve yorumlarını görün. Sadece üretime girerken taahhüt ederseniz, yorumlar sizin için yararlı olacak kadar spesifik olmayacaktır.

Ayrıca SVN'den daha güçlü bir araç kullanmanızı öneririm. Joel Spoelsky'nin http://hginit.com/ adresindeki imkanlarla ilgili iyi bir giriş görebilirsiniz .

Mercurial kullanıyor ve bugünlerde birkaç rakip var. Git çok güçlü olarak kabul edilir ve https://github.com/ bazı çok, çok kullanışlı araçlara sahiptir ve ücretsiz başlangıç ​​hesapları sunar, böylece gerçek anlamda deneyebilirsiniz.


3

Joe SVN'yi bilmek gibi görünmüyor, Şubeler, Etiketler ve Bagaj hakkında bilgi edinmeye çalışın ... Etiketler Joe'nun istediği ile tutarlıdır. SVN en iyi uygulamaları hakkında bazı okumalar zarar vermez


2

Hiçbir zaman SVN'yi kullanmadıysanız, bunun için ne gibi prosedürler olacağını bilmiyorum. ClearCase'i kullanıyoruz ve buradaki uygulama her geliştiricinin kendi geliştirme dalına, ardından test etmeye hazır olduğumuzda birleştireceğimiz bir entegrasyon dalına ve entegre ve test edilmiş kod için bir veya daha fazla yayın dalına sahip olmaları içindir. .


SVN de bunu yapabilir.
Phil Lello

2

Joe bir bilgisayar korsanı, geliştirici değil. Çok iyi bir bilgisayar korsanı gibi ses çıkarıyor ancak revizyon kontrolünün nasıl kullanılacağı konusunda yanılıyor. Peki bu konuda ne yapmalı?

Bana göre, kuruluşunuzun SVN'de bir yatırımı var ve Joe'yu sorgulamak ve SVN sunucusundaki dolarlı yatırımı geçersiz kılmak için kariyerinizi kısıtlamak kariyeriniz olurdu. Bir GIT deposu kurun ve istediğiniz şekilde çalışmak için git svn arabirimini kullanın (Bu, tümüyle ücretsiz bir yazılımdır ve kurulum için bir günden bir saat sürecektir). İş akışınızı Joe ile sosyalleştirin - "kirlenmemiş SVN repo" inanç sistemini koruyabilir ve köşedeki pahalı beyaz fil (ve ego) üzerindeki güvenilirliğini koruyabilir.

Kısa sürede Joe'nun nasıl çalıştığına bakıp aynı şeyi yapmaya başlamasını bekliyorum. Bir veya iki yıl içinde SVN sunucusu Git deposu olacak.


svn sunucusundaki dolar yatırımı git repo sunucusundaki dolar yatırımından
öteye gidemez

2

Joe'yu yukarıdaki tartışmalarla ikna etmeye çalışabilirsin. Bu başarılı olmazsa, SVN'yi kendi geliştirme çalışmanız için yerel olarak kullanın ve bir süre Joe tarafından alınacağını umut edin. Onları argümanlarla ikna edemiyorsanız, ikna ettiğiniz şeyi yapın ve işe yaradığını gösterin. Dağıtılmış yaklaşımın türü ama mevcut takımla.


2

Burada, Carson63000 @ echo'ya gidiyorum ve bu tutumu daha önce gördüğümü söyleyeceğim ve bunun büyük ölçüde VCS'nin korkunç dallanma / birleşme yeteneklerinden kaynaklanması. Testleri derleyen ve geçen bir dalın olması, her sürüm için etiketlerle harika bir yaklaşımdır, ancak başka bir kodun taahhüt edilmediği noktaya gelmemelidir. Genel olarak DVCS ve özellikle git, dallanmayı kolay ve yaygın bir işlem haline getirir ve bu iş akışında zorlukların çoğunu azaltır.


1

Sürüm kontrol sistemlerinin etiketleri desteklemesinin nedeni, sertifikalı kodu etiketleyebilmeniz ve hala günlük işlerinizin yapılmasını sağlayabilmenizdir. Ne zaman üretim kalite koduna sahipseniz, bir etiketi rendeleyin ve bitirdiniz. Müşterinin sahip olduğu şeyi almak için 'zaman' daki kesin noktayı biliyorsunuz. Ayrıca kodunuzun farklı sürümlerini her zaman kontrol edebilir ve karşılaştırabilirsiniz. Bu şekilde, her ikisini de kaynak kontrol veri tabanındakilerden memnun olabilirsiniz. Aynı projede çalışan, 100 geliştiricisi olan çalıştığım firma için çalışıyor. Deffinately senin için de işe yarar.


0

Sadece üretime teslimat için hazır olan sürüm kontrol sistemlerinde saklamak oldukça yaygındır. Disk depolama alanının megabayt başına yüzlerce dolara mal olduğu ve her şeyi saklamak çok pahalı olduğundan, on yıllardır tarihsel olarak böyle yapılıyordu.

Artık bir şeyi yapmanın en iyi yolu olarak düşünülmüyor, ancak insanların neden hala yaptığını tam olarak anlayabiliyorum, çünkü birçok eski sürüm kontrol sistemi hala başka bir şey yapmayı imkansız olmasa bile ve ne yaptığınızla ilgili bilgileri elinizde tutmayı zorlaştıran güçlükle kullanıyor. Her sürüm (ya da daha doğrusu, geri dönmeniz gerekiyorsa, her dosyadaki etiketleri kontrol etmeden herhangi bir sürümün ne olduğunu bilmenin bir yolu yoktur. Eskiden geri dönmenin tek yolunun bulunduğu birden fazla havuz görmüştüm. bülteninin depodan kaynak kodunu ve bu sürümün ikili kodlarını içeren bir zip dosyası alması gerekiyordu).


İlginçtir ki ikili dosyalar dahil edilmiştir. Elimizdeki ayrı bir tartışma, derlenmiş ikililerin kaynak kontrolüne dahil edilip edilmeyeceğidir. Hayır diyorum, çünkü burası boşa harcıyor ve kasanızı sadece derleyerek kirletebileceğiniz anlamına geliyor. Derlenmiş dosyalar neden tarihsel olarak dahil edildi?
Bay Jefferson,

İkili dosyalar dahil edildi, çünkü bir sürümün kaynaklarını güvenilir bir şekilde kurtarmak mümkün değildi. Böylece ikili dosyalar yerine bir sunucuyu eski bir sürüme geri yüklemek için gerekli olmaları durumunda saklandı ... Yıllar önce verilen kötü kararlara dayanarak uzlaşma.
jwenting
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.