通过 FTP 将文件添加到 git 存储库时,在脚本中使用 inotifywait 自动执行 git 提交
Posted
技术标签:
【中文标题】通过 FTP 将文件添加到 git 存储库时,在脚本中使用 inotifywait 自动执行 git 提交【英文标题】:using inotifywait in a script to automate a git commit when files have been added to git repository via FTP 【发布时间】:2012-12-06 23:52:49 【问题描述】:我设置了一个类似于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 命令。
谢谢!
【问题讨论】:
inotfiywait 的输出是什么? 【参考方案1】:man page for inotifywait 建议您使用不同的循环样式:
while inotifywait -e modify /var/log/messages; do
…
done
你试过了吗?
【讨论】:
以上是关于通过 FTP 将文件添加到 git 存储库时,在脚本中使用 inotifywait 自动执行 git 提交的主要内容,如果未能解决你的问题,请参考以下文章