2014-09-06 59 views
1

我在我的服務器上實現了post-receive hook(git已初始化爲git init --bare)。胡克在通過以下方法創建:Git post-receive hook。移動除幾個文件夾以外的所有內容

cd repo/hooks/ 
touch post-receive 
chmod 777 post-receive 

然後,我有一個文件內:

#!/bin/sh 
GIT_WORK_TREE=/var/www 
export GIT_WORK_TREE 
git checkout -f 

現在,當我把我的本地更改一切都被移動到/ var/WWW文件夾。問題是我不想移動一些文件夾。例如,我有folder1folder2那裏,我不想被移動。目前我正在手動刪除這些文件夾後,但這是一個荒謬的工作,我想自動化它。

我對ubuntu 14.04/git 2.1

回答

2

我推後,我手動刪除這些文件夾

你可能只是廣告這一步在你的鉤子

另一種方法是嘗試和set up a sparse checkout(因爲你可以exclude folders in the sparse-checkout file)。

echo "/*" > .git/info/sparse-checkout 
echo "!folder1/" >> .git/info/sparse-checkout 
echo "!folder2/" >> .git/info/sparse-checkout 
+0

請問我可以告訴我如何在我的鉤子中添加此步驟(在推後刪除這些文件夾)? – 2014-09-06 10:26:32

+1

@SalvadorDali只需在後臺接收腳本中手工完成命令即可(在結帳步驟之後):作爲'rm -Rf/var/www/folder1'。 – VonC 2014-09-06 10:27:36

+0

明白了。但是如果我將設置稀疏結帳,這些文件夾甚至不會被移動? – 2014-09-06 10:28:59