2

あるブランチから別のブランチに切り替えるたびにパスを設定する必要がないように、開発者は同じプロジェクトの異なる SVN ブランチで作業するときに環境パスを設定するにはどうすればよいですか?

私は Python 開発者であり、同じプロジェクトのさまざまなブランチで作業していることに気づきました。あるブランチから別のブランチに切り替えるたびに PYTHONPATH をエクスポートするのはかなり醜いです。

これは、IDE が自動的にこれを行わない場合です (私は vim を使用しています)。

4

2 に答える 2

4

別のオプションとして、シンボリックリンクを使用して、環境変数がそれを指すようにすることもできます。お気に入り:

branch1/
branch2/
current -> branch1/

次に、branch2 で作業したい場合は、'current' をポイントするだけです。環境変数は「現在」を指します。

于 2009-05-28T21:39:59.027 に答える
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 が存在する
$ py ./マイプログラム
$ cd ../dir2 # dir2/lib が存在する
$ py ./マイプログラム

svn swブランチを変更するために使用して、単一の作業ディレクトリ内にとどまるワークフローを持つことも可能です。パスが変更されることはないため、PYTHONPATH一度設定すると、ブランチが変更されても有効なままになります。

(これはgit、 monotone 、 hg などで一般的なワークフローです。)

于 2009-05-28T21:18:45.853 に答える