【问题标题】:Automatically switch between SVN branches of the same project自动切换同一项目的SVN分支
【发布时间】:2009-05-28 18:20:10
【问题描述】:

开发人员在同一项目的不同 SVN 分支上工作时如何设置他们的环境路径,这样他们每次从一个分支切换到另一个分支时都不需要设置自己的路径?

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

如果您的 IDE 没有自动为您执行此操作(我使用的是 vim)。

【问题讨论】:

  • 看起来你做错了什么......你是否正确使用“svn switch”命令?
  • 您是在问如何在切换工作副本时更改环境变量?
  • 我知道如何切换环境变量......我在问它是否可以自动完成,以防我忘记这样做。

标签: linux svn environment-variables


【解决方案1】:

对于另一种选择,您可以使用符号链接,然后让您的环境变量指向它。喜欢:

branch1/
branch2/
current -> branch1/

然后,如果您想在 branch2 上工作,只需将 'current' 指向它。您的环境变量将指向“当前”。

【讨论】:

    【解决方案2】:

    所以您的工作流程是将单独的分支保存在单独的工作目录中?没关系,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 存在 $ py ./我的程序 $ cd ../dir2 # dir2/lib 存在 $ py ./我的程序

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

    (这是git、monotone、hg等常见的工作流程)

    【讨论】:

      猜你喜欢
      • 2013-01-31
      • 2013-04-09
      • 1970-01-01
      • 2016-11-23
      • 2011-10-07
      • 2013-01-17
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多