2011-10-03 18 views
17

Bir tarayıcıda görüntülenebilmeleri için taahhüt edilen dosyaları belirli bir klasöre otomatik olarak kopyalamak istiyorum, ancak bunu oluşturmak zorunda kalmadan yapmak istiyorum Ana depoyu (here'da gösterildiği gibi) yansıtan çıplak bir depo ve bu işlemin gerçekleşmesini istiyorum.Belirli bir klasöre kopyalanmış dosyaları kopyalamak için basit git post-commit kanca

Hangi dosyaların işlendiğini, kopyasını okuduğunu/bunları canlı bir web sunucusunda güncelleyen bir kanca oluşturmanın basit bir yolu var mı?

Örneğin: /example.com adında bir klasör ve bir git deposu var. Ben depoda index.html işlemek, taahhütlü dosya içeriği ile güncelleştirmek için /example.com gelen ilgili index.html dosyası taahhüt ettiğinde bunu istiyorum

cevap

23

Bunu yapmanın iyi bir yolu, bir post-commit oluşturmaktır web sunucunuz tarafından gösterilen dizine ayarlanmış çalışma ağacını ve geliştirme deponuzda .git dizinine ayarlanmış olan git diziniyle git checkout -f çalışır. Ancak

#!/bin/sh 
unset GIT_INDEX_FILE 
export GIT_WORK_TREE=/example.com/ 
export GIT_DIR=/home/whoever/development/web-project/.git/ 
git checkout -f 

Buna dikkat et - -f git kaldırmak veya taahhüt en son içinde /example.com/ maç ağacı yapmak için dosyaların üzerine yazabilir anlamına gelir: Örneğin, yaptığın .git/hooks/post-commit dosyası oluşturabilir.

(aynı zamanda .git/hooks/post-commit dosya yürütülebilir yapmayı unutmayın.)

+0

Bu mükemmel bir iş yok. Teşekkürler – viorel

+0

Pencerelerde, tam yolları bekleyen senaryo ve sözdizimi nedir? Teşekkürler! – andli

+0

@andli msysgit kullanıyorum ve bir git bash penceresinde kullanacağınız aynı yolları kullanarak çalışır. – Shlomo

İlgili konular