あるブランチから別のブランチに切り替えるたびにパスを設定する必要がないように、開発者は同じプロジェクトの異なる SVN ブランチで作業するときに環境パスを設定するにはどうすればよいですか?
私は Python 開発者であり、同じプロジェクトのさまざまなブランチで作業していることに気づきました。あるブランチから別のブランチに切り替えるたびに PYTHONPATH をエクスポートするのはかなり醜いです。
これは、IDE が自動的にこれを行わない場合です (私は vim を使用しています)。
あるブランチから別のブランチに切り替えるたびにパスを設定する必要がないように、開発者は同じプロジェクトの異なる SVN ブランチで作業するときに環境パスを設定するにはどうすればよいですか?
私は Python 開発者であり、同じプロジェクトのさまざまなブランチで作業していることに気づきました。あるブランチから別のブランチに切り替えるたびに PYTHONPATH をエクスポートするのはかなり醜いです。
これは、IDE が自動的にこれを行わない場合です (私は vim を使用しています)。
別のオプションとして、シンボリックリンクを使用して、環境変数がそれを指すようにすることもできます。お気に入り:
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 "$@"; fi
必要なものを実行する前に、先頭に追加するlib
ディレクトリを探し回るだけです。$PYTHONPATH
多分それを「py
」と名付けてください。
$ cd dir1 # dir1/lib が存在する $ py ./マイプログラム $ cd ../dir2 # dir2/lib が存在する $ py ./マイプログラム
svn sw
ブランチを変更するために使用して、単一の作業ディレクトリ内にとどまるワークフローを持つことも可能です。パスが変更されることはないため、PYTHONPATH
一度設定すると、ブランチが変更されても有効なままになります。
(これはgit、 monotone 、 hg などで一般的なワークフローです。)