我已经使用这个“教程”来设置 DSP 环境:http ://toroid.org/ams/git-website-howto (是的,我没有 T)。
我的工作流程非常简单:
- 本地开发(D)
- 提交一些事情
- 提交更多的东西
- 推送到暂存(和 Github)(S)
- 在 Staging 上测试新代码
- 推送到生产 ( P )
我的代码包含由我的代码缩小然后保存到 1 个文件的 CSS 文件:all.css
. 在本地,我已经关闭了该选项,因此我不必all.css
每次更改 CSS 时都手动删除。在暂存和生产中,它们应该尽快缓存(因此all.css
从单独的 CSS 文件创建)。
问题是每次我推送时,我都必须删除all.css
(并且all.js
- 完全相同的故事)才能看到更改(并正确测试)。
从教程中,我制作了一个post-receive
挂钩,将更改签出到某个文件夹(Apache 读取代码的地方)。
我目前的post-receive
钩子:
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
我想重用$GIT_WORK_TREE
以删除$GIT_WORK_TREE
(being www/all.css
and www/all.js
) 中的两个文件,但我不能......下一行没有 var $GIT_WORK_TREE 。
所以我把它改成了这个,但我不喜欢那个,特别是如果我将来想用它做更多的事情:
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
rm /var/www/www.example.org/www/all.css
rm /var/www/www.example.org/www/all.js
$GIT_WORK_TREE
不会像这样重复使用。
我试过的东西不起作用:
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
rm $GIT_WORK_TREE/www/all.css
rm $GIT_WORK_TREE/www/all.js
rm:文件不存在等(/www/all.css)(
$GIT_WORK_TREE
为空)
GIT_WORK_TREE=/var/www/www.example.org
git checkout -f
致命:此操作必须在工作树中运行
GIT_WORK_TREE=/var/www/www.example.org
cd $GIT_WORK_TREE
git checkout -f
致命的:不在 git 存储库中(或任何.....)
我想我的问题与 Bash 的工作方式和 GIT 的工作方式一样多 =)