2012-01-12 26 views
12

Birleştirme sürücüsü oluşturuyorum. aşağıdaki gibi bir .gitattributes dosyası tanımlamış:Depoya git birleştirme sürücüsü ekleyin?

filename merge=mergeStrategy

şöyle ben $ PROJE/.git/config birleştirme sürücüsünü oluşturduk

: Bu yerel olarak çalışıyor

[merge "mergeStrategy"] 
    name = My merge strategy 
    driver = scripts/mergeScript.sh 

ama Bu birleştirme sürücüsünü git deposuna taşımak, böylece birleştirme stratejisinin herkes için geçerli olmasını ister.

Bunu (veya diğer yapılandırma seçenekleri) deponun kendisine ekleyebileceğim bir yol var mı?

cevap

9

Sadece (tabii .gitattributes dosyası ile birlikte) script/mergeScript ekleyip taahhüt (ve itme) olabilir çalışacak

sürece:

  • mergeScript arasında $PATH yılında nasılsa olduğunu kullanıcı birleştirme sürücüsünü yürütür.
  • mergeScript
  • mergeScriptchmod +x gerekirse (C ... için yürütülebilir bir Perl komut dosyasına bir bash kabuğundan) içeriğini değiştirmek sonra kolay gerçekleştirebilmeniz için, uzatma olmadan, çalıştırılabilir olduğunu. Yerel olarak sizin için durum oldu

    Ben '.' olduğunu şüpheli olarak

, (o açıklamada onları belirtildiği gibi, son iki puan için, MestreLion teşekkürler) sizin $PATH, ama herkes için bunu kabul edemezsiniz.

Ancak, yerel yapılandırma dosyası (.git/config)/itti olmayacak klonlanmış (Alexandr Priymak olarak yorumunda dışarı puan), böylece kullanıcılar hala sürücü birleştirme özel ilanını çoğaltmak gerekir.
Bu, olası bir "zararlı" komut dosyasını daha sonra otomatik olarak bir sonraki birleştirme işleminde kullanmamanız için temel bir güvenlik önlemidir.

+1

Bu, git deposunda bir yapılandırma ayarı kaydetmez. –

+0

@AlexandrPriymak: iyi nokta. Cevaba bu önemli uyarıyı ekledim. – VonC

+1

'chmod + x' kullanarak yürütülebilir olarak 'mergeScript.sh' ayarlamayı unutmayın, aksi halde (alışkanlık) çalışabilir. Ben de ** güçlü ** ** yürütülebilir dosyalar için uzantıları kullanmamanızı ** tavsiye ederim. Gelecekte kabuk komut dosyasından perl'e, python'dan veya hatta C dosyasından derleyebildiğinden, basitçe 'mergeScript' adını verin. – MestreLion