git 无法执行 python

您所在的位置:网站首页 msysgit git 无法执行 python

git 无法执行 python

2023-03-24 01:51| 来源: 网络整理| 查看: 265

回答问题

我在 python 中创建了一个小pre-commit钩子。这个钩子在 Linux 下就像一个魅力,但在 Windows 中它一直告诉我:

error: cannot spawn .git/hooks/pre-commit: No such file or directory

我知道这里有关于同一问题的类似问题,并且结论接缝是shebang。我的脚本在第一行有这个:

#!F:\PortableApps\PortablePython3.2\App\python.exe

值得注意的是,简单地通过编写.git/hooks/pre-commit来执行脚本效果很好,但是一旦我尝试提交,git 就会吐出上述消息。

另一个有趣的事情是,当我将编码从 ANSI 转换为 UTF-8(使用 Notepad++)时,在尝试执行脚本时出现以下错误:

.git/hooks/pre-commit: Cannot execute binary file

我正在使用以下工具:

便携式Python3.2.1.1

msysgit 1.7.6 (便携)

Answers

我使用代理方法使 python 脚本在 windows 下工作(使用 msysgit)。可以在这里找到完整的脚本(以及我是如何做到的):https://gist.github.com/1839424

这是使它在 Windows 下工作的重要部分

如果您使用的是 Windows(和“msysgit”),它会稍微复杂一些。由于“msysgit”似乎在处理SHEBANG时出现问题,因此您必须使用一些小技巧来使脚本可执行(有关此问题的更多信息可以在这里找到)。

为了使脚本工作,您需要从 Python 脚本(“pre-commit.py”)中删除 SHEBANG,并使用包装器 bash-script 来调用解释器。该脚本应如下所示:

#!/bin/sh python .git/hooks/pre-commit.py

将此脚本存储为名为“pre-commit”(无文件结尾)的文件。这假设您的PATH中有 Python。如果不这样做,您还可以指定解释器可执行文件的完整路径。

这个脚本将被“git commit”调用并调用python脚本来检查大文件。 SHEBANG 之后的路径不应更改,因为“msysgit”会自动重新映射它。您必须为要执行的 Python 脚本指定相对于 repo-root 的路径(因为那是调用脚本的位置)。

之后,您需要将包装文件(“pre-commit”)和 Python 脚本(“pre-commit.py”)复制到您的存储库“.git/hooks”目录,个性化 Python 脚本(“max_file_size”和“git_binary_path”)并标记“预提交”文件可执行文件。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3