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.)
On dirait que vous faites quelque chose de très faux ... utilisez-vous correctement la commande "svn switch"? – Juliano
Demandez-vous comment changer une variable d'environnement lorsque vous changez de copie de travail? – hometoast
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