libA(stable)に依存するlibTを使用してlibA-devを "テスト"すると、実稼働環境で動作するようにlibA-devが実際にテストされていません。 libA-devを実際にテストする唯一の方法は、完全に突っ込んでlibTをlibA-devに依存させることです。これがあなたの単体テストを破るなら、それは良いことです - それはあなたに何を修正する必要があるかを示しています。
単体テストをお持ちでない場合は、安定したlibAとlibTを先に使ってください!
「バージョン管理システム」(例:bzr、hg、svn、git)の使用をお勧めします。次に、あなたのプロジェクトの支店を "安定"と "devA"にすることができます。
ブランチDEVAで作業するには、まず確認してくださいPYTHONPATH環境変数が他の枝を除外することにより、
export PYTHONPATH=/path/to/devA
を実行します、あなたは、Pythonはあなたが望むだけのモジュールを使用している保証しています。
dev - > stableのコードをマージするときは、バージョンコントロールソフトウェアで簡単に行うことができます。
バージョン管理では、大胆な変更を試みることもできます。大きな変更を試みることは恐ろしいものではありません。物事がうまくいかない場合、元に戻すのは簡単です。これとPYTHONPATHの間では、常に既知の作業コードに戻ることができます。
libA-dev-libAをlibA-devをテストするために使用する必要があると思われる場合は、すべてのモジュールの名前を変更して、すべてのimport文は、libA-devとlibAを明確に区別します。たとえば、libAにmoduleA.pyというモジュールがある場合は、moduleA_dev.pyという名前に変更します。
rename -n 's/^(.*)\.py/$1_dev.py/' *.py
コマンドは、すべて*の.pyファイルに "_dev" を追加します。 ( "-n"フラグを指定すると、renameコマンドは意図した名前の変更のみを表示します。実際には "-n"を削除してください。)
は、名前の変更を元に戻すあなたは、コード内moduleA_devにmoduleAへのすべての参照を変更する必要があります
rename -n 's/^(.*)_dev\.py/$1.py/' *.py
次を実行します。 > "moduleA_dev" - コマンド
find /path/to/LibA-dev/ -type f -name '*.py' -exec sed -i 's/moduleA/moduleA_dev/g' {} \;
は "moduleA" を変える、LIBA-devの中のすべての*の.pyファイルを変更します。
このコマンドには注意してください。これは危険です。なぜなら、moduleABという変数があると、moduleA_devBという名前に変更されます。実際には、moduleAB_devという名前が必要です。
(上記の警告に従う)、この変更を元に戻す、
find /path/to/LibA-dev/ -type f -name '*.py' -exec sed -i 's/moduleA_dev/moduleA/g' {} \;
あなたが名前空間を分離したら、あなたは循環依存関係が壊れました。 libA-devがうまくいれば、moduleA_dev.py - > moduleA.pyを変更し、 はあなたのコード内のmoduleA_dev - > moduleAへのすべての参照を変更することができます。
通常のソースコード管理ツールを使用して、安定した開発コードの構成を構築できないのはなぜですか?誰もがブランチを持つSVNでこれを行います。プログラミングもありません。なぜこれを行うためにSVNブランチを使用できないのですか? –
どの分岐がこれに関連しているのかわからないので、私は何をしようとしているのか理解するのを助けることを望んで、少し明確に質問をしました。 – abyx