Luk*_*uth 13 python windows git msysgit githooks
我pre-commit
在python中创建了一个小钩子.这个钩子在Linux下就像一个魅力,但在Windows中它一直告诉我:
error: cannot spawn .git/hooks/pre-commit: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我知道这里有类似的问题关于同一个问题和结论接缝是shebang.我的脚本在第一行有这个:
#!F:\PortableApps\PortablePython3.2\App\python.exe
Run Code Online (Sandbox Code Playgroud)
同样有趣的是,通过编写简单地执行脚本.git/hooks/pre-commit
非常精彩,但是一旦我尝试提交,git就会吐出上面的消息.
另一件有趣的事情是,当我将编码从ANSI转换为UTF-8(使用Notepad ++)时,在尝试执行脚本时出现以下错误:
.git/hooks/pre-commit: Cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
我正在使用以下工具:
Luk*_*uth 13
我使用代理方法使python脚本在windows下运行(使用msysgit).可以在这里找到完整的脚本(以及我如何做的描述):https://gist.github.com/1839424
这是使其在Windows下工作的重要部分
如果你正在使用Windows(和"msysgit"),它会有点复杂.由于"msysgit"似乎在处理SHEBANG时遇到问题,因此您必须使用一个小技巧来使脚本可执行(有关此问题的更多信息可以在此处找到).
为了使脚本有效,您需要从Python脚本中删除SHEBANG("pre -commit.py")并使用包装器bash脚本来调用解释器.此脚本应如下所示:
#!/bin/sh
python .git/hooks/pre-commit.py
Run Code Online (Sandbox Code Playgroud)
将此脚本存储为名为"pre-commit"的文件(无文件结尾).这假设你的PATH中有Python .如果不这样做,您还可以指定解释器可执行文件的完整路径.
这个脚本将由"git commit"调用,并调用python脚本来检查巨大的文件.SHEBANG之后的路径不应该更改,因为"msysgit"会自动重新映射它.您必须为要执行的Python脚本指定相对于repo-root的路径(因为这是调用脚本的位置).
之后你会想要将包装文件("pre-commit")和Python脚本("pre -commit.py")复制到你的repos".git/hooks"-directory,个性化Python脚本("max_file_size"和"git_binary_path")并标记"预提交"文件可执行文件.
归档时间: |
|
查看次数: |
8277 次 |
最近记录: |