当前位置: 首页 > 知识库问答 >
问题:

在Git中运行预提交钩子。是否有方法验证脚本是否正在运行?

百里文景
2023-03-14
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".

if git rev-parse --verify HEAD >/dev/null 2>&1
then
    against=HEAD
else
    # Initial commit: diff against an empty tree object
    against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi

# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --bool hooks.allownonascii)

# Redirect output to stderr.
exec 1>&2

# Cross platform projects tend to avoid non-ASCII filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
    # Note that the use of brackets around a tr range is ok here, (it's
    # even required, for portability to Solaris 10's /usr/bin/tr), since
    # the square bracket bytes happen to fall in the designated range.
    test $(git diff --cached --name-only --diff-filter=A -z $against |
      LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
    cat <<\EOF
Error: Attempt to add a non-ASCII file name.

This can cause problems if you want to work with people on other platforms.

To be portable it is advisable to rename the file.

If you know what you are doing you can disable this check using:

  git config hooks.allownonascii true
EOF
    exit 1
fi

# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --

共有1个答案

寿亦
2023-03-14

首先,您可以添加一个简单的回声。

其次,脚本将由类似msys bash的shell运行,因此您不能直接从PowerShell Windows会话运行它。

第三,确保您确实向索引中添加了一些元素,以便git commit有一些东西要提交(并使pre-commit钩子有一个触发的理由)。

    null
 类似资料:
  • 我刚开始研究Git钩子,但我似乎无法让它们运行。 注意:这是在Windows7电脑上。

  • 问题内容: 我目前正在JAVA中构建一个应用程序,其中只能执行一次。因此,我当前正在使用一个锁定文件,在其中写入当前执行的PID。 因此,只要此应用程序启动,它将打开文件(如果存在)并尝试检测写入文件的PID是否正在实际运行。 这样可以防止我的应用在解锁文件之前崩溃的问题。 我需要它在Windows(XP,7或8)和linux(所有用户都在基于debian的发行版)上工作。 这是一些代码,可以让您

  • 问题内容: 查找进程aa.sh是否正在运行的linux命令是什么。ps命令似乎不起作用,并且不显示Shell脚本名称。 请指教。 问题答案: 检查一下

  • 问题内容: 我有一个安排计时器的游戏。我有这个CoresManager文件: 我在游戏中使用这个: 如果播放器注销并且服务器重新启动,CoresManager计时器将停止运行。为了使其再次运行,我添加了代码以使其在您再次登录后再次执行startTimer()。但是,由于如果服务器未注销,计时器仍在运行,因此计时器开始运行两次。根据您注销和登录的次数,计时器开始减去2或更多。我认为,如果有代码确定计

  • 我是新来的春靴AOP。 用@Before注释的AOP方法是否在java验证注释(例如@NotNull)之前运行? 我还需要为每个请求运行一些其他自定义验证,但我需要在java验证注释运行之后运行这些验证。 哪个先跑? 我的控制器: 我的建议是:

  • 问题内容: 我希望我的脚本在交互式Shell会话中以及在使用重定向的stdout运行时(例如,通过管道传递到其他命令时)的行为有所不同。 如何识别这两个中的哪个发生在Python脚本中? 现有程序中这种行为的示例:grep –color = auto在交互式shell中运行时突出显示匹配项,而在通过管道传输到其他内容时则不突出显示。 问题答案: 要么