如何在 git 中签出标签后 chown/chmod?

How to chown/chmod after tag checkout in git?

在实时环境中,我需要获取标签并在它们之间简单地切换。每次切换后,我需要 chown/chmod 工作树中的所有文件。

我创建了一个 post-checkout 挂钩

#!/bin/bash
chown -R www-data:www-data public/
find public/ -type f -exec chmod 400 {} \;
find public/ -type d -exec chmod 500 {} \;

.git 目录在 public 目录之外,所以我在 git 配置中添加了以下内容。

worktree = /var/www/site/public

现在我执行以下命令

# git fetch --tags
# git checkout 0.0.1

但是 post-checkout 钩子没有被执行。怎么了?

又一个问题:钩子的相对路径是什么?它是 .git 所在的同一目录还是 public/?

检查您的 .git/hooks/post-checkout 是否设置了可执行标志,否则执行 chmod +x .git/hooks/post-checkout。 hook的当前工作目录作为仓库根目录(.git所在的目录)。

您可以通过编写一个非常简单的钩子来验证您的钩子是否实际执行以及它的当前工作目录

#!/bin/sh
pwd
echo "This is post-checkout hook"