2010-12-21 29 views
6

Dev bir makinenin dosyayı çekmesini istediğim bir dosyam var, ama dağıtım sunucusunun dosyayı çekmemesini istiyorum (dev makinelerinin sahip olmadığı özel modları var) . Bu mümkün mü, yoksa sadece bir hg çekme yapmak yerine özel bir sunucuya itme çözümüm mü?Koşullu Mercurial Yoksay Dosya

cevap

6

aşağıdakileri yapmanız olacaktır Bunu yapmanın tipik bir yolu:

Sen deposundaki her dosyanın bir kopyasını saklamak ve bunları doğru şekilde adlandırın. Doğru dosyayı sağlamak için

  • web.server.config
  • web.dev.config

Sonra yerleşik bir adım eklersiniz: söz konusu dosya web.config ise Örneğin, depo içerisindeki aşağıdaki iki kaydetmişizdir size Sonra

if "%COMPUTERNAME%" == "SERVER" copy web.server.config web.config 
if not "%COMPUTERNAME%" == "SERVER" copy web.dev.config web.config 

: gerçek web.config dosyaya kopyalandı, bir toplu iş dosyası kullanabilirsiniz .hgignore yoluyla web.config kendisi görmezden olacaktır:

glob:web.config 
1

Bu, sürüm kontrolü dışında çözülebilecek bir şey midir? Örneğin, dosyayı deponun tüm kopyalarına ekleyin, ancak kullanımını çevresel değişkenlerle veya benzerleriyle etkinleştirin veya devre dışı bırakın. Güncellemeden sonra eklenti/kaldır/yama dosyaları gibi şeyler yapmak için kötü hack kullanmıyorsanız, bu çoğu sürüm kontrol sistemlerinin işlemek üzere oluşturulduğu bir şey gibi gelmiyor.

+0

Katılıyorum, ancak bu dosya hem sunucuda hem de dev makinelerde gereklidir. Web URL'leri/db bağlantı dizeleri/etc yollarına sahip bir ayar dosyasıdır ve bu değerler sunucuda dev makinelerinden farklıdır. – Jan

+0

Sık sık değişiyorlar mı? –

+0

çok sık değil. – Jan

1

Bir seçenek veya depoda dahil edilemedi olabilir dağıtım sunucusu için özel hgignore dosyası oluşturmaktır. Ardından sunucunun hgrc dosyasında, ignore değişkenine sahip özel hgignore dosyasının yolunu belirtin. Bu, dosya güncelleştirmelerinin dağıtım sunucusu tarafından yok sayılacağını, ancak geliştirme makineleri için her zamanki gibi güncelleştirilebilmesini sağlar.

2

Karlsen'in her zaman kullandığım cevabının bir çeşidi.

Projede /config veya /etc dizinine sahibim. ci_server.yaml

  • dev.yaml
  • Sonra uygulamalar bunun üzerinde çalışan ediliyor konak bağlı olarak doğru config sembolik köprü ise /etc/app.yaml den çekin: Bu dizin genellikle gibi örnek yapılandırmaları içerecektir.

    Bunu yapmanın en iyi yolu, 'un olası bir hata vektörünü () ortadan kaldırdığı, varyant kod yollarının (yığın komut dosyası dalları) bulunmamasıdır. Bu, üretimde kullanılacak olan aynı kod yolunu kullanmanıza izin verir (geçersiz kılma dosyasını nereye arayacağınıza göre).