Subversion'da, uygulamamın yeni bir ana sürümünü nasıl ayarlamalıyım?


10

Ticari uygulamamın yeni bir sürümünde (sürüm 4) çalışmaya başlamak üzereyim. Subversion kullanıyorum.

Deneyimlerinize, hatalarınıza ve başarılarınıza dayanarak, Subversion'da yeni sürümü kurmamı nasıl önerirsiniz?

İşte bazı bilgiler: Sürüm 4 yayınlandıktan sonra bir süre için sürüm 3'teki kritik güncellemeleri yayınlamaya devam etmek istiyorum. Ancak, yeni özelliklerin tüm gelişimi yalnızca sürüm 4'te olacaktır.

Alakalı olması durumunda: Bu üründe yalnız bir geliştiriciyim ve durum böyle olmaya devam edecek gibi görünüyor.

EDIT: SVN'nin etiketlerinin ve dallarının farkındayım. Sanırım ihtiyacım olan şey benim durumumda etiketleri ve dalları kullanmak için en uygun stratejidir.

Yanıtlar:


8

Yapmak istediğiniz şey Şubeler yaratmak . Kaynak ağacınızda bir dal gibi göründüğü gibi, genellikle serbest bıraktığınızda kaynağınızın bir kopyasıdır . Kritik güncellemeler için bu şubeyi taahhüt eder ve güncellemeyi bu şubeden yaparsınız .

Şu anda taahhüt trunkettiğiniz şey, orada sürüm 4'ü kodlarsınız. Sürüm 3'te büyük değişiklikler varsa ve sürüm 4'te olmasını istiyorsanız , değişiklikleri gövdeye getirmek için daldan (v3) gövdeye (v4) birleştirme yaparsınız .

Ayrıca , dallara benzeyen ancak tek bir sürüme, genellikle bir sürümün (veya ilkinin) son revizyonuna bağlantı veren etiketlere de bakabilirsiniz .


Önceki sürümün bir dalını oluştururken, oluşturduğunuz her güncelleme / sürüm için bir etiket de oluşturabilirsiniz. Bu şekilde taahhüt ettiğiniz bir şubeniz olur ve daha önce yaptığınız herhangi bir sürümü oluşturmak için etiketleri kullanabilirsiniz.
Geerten

Svn'deki IIRC etiketleri mutlaka tek sürümlere bağlanmaz, aslında int
jk

Aslında, dallar ve etiketler uygulamada aynıdır, aslında kodun kopyalarıdır. Sadece konvansiyonda farklılık gösterirler, etiketlerin belirli bir revizyona işaret etmesi amaçlanırken, dalın alternatif bir geliştirme yolu olması gerekiyordu.
Karthik T

3

Değişir.

Sürüm 4'ü bagajda tutabilir ve V4'te geliştirmeye devam edebilirsiniz. Sürüm 3, gerektiğinde güncelleyeceğiniz bir şube olacaktır. Bu yaklaşımın yararı, V3'te de V4'teki kritik bir sorunun bulunması durumunda, şubelerdeki dosya (lar) üzerinde basit bir birleştirme yapabilirsiniz.

Diğer seçenek V4 için tamamen yeni bir havuz oluşturmak ve oluşturmaktır. Bu size yeni bir başlangıç ​​sağlayacaktır. Dezavantajı, değişiklik geçmişinin sıfırlanması ve Subversion ile dosyaları birleştiremeyeceksiniz. Değişiklikleri birleştirmek için Beyond Compare gibi bir program kullanmanız gerekir.

Şahsen ben ilk yaklaşıma bağlı kalacağım. Bir V3 dalı oluşturun ve bu daldaki kodu ve güncellemeleri koruyun. Yeni V4 kodu bagajda geliştirilebilir.


2

Bu durum için mükemmel bir rehber buldum :

If you want to be able to both develop a newer version (in trunk) and 
fix bugs on an older version, what you want is a branch for the older 
version. You can fix your bug in the older version's branch, then 
make a new tag of that. 
Example: 
/repo/ 
        project/ 
                trunk/ 
                branches/   
                tags/ 
You've developed your software in trunk and are now ready to call it 
version 1.0. You make a branch and a tag: 
svn cp $REPO/project/trunk $REPO/project/branches/1.x 
svn cp $REPO/project/branches/1.x $REPO/project/tags/1.0 
/repo/ 
        project/ 
                trunk/ 
                branches/ 
                        1.x/    
                tags/ 
                        1.0/ 
Now you continue to develop in trunk, adding new features, and this 
will eventually become version 2.0. But while you're doing this, you 
find a bug in 1.0 and need to fix it quick. So you check out branches/ 
1.x, make the change, test it, and commit it. Then you tag that as 1.1: 
svn cp $REPO/project/branches/1.x $REPO/project/tags/1.1 
/repo/ 
        project/ 
                trunk/ 
                branches/ 
                        1.x/    
                tags/ 
                        1.0/ 
                        1.1/ 
If the bug also exists in trunk, then you need to port your bugfix to 
trunk. "svn merge" can help you there. 
cd trunk-wc 
svn merge -c$R $REPO/project/branches/1.x . 
where $R is the revision in which you fixed the bug on the 1.x 
branch. Now you test the fix in trunk and then commit it. Now the bug 
is fixed in trunk too. 

0

Sorduğunuz şey, kullanmak için şube (ve birleştirme) stratejisidir. Bu yüzden karthik t yazısını alın ve bunu bir tarif olarak alın.

Arka plan için aşağıdaki kaynakları okuyun:

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.