0

我已经设置了一个类似于http://joemaller.com/990/a-web-focused-git-workflow/的 git 工作流。本质上,我有本地存储库,它们向裸露的远程存储库报告。然后,我可以通过 Web 访问我的部署目录,并将其设置为一个存储库,该存储库也向同一个裸存储库报告。

它使用 git hooks 设置,因此当本地开发人员将更改推送到远程存储库时,hook 进入 web 文件夹并从存储库中提取,因此它始终具有最新和最好的。一切都很好。

我的症结是我希望安抚那些不想让你使用 GIT 并且只想通过 FTP 将文件上传到 web 文件夹的人。我已经通过在 web 文件夹上设置一个 inotifywait 监视器来完成这个工作,以便每当文件被写入、修改、移动、删除、创建等时......我的 bash 脚本如下。

!/bin/sh
inotifywait @*.swp -rm -e modify,move,create,delete,delete_self,unmount /var/www/html/mysite | while read
do

now=$(date +"%m_%d_%Y:%T")
echo $now >> temp.txt

cd /var/www/html/mysite || exit
git add --all
git commit -m "ftp update $now" -a
done

这实际上也有效,但我观察到的是,一旦我通过修改我的 web 文件夹中的文件触发 inotifywait,我就会陷入 while 循环。有人对此有任何想法吗?理想情况下会喜欢它做它的事情,而不是卡在 while 循环中不断运行不必要的 git 命令。

谢谢!

4

1 回答 1

0

inotifywait的手册页建议您使用不同的循环样式:

while inotifywait -e modify /var/log/messages; do
    …
done

你试过吗?

于 2012-12-07T05:07:58.313 回答