virtualenv タグの一覧です(1 件)

[Python]virtualenvwrapperでworkonしたら自動的にプロジェクトフォルダに移動してついでにgitのリモートリポジトリの更新をチェックする

人生も折り返しを過ぎると脳の劣化が激しくて異常なくらい物忘れが起こるのですが、最近は自宅でこのブログなんかをカスタマイズしてbitbucketにpushしておいたことを会社ですっかり忘れてて昼休みとかに作業始めちゃって途中で気づいて慌てることが頻繁にあります。

作業始める時にリモートリポジトリを確認することを忘れないとかはもう無理なので、そのかわりプロジェクトフォルダでworkonしたらオートマチックにgitのリモートリポジトリの更新をチェックする(git fetch)ようにしました。

workonしたら自動的にプロジェクトフォルダに移動する

virtualenvwrapperのマニュアルにあるsetvirtualenvprojectを参考に

まずプロジェクトフォルダを作成します(プロンプトが可愛いのは気にしないで下さい)

aoshiman ~/dev(*'-') <mkdir testproject

次にtestというvirtualenvを作成し、その後testprojectフォルダに移動します。

aoshiman ~/dev(*'-') <mkvirtualenv test
New python executable in test/bin/python
Installing setuptools.............done.
Installing pip...............done.
Cleaning up...
(test)aoshiman ~/dev(*'-') <cd testproject/

testというvirtualenvにいる状態でsetvirtualenvprojectコマンドを実行して、testprojectフォルダとtestというvirtualenvを紐つけます

(test)aoshiman ~/dev/testproject(*'-') <setvirtualenvproject
Setting project for test to /Users/aoshiman/dev/testproject

いったんdeactivateし、ホームディレクトリに移動した後、workonしてみるとtestprojectフォルダに移動していることが確認出来ます。

(test)aoshiman ~/dev/testproject(*'-') <deactivate
aoshiman ~/dev/testproject(*'-') <
aoshiman ~/dev/testproject(*'-') <cd
aoshiman ~(*'-') <workon test
(test)aoshiman ~/dev/testproject(*'-') <

activateしたら自動的にgit fetchする

これはvirtualenvwrapperのhookscriptを使用します。

先程同様virtualenvwrapperのマニュアルにあるpostactivateを参照に以下の様に記述します。

aoshiman ~/dev/testproject(*'-') <cat ~/.virtualenvs/test/bin/postactivate
#!/usr/local/bin/zsh
# This hook is run after this virtualenv is activated.

/usr/local/bin/git --git-dir=$HOME/dev/test/.git --work-tree=$HOME/dev/test fetch

postactivateはグローバルとローカルにあります。全てのvirtualenvのactivate時にhookを適用する必要は無いはずなのでローカルに記述します。

多分これでやりたいことは実現できたと思います(fetchする時間分待たされるるけど仕方ないかな)。

PAGE TOP