2015-04-27 47 views
1

我有一個名爲「測試」分支,和後收到鉤寫入主到活動目錄,就像這樣:怎麼寫一個特定分支到磁盤上後收到的git

#!/bin/bash 
cd .. 
env -i git reset --hard 

我不想用已經工作很長時間的現有進程破壞任何東西,但是當新的更改被推送到測試分支時,我想讓git將分支的文件寫入磁盤/ var/www /測試我已經得到了這個工作使用以下語法:

git clone foo foo-copy 
(cd foo-copy && git checkout branch) 

但這種操作方式太慢n在測試分支之上推送另一個提交,並且不會覆蓋現有文件夾中的文件(儘管我認爲我可能在那裏是錯誤的)

tldr:如何將特定分支高效寫入特定文件夾並在收到後覆蓋?

回答

0

對於這一點,我認爲

# one-time setup 
mkdir -p /var/www/testing 
git clone -s -b testing --single-branch myrepo /var/www/testing 

而在.git/hooks/post-receive(主回購)

#!/bin/bash 
while read old new refname; do 
     if [[ $refname == refs/heads/testing ]]; then (
       eval unset ${!GIT_*} 
       cd /var/www/testing 
       git fetch 
       git reset --hard origin/testing 
     ); fi 
done 

會做的伎倆。如果您刪除主repo中的測試分支,刪除不會影響克隆,它只會停止更新。

+0

啊謝謝,myrepo需要指出什麼?回購的目錄?或專門在回購中的.git文件夾? – arcanine

+0

看起來像它需要按照手冊的repo文件夾,再次感謝你:) – arcanine

相關問題