2011-01-22 13 views
6

Mercurial'da çengel var olan bir kanca var, değişim grubu gibi, eylemlerin bir itme üzerinde gerçekleşmesine izin veriyor, ancak hangi şubelerden etkilendiğine bağlı olarak birden fazla eylem yapmamı (veya değiştirmem) Buradaki değişiklikler var mı? Örneğin, bir itme yapıldığında bir url'de bir dinleyiciye bildirimde bulunmam gerekir, ancak ideal olarak, hangi şubenin hepsini batırmadan etkileneceğine göre farklı URL'ler bildirir.Mercurial Changegroup kancası dallara bağlı olarak değişir

cevap

7

Şube özellikli kanca yok, ancak bu mantığı kancayla kendiniz yapabilirsiniz. senin hgrc Örneğin:

[hooks] 
changeset = actions-by-branch.sh 

ve sonra senin actions-by-branch.sh yapacağın: Ben bir changeset ziyade changegroup kanca kullanılan

#!/bin/bash 
BRANCH=$(hg log --template '{branch}' -r $HG_NODE) 
BRANCH=${BRANCH:-default} # set value to 'default' if it was empty 

if [ "$BRANCH" == "default" ] ; then 
    do something 
elif [ "$BRANCH" == "release" ] ; then 
    do something else 
else 
    do a different thing 
fi 

dikkat edin. Tek bir değişim grubu, mantığı karmaşıklaştıracak olan, çoklu dallarda değişikliklere sahip olabilir. Bu rotaya gitmeye karar verirseniz, $HG_NODE'dan, değişim grubundaki her bir değişiklik kümesinde harekete geçmek için tip'a dönmeniz gerekir.

+1

Sanırım $ {BRANCH: = varsayılan} '' BRANCH = $ {BRANCH: = default} 'olmalıdır. – palacsint

+0

Yazılı olarak çalışır. ... {: = Kelime parametresi} Atama Varsayılan Değerler parametre atanmamışsa ya da boşsa, kelimenin genişleme parametresi atanır PARAMETRE değeri daha sonra ikame edilir Konumsal parametreler ve özel bash adam sayfasından "$ başlayan parametreleri bu şekilde atanmayabilir. " Daha ayrıntılı bir atama ifadesini istediğimizde ':-' yerine ': =' kullanırdık. –

+1

Tamam, problemi çözdüm. Bash, "$ BRANCH" değerini bir komut olarak çalıştırmaya çalışır. Bu yüzden bir "mybranchname: komut bulunamadı" hata mesajım var. Bu nedenle, bu hatayı önlemek için ödeve veya bir bash no-op (': $ {BRANCH: = default}') kullanın. – palacsint