通过 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 提交的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XCode 将新文件上传到 git 存储库?

在我的大型机 USS 文件夹上克隆 Git 存储库时出错

使用 Rsync 备份多个 Git 存储库时使用删除标志?

推送到 git 存储库时避免自动工作项链接

如何在将一个巨大的存储库拆分为单独的存储库时将 SVN 转换为 GIT?

将用户添加到存储库时触发 Github Actions