Sürüm numaraları ile SVN dağıtım için herhangi bir öneriler, automagicallylar benim koduna yazılır?

8 Cevap php

Ben SVN ile rahat ele verdik ve şimdi daha kolay evreleme veya canlı sunuculara benim kod dağıtmak için bir yol gerekir. Ben de test yardımcı olmak için bu sitenin altbilgi bilgi inşa koymak için bazı yöntem istiyorum. Site PHP / MySQL.

8 Cevap

İlk revizyon bilgi sahibi olmak isteyen bir dosya için anahtar kelime ikame etkinleştirin:

svn propset svn:keywords "Rev" file.txt

Eğer Revizyon bilgi saklanan istediğiniz dosyaya ekleyin:

$Rev$

Ek okuma: http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html

Özellikleri yöntemleri size sadece (a la yığın taşması altbilgi) size özelliğine sahip dosyanın son revizyon numarasını değil, tüm depo başkanı revizyon verecektir. Bunu isteyen varsa, svnversion kullanmanız gerekir.

Geçenlerde bir proje üzerinde Capistrano kullanmaya başladım ve o muhteşem ve çok esnek ve güçlü. Ben oldukça uzak normal kullanım sapma sona erdi, ama bir daha kolay dağıtım "tık" yapar.

Bir projelerde sürüm numarasını güncellemek istiyorsanız AssemblyInfo.cs bu yazıda ilginizi çekebilir:

CodeProject: Use Subversion Revision numbers in your Visual Studio Projects

SVN Anahtar etkinleştirmek, o zaman proje Subversion kontrol her zaman bazı "anahtar kelimeler" için dosyaları tarar ve bazı bilgiler ile anahtar kelimeleri değiştirir.

Örneğin, benim kaynak dosyalarının üstünde bir başlık yaratacak aşağıdaki anahtar kelimeleri içerir:

'$Author:$
'$Id:$
'$Rev:$

Subversion içine bu dosyayı iade ettiğinizde bu anahtar kelimeler aşağıdaki ile değiştirilir:

'$Author: paulbetteridge $
'$Id: myfile.vb 145 2008-07-16 15:24:29Z paulbetteridge $
'$Rev: 145 $

Bir gerektiği gibi bazda svn güncelleme için bir script.

SVN anahtar kelime destekler. Eğer anahtar kelimeleri özelliği genişletmek istediğiniz anahtar kelimeleri ekleyebilir ve SVN sonra genişleyecektir. $ Id $ veya $ Rev $, ya da SVN kitapta anlatılan anahtar kelimeleri görmek.

Ben iter için Capistrano kullanarak bir hayranı değilim. here bakın.

Sen altbilgi içine revizyon numarasını almak için SVN $Rev$ property kullanabilirsiniz.

Bu yönetmek için gerçekten basit bir yolu aşağıdaki şekilde kurulum app için:

Sadece dağıtım bagajındaki (sizin / www köküne svn co projesi) bir çalışma kopyasını app ve bir ssh konsol üzerinden bir svn up çalışması (ssh user@host.com svn up /path/to/project ) güncellemeniz gerektiğinde. Ayrıca uygun ödeme mekanizmaları ile geri alma yapabilirsiniz. Bu önemlidir: if you do this, add RewriteRules (or equivalent) to your .htaccess (or equivalent) to disallow access to .svn directories. Eğer yukarıdaki yapamıyorsan, [(5)] yerine ssh'dan bir svn export çalıştırın (bu yüzden bir 'çalışma kopyası' olmayacak), ancak bu doğal bir {yaparak daha yavaş olacaktır }.

Ayrıca, aynı temel kavram ama güncelleme ayrı bir klasörde her ödeme depolamak ve / www için "son" sembolik bağlantılarını tarafından ortasında yanlış giderse işlem yedekleme destekler .. Ruby on Capistranoda ile ne bakabilirsiniz dizin.

Eğer dağıtmadan önce kaynağını modifiye ettik gibi, ya da sizin projede bir dizinden kontrol eğer aynı proje içinde farklı bir dizin farklı bir revizyon numaraları olacak - anahtar kelimeler şeyler durumlarda bol başarısız olur. Kelimeleri yaptıklarını ne düşündüklerini yapmak emin olmak için dikkatlice dokümanlar kontrol edin.

Daha iyi bir yol derleme veya dağıtım anda teslim dizinleri hakkında bilgi üretmek için svnversion programı kullanmaktır. Svnversion dizinleri TÜM sürümü yanı sıra kaynak lokal olarak modifiye edilmiş olsun veya olmasın işaretleme hakkında bilgi gösterecektir.

Benim php projeler için geldim yöntemi, en iyi yöntem olmayabilir ama biraz zaman arama kesinlikle gibi görünüyor sonra, bir ödeme yapmak bir sürüm denetimi çalıştırın. Svn klasörleri silmek, ve hareket etmektir. İşte ben yazdım kabuk bir kısmıdır:

(Ilk olarak, komut çıkış sizin repo gerekir)

# get the svn revision number and create a RELEASE file
svnvers=`svnversion .`
echo "version: $svnvers"
echo "<release><development>0</development><revision>$svnvers</revision></release>" > RELEASE

# remove all .svn directories
find . -name .svn -exec rm -rf {} \;