这是我的预提交脚本:
#!/bin/bash
for f in .git/hooks/pre-commit.d/*; do
if [ -x "$f" ]; then
if ! "$f"; then
echo "DID NOT COMMIT YOUR CHANGES!";
exit 1
fi
fi
done
Run Code Online (Sandbox Code Playgroud)
pre-commit.d中的一个可执行文件是一个python脚本(pre-commit-pylint.py),它以:
#!/usr/bin/env python
import pylint
Run Code Online (Sandbox Code Playgroud)
pylint安装在我的virtualenv上.我的问题是混帐运行预提交前面加上/usr/libexec/git-core:/usr/bin来$PATH,所以即使我的virtualenv被激活pre-commit.d/pre-commit-pylint.py脚本系统运行/usr/bin/python(而不是与蟒蛇的virtualenv运行).
我想拥有与不使用virtualenv的开发人员兼容的钩子.有没有办法透明地运行我的python脚本与virtualenv(即,与使用他们的系统python的开发人员保持兼容)?
您可以检查 $VIRTUAL_ENV 变量的预提交脚本,并将其相应地添加到 $PATH 中:
#!/bin/bash
if [ -n $VIRTUAL_ENV ]; then
PATH=$VIRTUAL_ENV/bin:$PATH
fi
for f in .git/hooks/pre-commit.d/*; do
if [ -x "$f" ]; then
if ! "$f"; then
echo "DID NOT COMMIT YOUR CHANGES!";
exit 1
fi
fi
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |