Gelişmiş yıkım teknikleri, ne eksik?


10

Yaklaşık 9 ay önce SVN kullanmaya başladım ve en azından söylemek bir oyun değiştirici oldu. Yine de biraz kayıp olduğumu hissediyorum. Uygulama geliştirmemi gerçekten hızlandırmak için kullanmam gereken daha çok şey var gibi hissediyorum.

Örneğin

Herhangi bir uçucu / büyük değişikliği bir tür 'alt depoya' falan karantinaya alabilmek istiyorum. Büyük değişikliklerin oldukça acil olan küçük hata düzeltmelerini engellediğini görüyorum. Eksik veya bozuk kodu zorlamadan basit bir güncellemeyi nasıl gönderebilirim?


3
Sen (siz kontrol svn sadece para cezası ile kullanabilirsiniz yerel şubeleri için hg kullanarak düşünebilirsiniz bu )
OneOfOne

Ha! Cıva eksik.
DexterW

3
"Gelişmiş Subversiyon" bir oksimoron gibi geliyor. Git veya Mercurial'ı yalnızca yerel olarak kullanıyorsanız.
Macneil

Yanıtlar:


7

Örneğinizi ele almak için bunu yapmak için üç olasılığınız vardır:

  1. Tek dosyaları işleyebilirsiniz. Havuz'a erişmek için bir IDE kullanırsanız, büyük olasılıkla taahhütte bulunmadan önce tek dosyaları seçmek veya seçimini kaldırmak için bir görünümü vardır. Komut satırında svn commit file1 path1/file2 path2, dosya1, yol1 / dosya2'yi ve yol2 altındaki her değişikliği taahhüt edersiniz .
  2. Farklı çalışma kopyaları oluşturabilirsiniz. Standart çalışma kopyanızdaki büyük özelliğiniz üzerinde çalışırsınız ve acil hata hakkında bilgi alırsınız. Deponuza farklı bir dizine göz atabilir ve bu ikinci çalışan kopyadaki hatayı düzeltebilirsiniz. Yalnızca hatanın oluştuğu bileşenle birlikte bir alt dizine de göz atabilirsiniz. Bugfix'ten sonra, büyük özellik üzerinde çalışmanıza gerek kalmadan ikinci çalışma kopyanızı taahhüt edebilirsiniz. EDIT: Bu şekilde Anna Lear'ın cevabında da açıklanıyor.
  3. Özelliğiniz üzerindeki çalışmalar için bir şube oluşturursunuz. Bunun için copy komutunu kullanırsınız. Eğer depo için standart-düzen kullanırsanız dalı oluşturmak için aşağıdaki gibi svn-kopyalamaya karşı komutunu kullanabilirsiniz (adları ile ProjectName ve alt dizinleri ile dizinleri, etiketler ve dalları, projeyi içeren gövde gövdede): svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X. Artık çalışma kopyanızı yeni bir konuma geçirebilirsiniz: svn switch svn switch svn://hostname/projectname/branches/branch-for-feature-X. Hata düzeltme moduna geçerseniz, gerçek değişikliklerinizi yaparsınız, çalışma kopyanızı tekrar gövdeye, hatayı düzeltin ve çalışmaya devam edin ve çalışma kopyasını tekrar özellik dalınıza geçirin. Özelliği geliştirmeye hazırsanız, gövdeye geri döndürebilirsiniz.

Açıklanan basit vaka için genellikle # 1 (en sık kullanıyorum), bazen # 2 kullanırsınız. Dallarla çalışmak (vaka # 3) daha karmaşıktır ( daha fazla bilgi edinin ), ancak daha fazla numaraya izin verir. Ancak bir alt pozisyon açıklamanızla eşleşen dallar.

Örneğinizin dışında fazla bir şey söyleyemem. Subversion hakkında birçok şey var, ama zaten ne kullandığınızı ve projeniz için neye ihtiyacınız olduğunu bilmiyorum. SVN hakkında daha fazla bilgi edinmek için SVN-Book harika bir kaynaktır: http://svnbook.red-bean.com/


3
1 numaralı yaklaşımla ilgili sorun, yeni özelliğinizin ve hata düzeltmenin her ikisinin de aynı dosyalarda değişiklikler içermeyeceğini önceden bilemeyeceğinizdir. Bu nedenle, # 2 (her özellik veya hata düzeltmesi için bireysel çalışma kopyası) veya # 3 (her özellik veya hata düzeltmesi için ayrı dal) önerilir. Şubeler, özellik veya hata düzeltmesi tamamlanmadan önce, gövdeden gelen kontrolleri etkilemeden bir dalda değişiklik yapabileceğiniz avantajına sahiptir (ayrı çalışma kopyalarıyla, tüm taahhütler gövdeyi etkiler).
Stephen C. Steel

7

Kodu sadece bir kopyasını alıp tüm değişikliklerinizi orada yapmak yerine farklı sanal alanlara kontrol edebilirsiniz.

Yani böyle bir şey yapan bir klasör yapınız olabilir:

D:\Dev\MajorFeature1
D:\Dev\Bug12345
D:\Dev\MajorFeature2

vb.

Bunların tümü SVN'nizdeki aynı konumdan kontrol edilebilir, örn http://mysvnrepo/trunk.

Bu şekilde, hata düzeltme sanal alanınızdan özellik geliştirme olanlarını etkilemeden iş yapabilirsiniz, ancak svn updatehata düzeltmesi için yapılan değişiklikleri almak için diğer sanal alanlardan çalıştırmanız gerekir .


4

Subversion Branşlarına hiç baktınız mı ?

Yaygın bir teknik, bagajınızı sabit tutmak ve gerektiğinde kritik düzeltmeler uygulamaktır. Daha sonra her yeni önemli iş parçası için bir şube oluşturursunuz . Bu proje üzerinde çalışan geliştiriciler şubeyi kontrol eder ve şubeyi taahhüt eder. Son entegrasyonunuzun bir parçası olarak şubeyi ana gövdeye birleştirmeye karar verene kadar Bagajı etkilemez.

Başka bir yaklaşım, gövde üzerinde sorun yaratan başka işlerin yapılmasını önlemek için belirli bir Sürüm için bir şubeye sahip olmaktır. 'Serbest Bırakma Şubesi'ni gerektiği gibi düzeltebilir ve ardından hazır olduğunda bu düzeltmeleri gövdeye geri katlayabilirsiniz.

Geliştiricilerinizin birden fazla çalışma kopyası teslim alınmış olabilir - gövde ve herhangi bir dal - veya gövde ile belirli bir dal arasında svn switchkomutla geçiş yapabilir.

(A) Bu, başkalarıyla işbirliğini yasakladığı ve (b) yanlışlıkla ana gövdede çalışmayan, ancak değişiklikleri işlemek için çok kolay olacağı için ayrı ayrı ödeme yaptığınız çok sayıda 'sandbox' çalışma kopyasına sahip olmanızı önermiyorum.


3

Çalışma kopyamın şu anki boyutu 10 GB, 50.000'den fazla dosya var. Farklı dallar için birkaç kopya alabilirim, ancak yeni kopyayı oluşturmak biraz zaman alıyor!

Acil bir hata geldiğinde, genellikle tüm değişiklikleri bir yamaya kaydederim, her şeyi geri alırım, böcek üzerinde çalışır ve taahhüt eder, sonra kaydettiğim yamayı uygularım ... Yeni çalışan bir kopya almaktan çok daha kolay ve hızlı. Bunu sık sık yapmam gerekirse, iki çalışma kopyam olurdu: biri uzun vadeli değişiklikler için, diğeri hata düzeltmeleri için.

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.