Đây là của tôi kịch bản pre-cam kết:Làm thế nào tôi có thể chạy một kịch bản virtualenv python như một git pre-cam kết nối
#!/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
Một trong những thực thi trong pre-commit.d được một kịch bản python (trước commit-pylint.py) bắt đầu bằng:
#!/usr/bin/env python
import pylint
pylint được cài đặt trên virtualenv của tôi. Vấn đề của tôi là git chạy pre-commit prepending /usr/libexec/git-core:/usr/bin
đến $PATH
, vì vậy ngay cả khi virtualenv của tôi được kích hoạt, tập lệnh pre-commit.d/pre-commit-pylint.py
chạy với hệ thống /usr/bin/python
(thay vì chạy bằng virtualenv python).
Tôi muốn có các móc tương thích với các nhà phát triển không sử dụng virtualenv. Có cách nào để chạy kịch bản python của tôi với virtualenv minh bạch (tức là, ở lại tương thích với các nhà phát triển đang sử dụng python hệ thống của họ)?
bạn có bao giờ tìm cách ngăn Git khỏi việc thêm tiền tố '/ usr/bin' vào $ PATH của móc không? Chỉ cần bắt gặp điều này bản thân mình. – joemaller
không, tôi đã không. Tôi đã giải quyết vấn đề của mình với câu trả lời của Rob. –
tương tự cho rbenv của Ruby: https://github.com/sstephenson/rbenv/issues/374 –