Sürüm kontrolünü nasıl yaptığımızla ilgili bir sorun mu var?


53

İş analisti olarak bir programcı ekibi ile çalışıyorum. Ürünümüzün 2.0 sürümünü henüz piyasaya sürdük ve 3 ay içinde piyasaya sürülecek bir sonraki sürüm üzerinde çalışıyoruz (dahili bir yazılım ürünüdür). Maalesef, sürüm 2.0'ın düzeltmeleri gereken bazı sorunlar var ve bu düzeltmeleri birkaç hafta içinde dağıtacağız. Sorun şu ki, üzerinde çalışılmakta olan ve 3 ay daha serbest bırakılmayacak değişiklikleri değiştirmek istemiyoruz.

Programcılar bunu yönetmenin yolunun yalnızca kusur kodlarının kontrol edileceği ve yeni geliştirmelerin kodlarının tamamlanana kadar geliştiricinin yerel makinelerinde tutulacağına karar verdi. Test etmek için makinelerinde yerel yapımlar elde etmek zorunda kalacağım çünkü kodu kontrol ederse ve hataları düzeltmek için başka bir yamayı zorlamak zorunda kalırsak, bu geliştirmeleri henüz eklemek istemiyoruz. Aynı zamanda, aynı kod dosyasının hem hata düzeltmelerini hem de geliştirmeleri içerdiği bir sorun var, bu nedenle kod dosyasını yerel olarak kopyalamak, sonra bir hatayı düzeltmek için bir değişiklik yapmak ve bunu kontrol etmek için bir değişiklik yapıp ardından donanım geliştirme çalışmalarına devam etmek zorunda kalıyorlar. yaptıkları yerel kopya.

Çok sarsılmış görünüyor - bu tür bir senaryoyu ele almanın daha iyi bir yolu var mı? Team Foundation Server ve Visual Studio 2010 kullanıyoruz.


113
Programcılarını kov.
Bernard

11
Her birine bir dal ver. Günlük check-in'leri uygula.

16
@Ryan Sahip olabilecekleri tek makul mazeret, bu SourceSafe gibi eski bir şey için eski bir proje olsaydı olurdu. Bununla birlikte, Team Foundation Server 2010, birden fazla şubeyi yönetme ve bu şubelerin birleştirmelerini ana alanda gerçekleştirme konusunda hiçbir sıkıntısı olmayan gerçekten iyi bir kaynak kontrol çözümüdür. Bunu bilmiyorlarsa o zaman müstehcen beceriksizler ve kovulmaları gerekiyor. Bununla birlikte daha büyük olasılıkla, dalları rahatsız etmekten ve birleşmekten rahatsızlık hissetmek için gerçekten tembel veya kayıtsız olmalarıdır, böylece sizi bir çizgide beslerler.
maple_shaft

10
@Jan_V SourceSafe'de hiçbir şey kolay değildir.
maple_shaft

30
TFS'ye aşina değilim, ancak bu soru Mercurial veya GiT reklamı gibi görünüyor.
Jim In Texas,

Yanıtlar:


77

V2.0'da kullandığımız, yayınlandığında bir "sabit durum şube" (Performansı TFS kullandık) olarak adlandırdık. Bu dalda v2 için herhangi bir düzeltme yapılmış ve daha sonra v3 özellikleri üzerinde çalışılırken v3 geliştirme dalına geri gönderilecektir, yani v2'deki bir kusur v3'te de bir kusur ile sonuçlanacaktır.

Değişikliklerin geliştiricinin makinelerinde uzun süre kalması büyük olasılıkla entegrasyon kabusu ile sonuçlanacaktır.


6
MS'in tam olarak bu konuda bir makalesi var (çok daha ayrıntılı olan şeyleri kapsar): vsarbranchingguide.codeplex.com/releases/view/38849
Richard

2
Ve yine de v2.0 build datetime değerini temel alarak TFS'de bir sürüm dalı oluşturabilirler.
DaveE

2
. Bunu çok etrafında bu blog yazısı ilettik, bunu çok iyi yazılmış düşünüyorum (hala alakalı Git ilgilidir, ama) nvie.com/posts/a-successful-git-branching-model
BZink

50

Genelde 'dallanma' etiketi ile kapsanan , her biri kendi yararları ve dezavantajları olan bu tür sorunlarla başa çıkmanın birçok yolu vardır .

Fakat geliştiricileriniz tarafından seçilen yaklaşım ... gee yanlış yazmamamı sağlamak için sözlü olarak alıntı yapacağım ...

kodu ... tamamlanana kadar geliştiricinin yerel makinelerinde tutulacak ...

... yukarıdaki gibi, muhtemelen tamamen yanlış olan tek kişi budur!

Suçluyu sınırlandırmamı sağlayan şey, TFS için, mükemmel, anlaşılması kolay, Microsoft Team Foundation Sunucu Branş Rehberliği - her tür farklı proje için özenle hazırlanmış ve açıklanmış dallanma stratejileri önerileri içeren büyük ve ayrıntılı bir belge ( HTML sürümü). burada ).


6
Ciddi olarak, programcıların Team Foundation Server Branching Guidance'ı okuması ve okuması ve bunu anlayana kadar başka bir kod satırı yazmaması, bunu anlayan ve 3.0 dev ve 2.0 hata düzeltmeleri için ayrı dallar oluşturması gerekir.
Carson63000

@ Carson63000, TFS üyesi olmayan çocuklar için bile (benim gibi) okumaya değer olduğunu kabul ediyor. Microsoft adamlarının projeleri nasıl sınıflandırdıklarını ve özellikle de uygun dallanma stratejisi seçerken göz önünde bulundurulacak faktörleri nasıl ortaya koydukları, agnostiktir ve düşünce için oldukça iyi yemekler yapar.
gnat

40
  1. Geliştirici sürümünüzün nasıl kullanılacağına dair temel bir yanlış anlama var.
  2. “Doğru” versiyon kontrol yazılımı hakkında bir tartışma yapmayın. Sorun bu değil.
  3. Her kod ayarlaması sorunu düzeltmeyi zorlaştırıyor.
  4. Siz doğru olanı yapmaya karar verdiğiniz zaman, bazı şeyleri düzeltirken kod değişikliklerine devam edemezsiniz. Tüm gelişmeleri durdurmalı ve kodu sürüm kontrolüne almalısınız.
  5. Dev , en azından oturup konuşabilecek kadar acı çekiyor olmalı .
  6. Tüm sürüm kontrol yazılımı temel kavramları destekler:
    • ALL kodu sürüm kontrol havuzuna gider.
    • Tüm kod dosyalarının sürüm numaraları vardır. Bu numaralar kod tekrar kontrol edildiğinde otomatik olarak artar.
    • Bir TAG (ve a) belirli bir sürümünün tüm kod dosyalarını işaretler. Böylece, örneğin yazılımın sürüm 1 sürümünü TAG yapabiliriz.
    • bir ŞUBE ana bagajdan bir "dönüş" tir .
      • Bir dalda yapılan tüm değişiklikler, gövdeyi etkilemez.
      • İsteğe bağlı olarak, şube değişikliklerini bir noktada ana ana hatta yeniden birleştirebilirsiniz .
      • Böylece “iyi şeyleri” karıştırmaktan korkmadan deney yapabiliriz.
  7. Sizin dediğim gibi sürüm kontrolünü "inanç atışı" olarak almalısınız. Temel kurallara uymanın işleri yoluna sokacağına GÜVEN. Deneyimsizlik aksi halde düşünmemizi sağlar, güven bana.
  8. İşte iyi bir eğitim. Bir sürü başka kaynak taramanız gerekmeyecek kadar genel ve eksiksiz

Düzenle

  • Çalışma bilgisayarınızda sürüm kontrolü yapın.
    • Bunu şu anda yapabilirsiniz w / out takım koordinasyonu
    • Ekip sürüm kontrolü ile bile, bunu şiddetle tavsiye ederim
    • Ekibiniz Git veya Mercurial kullanıyorsa, bağımsız bir yerel depo kullanıyorsunuzdur. Dağıtılmış sürüm kontrolü bu şekilde çalışır.
    • Ekibinizden farklı VC yazılımı kullanabilirsiniz. Ekibimiz Subversion kullanıyor, yerel olarak Mercurial'ı kullanıyorum. VC yazılımı meta dosyaları (".svn", ".mg", gizli klasörler) çakışmaz.

Fiili bir ekip deposu olarak hareket etmiyorsunuz. Kendi çalışmanızı yönetmek, çabaları yeniden düzenlemek vb. İçin ve takım olarak kendinizi CYAing yapmak FUBAR'ın temelini oluşturmaya devam ediyor.

düzenlemeyi bitir


3
Nitpick: "Tüm kod dosyalarının sürüm numaraları vardır. Bu sayılar otomatik olarak artar" Bazı VCS'lerde (örn. Subversion, Git) dosya başına repo başına sürüm kimlikleri vardır ve sürüm kimlikleri mutlaka sayısal değildir (Git). Tabii ki temel nokta hala duruyor.
sleske

"dosya başına / repo başına (sitory)" sürümleri. Evet. Bu, VC yazılımının temel bir farklılaşmasıdır. Her iki türü de kullandım - "ülke ve batı" (bu referansı bilenlere + 1). "Repo" modelini daha çok seviyorum.
radarbob

13

Tanımladığınız şey sürüm kontrolünü kullanmanın korkunç bir yoludur. Sürüm 2.0 için yapılmış bir dal veya bir etiket veya bazı tanımlayıcılar olmalıdır. Bu şekilde, bu sürümde yapılacak değişiklikler içerilebilir ve daha fazla gelişme gerçekleşmeye devam edebilir.

Bu makale size bazı fikirler verebilir. gitAkılda yazılmıştır , ancak onunla da çalışamamaları için hiçbir sebep yoktur mercurial. Bunların ikisini de kullanmadığınızı fark ediyorum, ama bu aynı zamanda düzeltmeyi düşünmeniz gereken bir problem.


9
TFS kullanmanın nesi yanlış?
Bernard,

2
Neyi başarmaya çalıştığınıza bağlı. Artıları ve eksileri SO üzerinde ortak bir konudur. Bu iyi bir başlangıç ​​noktasıdır. stackoverflow.com/questions/4415127/…
jdl

4
Dağıtılmış sürüm kontrol sistemleri her zaman mantıklı gelmez.
maple_shaft

3
-1: Her zamanki iddiaların iddialarına rağmen, dağıtılmış revizyon kontrolü her sorunun cevabı değildir ve bunu çözmez.
mattnz

3
@Ant: Belki de haklısınız, ancak asıl soru bağlamında, TFS'nin kaynak kontrolü için kullanılıp kullanılmadığı önemli değil. TFS, dallanmayı desteklediği sürece, OP'nin geliştirme ekibi tarafından kullanılmalıdır.
Bernard

7

Hızlı Yanıt: Gelişme takımı olmalı ayrı Üretim dalı ayrı dağıtılan kod tabanı V2.0 tutmaya Ana gövde.

Tüm hata düzeltmelerinin önce o dalda yapılması ve daha sonra kodu senkronize etmek için sınanıp diğer dallara dağıtması gerekir .

Projenizde Prod, Staging, QA ve Dev (bazen UAT) for health developmentgibi ortamlar da bulunmalıdır . Bu ortamlar Üretim sürümüne geçmeden önce kurulmalıdır .

Sonuç olarak, hatalara ve değişikliklere hazır olmak, yayınlanmış bir uygulamayı desteklemenin yoludur.

TFS'nin sürüm kontrolü olarak belirtildiği gibi, sağlık geliştirme ortamlarını belirlemek için yardımcı olacak makale listesi de derledim:


4

Hayır, çünkü bir VCS kullanırken sürüm kontrolü yapmıyorsunuzdur.

Sürüm kontrolü için temel kavram zaman içindeki farkı izlemektir, bazı farkları kaydetmekte PLANLAMA yapıyorsunuz, ancak şu anda değişikliklerin çoğu kaydedilmiyor.

Diğerlerinin dediği gibi, dalları kullanmanız gerekir. Bu kurulumu yaptıktan sonra, tüm işlevsel değişiklikleri kontrol etmelisiniz (ör. Her tuş vuruşunu değil, ancak bir hatayı düzelttiğinizde, bir özellik eklediğinizde, bir özelliği silmeniz veya başka şekilde bir şekilde bir değişiklik yapıp çalışması için).


0

Ben bir geliştiriciyim ve mevcut sürüm düzeltmeleri için farklı dal kodu ve db ile geliştirmeler için ve daha sonraki ardışık sürüm için farklı bir kod veriliyor.

Düzeltmelerimiz bittikten sonra üretimle birleştirilir ve dağıtılırsa, geliştirmelere tekrar geri dönecek yeni bir taze dal alırız.

Dahası, şu anki sürümüm için 10 düzeltmem varsa gibi bir uygulamayı takip ediyoruz.

Olarak yazarım

//Start Iteration 2, Fix No-1, Branch No-"ABC"
code where I have done changes or fixes or added new code lines
//End Iteration 2, Fix No-1, Branch No-"ABC"

Benzer şekilde diğer düzeltmeler için de sadece bunu değiştirdiğim veya sabitlediğim her satır için yapıyorum. Ve sadece karşılaştır ve taahhüt et. Benzer şekilde aynı dalda paralel yapıyorlarsa kullanabilirler

//Start Enhancement -1, Branch No-"ABC" 
code where I have done changes of fixes or added new code lines
//End Enhancement -1, Branch No-"ABC" 

Ctrl+Shift+F//Start Iteration 2, Fix No-1, Branch No-"ABC" tüm çözümde arama yapmak için komut ve tür , kesin konumlar, kodun değiştiği dosyalar ve sadece o kısmı işlemek için kullanılabilecek yeni kodlar bulmak için çok yardımcı olur.

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.