2012-01-27 6 views
6

önceden taahhüt commit-pylint.py) ile başlayan sanalenv: pylint. Benim problemim,içiniçin ön-taahhütlü ön hazırlığı çalıştırıyor olmasıdır, bu yüzden benim virtualenv etkin olsa bile pre-commit.d/pre-commit-pylint.py betiği sistem /usr/bin/python (virtualenv python ile çalışmak yerine) ile çalışır.Bu benim önceden taahhüt script kancayı

Sanalenv kullanmayan geliştiriciler için uyumlu olan kancalara sahip olmak istiyorum. Python betiğimi sanal olarak sanal olarak çalıştırmak için herhangi bir yol var mı (yani, sistem pythonunu kullanan geliştiricilerle uyumlu mu?) Sen $ VIRTUAL_ENV değişken için ön taahhüt komut kontrol edin ve uygun $ PATH bunu başa ekleyebilir

+0

Git'in "/ usr/bin" kodunu kancaya $ PATH olarak göndermesini engellemenin bir yolunu buldunuz mu? Sadece kendimle karşılaştım. – joemaller

+0

hayır, yapmadım. Rob'un cevabıyla problemimi çözdüm. Ruby's rbenv için –

+0

aynı: https://github.com/sstephenson/rbenv/issues/374 –

cevap

2

:

#!/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 
0

Yaptığım sona erdi geçerli: .git dosya yapısı:

  • .git/hooks/pre-commit
  • .git/hooks/pre-commit-main.py

.git/kanca/önceden taahhüt:

#!/usr/bin/env bash 
export PATH="$THE_GOOD_PATH" 
python "$GIT_DIR/hooks/pre-commit-main.py" 

.git/kanca/pre-commit-main.py: Eğer git commit çağırdığınızda

#!/usr/bin/env python 
import sys 
print sys.version_info 

Sonra, emin THE_GOOD_PATH olun olduğu tanımlamıştır: Ayrıca tek dosyasına .profile veya uygulama ve sembolik bağın toplevel tüm kanca gelen THE_GOOD_PATH="$PATH" ihracat olabilir

export THE_GOOD_PATH="$PATH" 
git commit 

.

Bu yöntem, virtualenv agnostik olma avantajına sahiptir: ayrıca Ruby RVM rbenv ile çalışır.

Git geliştiricilere: http://permalink.gmane.org/gmane.comp.version-control.git/258454 adresinden, yalnızca PATH ürünümüzü bırakmamızı istedim, ancak ilk yanıt WONTFIX idi.