ある水銀プロジェクトを別のプロジェクトで使用するためのベストプラクティスは何ですか?作業中のdjangoアプリがありますが、そのアプリを使用するWebサイトのバージョン管理にもMercurialを使用しています。水銀のサブリポジトリを見てきましたが、これは「最後の手段の特徴」と考えられているようです。やりたいことを行う良い方法はありますか?それとも、アプリの新しいバージョンに更新したいときに、アプリからWebサイトリポジトリにコードをコピーする必要がありますか?
1 に答える
あなたの特定のケースではpip
、djangoアプリケーションの依存関係を処理させたいと思います:http://guide.python-distribute.org/pip.html#installing-from-a-vcs
「Webサイト」リポジトリにaがrequirements.txt
あり、デプロイはpip install --upgrade -r requirements.txt
リポジトリから最新のものを取得してアプリケーションの仮想環境にインストールします。これにより、パッケージ管理をpipに任せながら、優れた柔軟性と分離が実現します。pip内のこれらのVCSURLを使用すると、同じ基になるリポジトリからの異なるリビジョンを使用する異なるサイトが必要な場合は、特定のタグまたはブランチを指すこともできます。
pipには-e /path/to/file
、Webサイトリポジトリの外部にある「編集可能な」クローンを指すモードもあります。これも機能しますが、私は試していません。
とはいえ、サブリポジトリがワークフローにより適していると思われる場合は、必ずそれらを使用してください。それらは問題なく動作しますが、ワークフローの制約に悩まされることがよくあります(「サブリポジトリもコミットしないと、親リポジトリをコミットできないとはどういう意味ですか?!」)