【发布时间】:2020-07-28 12:35:53
【问题描述】:
我有一个 git post-checkout 挂钩,每当我签出到不同的提交时,它都会自动重新编译我的 Visual Studio 项目。这很好用,但我注意到当我在 TortoiseGit 中执行还原时,钩子也会执行,无论是从日志窗口还是从提交窗口(我右键单击要还原的文件,然后单击“还原”弹出菜单)。有没有办法防止这种情况发生?
【问题讨论】:
我有一个 git post-checkout 挂钩,每当我签出到不同的提交时,它都会自动重新编译我的 Visual Studio 项目。这很好用,但我注意到当我在 TortoiseGit 中执行还原时,钩子也会执行,无论是从日志窗口还是从提交窗口(我右键单击要还原的文件,然后单击“还原”弹出菜单)。有没有办法防止这种情况发生?
【问题讨论】:
钩子被赋予了三个参数:前一个 HEAD 的 ref, 新 HEAD 的 ref (可能已更改也可能未更改)和一个标志 指示结帐是否为分支结帐(更改 分支,标志 = 1)或文件签出(从 索引,标志=0)。
您可以测试第三个参数。如果为 0,则不编译。例如在 Bash 中,
#!/bin/bash
flag=$3
if [[ "$flag" -eq 0 ]];then
exit 0
fi
在 Python 中,
#!/usr/bin/env python
import sys
flag = sys.argv[3]
if flag == '0':
sys.exit(0)
【讨论】: