在同一个项目的SVN分支之间自动切换

问题描述:

开发人员在同一项目的不同SVN分支上工作时,如何设置环境路径,以便每次从一个分支切换到另一个分支时不需要设置路径?在同一个项目的SVN分支之间自动切换

我是一名Python开发人员,我发现自己在同一个项目的不同分支上工作,每当从一个分支切换到另一个分支时,导出每个PYTHONPATH都非常难看。

这就是如果你的IDE不会自动为你做(我正在使用vim)。

+0

看起来你正在做的事情非常错误......你是否正确使用“svn switch”命令? – Juliano 2009-05-28 17:44:54

对于另一种选择,你可以使用一个符号链接,然后有你的环境变量指向它。像:

branch1/ 
branch2/ 
current -> branch1/ 

然后,如果你想在branch2上工作,只需指向'current'即可。你的环境变量将指向'当前'。

所以你的工作流程是保持单独的分支在不同的工作目录?这很好,这是一个非常合理的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 "[email protected]"; fi 

简单地浏览了一lib目录时,预先准备$PYTHONPATH在运行任何你想要的之前。也许将其命名为“py”。

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

也可以有一个工作流程,你留在一个工作目录中,使用svn sw来更改分支。由于您的路径永远不会改变,因此即使分支更改,设置PYTHONPATH一次仍然有效。

(这是git,单调,汞等常见的工作流程)