Slava Podolskiy Asked:2020-05-11 18:20:46 +0000 UTC2020-05-11 18:20:46 +0000 UTC 2020-05-11 18:20:46 +0000 UTC 如何识别服务器端文件夹中文件的变化? 772 我应该如何配置服务器 git 挂钩,使其仅适用于所选文件夹且仅适用于所选文件扩展名? git 1 个回答 Voted Best Answer aleksandr barakin 2020-05-11T22:02:48Z2020-05-11T22:02:48Z 我应该如何配置服务器 git 挂钩,使其仅适用于所选文件夹且仅适用于所选文件扩展名? “配置” - 什么都没有。但您可以直接在脚本中实现所需的逻辑。 存储库内update的文件中给出了挂钩的示例。hooks/update.sample具体来说,它声明脚本是使用三个参数调用的: # --- Command line refname="$1" oldrev="$2" newrev="$3" 因此,让我们使用第二个和第三个参数来获取已更改文件的列表。为此,请在存储库中的服务器上创建一个文件hooks/update(不要忘记向其中添加可执行位 - $ chmod + x hooks/update): refname="$1" oldrev="$2" newrev="$3" if git diff $oldrev $newrev --name-only | grep -q '^files/exe.*'; then echo "что-то делаю" >&2 else echo "ничего не делаю" >&2 fi 如果正在处理的提交影响的文件中存在与正则表达式匹配的文件^files/exe.*(即直接位于files工作副本目录中并具有前缀exe.),则执行该命令的用户push将收到消息что-то делаю: $ mkdir files $ touch files/exe.some $ git add files/exe.some $ git commit -m 'some message' ... $ git push ... remote: что-то делаю ... 如果没有这样的文件,那么消息将是:ничего не делаю. 代替显示消息,替换您需要的操作。
“配置” - 什么都没有。但您可以直接在脚本中实现所需的逻辑。
存储库内
update的文件中给出了挂钩的示例。hooks/update.sample具体来说,它声明脚本是使用三个参数调用的:因此,让我们使用第二个和第三个参数来获取已更改文件的列表。为此,请在存储库中的服务器上创建一个文件
hooks/update(不要忘记向其中添加可执行位 -$ chmod + x hooks/update):如果正在处理的提交影响的文件中存在与正则表达式匹配的文件
^files/exe.*(即直接位于files工作副本目录中并具有前缀exe.),则执行该命令的用户push将收到消息что-то делаю:如果没有这样的文件,那么消息将是:
ничего не делаю.代替显示消息,替换您需要的操作。