开发人员在处理同一项目的不同SVN分支时如何设置其环境路径,以便每次从一个分支切换到另一个分支时都不需要设置路径?
我是一名Python开发人员,我发现自己在同一个项目的不同分支上工作,当我从一个分支切换到另一个分支时,每次导出PYTHONPATH都非常难看。
如果您的IDE不自动为您执行此操作(我使用的是vim)。
答案 0 :(得分:4)
对于另一个选项,您可以使用符号链接,然后让您的环境变量指向它。像:
branch1/
branch2/
current -> branch1/
然后,如果你想在branch2上工作,只需指向'current'即可。您的环境变量将指向“当前”。
答案 1 :(得分:1)
那么您的工作流程是将单独的分支保存在单独的工作目录中?没关系,Subversion是一个非常合理的工作流程。
就个人而言,我会改变你在源代码控制中拥有的任何Python程序,以便在导入任何内容之前查找自己的库并修改sys.path
;这样,无论他们搬到哪里,他们都会工作。
#!/usr/bin/env python
import os, sys
basedir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(basedir, 'lib'))
如果你不这样做,你可以在~/bin
或其他任何地方,$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 "$@"; fi
在运行你想要的任何内容之前,它只是寻找lib
目录前置$PYTHONPATH
。也许将其命名为“py
”。
$ cd dir1 # dir1/lib exists $ py ./my-program $ cd ../dir2 # dir2/lib exists $ py ./my-program
还可以使用svn sw
来更改分支,从而使工作流保持在单个工作目录中。由于您的路径永远不会更改,因此即使分支更改,设置PYTHONPATH
一次也会保持有效。
(这是git中的常见工作流程,单调,hg等。)