2010-04-21 28 views
9

php web uygulamalarımızdan birinin dağıtımını düzene sokmanın bir yolunu arıyorum (eğer bunun üzerinde çalışırsa diğer uygulamalara dağıtacağım).Mercurial otomatik dağıtım

Şu görünüşün görünüşünü çok beğendim: http://www.springloops.com/, ancak SVN ve biz merkür kullanıyoruz.

Maalesef şu anki sunucumuza herhangi bir kabuk erişimimiz yok, bu nedenle, herhangi bir fikri olan varsa, ftp üzerinden çalışan bir şey en iyisi olur mu?

cevap

9

Bir kancadan mercurial'ın hg archive komutunu kullanmak istersiniz. Gösterdiğiniz revizyonun bir görüntüsünü alır (etiket, vb.) Ve daha sonra dışa aktarır. senin "Üretim" deponun hgrc olarak

böyle bir şey olabilir:

[hooks] 
changegroup = ./doDeploy.sh 

ve sonra ./doDeploy.sh içinde olurdu:

hg archive -r tip /tmp/deployme 
ftp /tmp/deployme ftp://remoteserver 

Sen çevresindeki tüm çalışmak zorunda bitireceğiz dosya izinleri gibi küçük hatalar, repodan silinmiş olan ancak sunucuda hala var olan dosyalar vb. fakat genel olarak bir sürüm yöneticisi tarafından otomatik olarak yüklenen değişikliklere sahip olan bir sistem için iyi bir çerçeve sağlar. gibi canlı sisteme napshot.

+0

Bir windows sisteminde varsayarsak, bunun yerine bat dosyası olur mu? – richzilla

+0

Bu kesinlikle mümkündür ya da python'da işlenmesini yapabilirsiniz. Detaylar için ücretsiz mercurial kitabın 10. bölümüne bakınız. –

+0

arşivi, tüm depoyu dışa aktardığı için, IMHO'nun sürekli dağıtım için en iyi yol değildir (aktarım boyutu) –

2

Bu benim 5 kuruşum: Yanıtın ftp kısmı yalnızca alt dizinleri olmayan projeler için çalışıyor (FTP onları desteklemiyor) Burada gerçekten senkronize olmak istiyorsanız sh komut dosyası (LFTP kullanır, -e seçeneği) lokal olarak artık mevcut uzaktan dosyaları siler:

#!/bin/sh 
rm -rf /home/user/tmp/deploy/* 
hg archive -r tip /home/user/tmp/deploy/ 
lftp -u username,password your.ftpsite.com << END_SCRIPT 
set ftp:ssl-allow no 
cd httpdocs/yoursite/ 
mirror -R -e --only-newer --log=/home/user/lftp.log /home/user/tmp/deploy . 
END_SCRIPT 
echo "#--- $(date)" >> /home/user/lftp.log 
exit 0