2009-05-28 8 views
2

Comment les développeurs peuvent-ils configurer leurs chemins d'environnement lorsqu'ils travaillent sur différentes branches SVN du même projet afin qu'ils n'aient pas besoin de configurer leurs chemins chaque fois qu'ils passent d'une branche à l'autre ?Commutation automatique entre les branches SVN du même projet

Je suis un développeur Python et je me retrouve à travailler sur différentes branches du même projet et il est assez moche d'exporter chaque fois PYTHONPATH quand je passe d'une branche à l'autre.

Si votre IDE ne le fait pas automatiquement pour vous (j'utilise vim).

+0

On dirait que vous faites quelque chose de très faux ... utilisez-vous correctement la commande "svn switch"? – Juliano

+0

Demandez-vous comment changer une variable d'environnement lorsque vous changez de copie de travail? – hometoast

+0

Je sais comment changer la variable d'environnement ... Je demande si cela pourrait être fait automatiquement, au cas où j'aurais oublié de le faire. – hyperboreean

Répondre

4

Pour une autre option, vous pouvez utiliser un lien symbolique, ont alors vos variables d'environnement indiquent. Comme:

branch1/ 
branch2/ 
current -> branch1/ 

Ensuite, si vous voulez travailler sur branch2, pointez-le simplement sur 'current'. Vos variables d'environnement pointeraient sur 'current'.

1

Votre flux de travail consiste donc à conserver des branches distinctes dans des répertoires de travail distincts? C'est bien, c'est un workflow assez raisonnable avec Subversion. Personnellement, je modifierais les programmes Python que vous avez dans le contrôle de source pour rechercher leurs propres bibliothèques et modifier sys.path avant d'importer quoi que ce soit; De cette façon, ils vont travailler, peu importe où ils ont été déplacés.

#!/usr/bin/env python 
import os, sys 
basedir = os.path.dirname(os.path.realpath(__file__)) 
sys.path.insert(0, os.path.join(basedir, 'lib')) 

Si vous ne le faites pas, vous pourriez mettre un exécutable wrapper dans votre ~/bin ou autre, quelque part dans $PATH,

#!/bin/bash 
dir=$(pwd) 
while [[ $dir !=/]]; do 
    if [[ -d "$dir/lib" ]]; then 
     export PYTHONPATH="$dir/lib${PYTHONPATH:+:$PYTHONPATH}" 
     break 
    fi 
    dir="${dir%/*}" 
done 
if (($# > 0)); then exec "[email protected]"; fi 

qui regarde simplement autour d'un répertoire lib préfixer à $PYTHONPATH avant de courir ce que vous voulez. Peut-être le nommer "py".

 
$ cd dir1   # dir1/lib exists 
$ py ./my-program 
$ cd ../dir2  # dir2/lib exists 
$ py ./my-program 

Il est également possible d'avoir un flux de travail où vous restez dans un répertoire de travail unique, en utilisant svn sw changer branches. Puisque votre chemin ne change jamais, le réglage PYTHONPATH restera valide même avec les changements de branche.

(Ceci est le flux de travail commun dans git, monotones, hg, etc.)

Questions connexes