我们正在使用Drupal运行一个中大型网站并使用git维护代码。最近,我们也开始使用git部署live(之前我们只是使用git来更好地维护和备份代码)。
不幸的是我们的git文件夹结构如下:
不幸的是,因为这些文件夹不在实时环境的一个层上(而sql和public甚至不应该被推送到网上)。
所以我们做的是创建另一个名为workspace的文件夹,其中git在收到推送后检出并仅将相关的 all 文件夹复制到实时项目文件夹中hooks/post-receive
:
#!/bin/sh
GIT_WORK_TREE=~/workspace/live git checkout -f master
# remove the current all folder to actually delete deleted files
rm -rf ~/www.website.com/sites/all
cp -r ~/workspace/live/all ~/www.website.com/sites/.
我们只是想知道是否有任何缺点,或者是否有更好的方法呢?
效果很好,但你永远不会知道:)
答案 0 :(得分:3)
一个可能的缺点是:
cp
完成。最好是:
链接部分是瞬时的。
回滚只是将符号链接更改回原始值。