6

Pinax の開発中に発生する問題の 1 つは、外部アプリの開発バージョンを扱うことです。バージョン管理システムの導入を伴わない解決策を考え出そうとしています。理由は、考えられるすべてのバージョン管理システムを自分のシステムにインストールする (または貢献者にそれを強制する) 必要がなく、環境の作成中に発生する可能性のある問題に対処する必要がないからです。

この状況を考えてみましょう (Pinax の仕組みを理解することは理解に役立ちます):

新しいバージョンの Pinax の開発を開始しています。以前のバージョンには、明示的なバージョンが設定された pip 要件ファイルがあります。解決したい外部アプリのバグが発生しました。Pinax でそのバグ修正を取得するための現在のプロセスは、アプリを制御できると仮定して、アプリのマイナー リリースを作成することです。私たちが制御できないアプリは、アプリの作成者のリリース サイクルに対処するか、リリースを強制するだけです ;-) バグ修正のために常にマイナー リリースを作成するのはあまり好きではありません。アプリの新機能にも取り組んでいます。もちろん、古いバージョンのブランチは私たちが行っていることであり、必要に応じてバックポートを行います。

これについていくつかの考えを聞きたいです。

4

4 に答える 4

3

「==dev」バージョン指定子を使用してこれを処理できますか?PyPIのディストリビューションのページに現在の開発バージョンの.tgzへのリンクが含まれていて(githubとbitbucketの両方が自動的に提供するなど)、リンクに「#egg = project_name-dev」を追加すると、easy_installとpipの両方がそれを使用します.tgz==devが要求された場合。

これでは、「最新のヒント/頭」よりも具体的なものにピン留めすることはできませんが、多くの場合、それで十分でしょうか。

于 2009-11-10T06:29:51.987 に答える
3

質問する前に考えていた解決策は、Pinax PyPI を作成し、開発リリースを作成することでした。chishop のインスタンスを作成できます。私たちはすでに pip の --find-links を使用して、自分たちでリリースしなければならなかったパッケージの pypi.pinaxproject.com を指しています。

于 2009-11-10T07:40:16.103 に答える
1

ほとんどのオープンソースディストリビューター(Debians、Ubuntu、MacPortsなど)は、ある種のパッチ管理メカニズムを使用しています。つまり、次のようになります。リリースされた、tarボール、またはSCMスナップショットとして各パッケージのベースソースコードをインポートします。次に、キルトMercurial's Queuesなどのパッチマネージャーを使用して、その上で必要な変更を管理します。次に、各外部パッケージを、適用されたパッチと一貫した形式でバンドルします。または、基本パッケージへのURLと個々のパッチへのURLを用意し、インストール中にそれらを適用します。それは本質的にMacPortsが行うことです。

編集:さらに一歩進めるために、すべての外部パッケージ全体でパッチのセットをバージョン管理し、それを1つのユニットとして利用できるようにすることができます。これは、MercurialQueuesを使用して行うのは非常に簡単です。次に、問題を単純化して、1つのSCMシステムを使用して1セットのパッチを公開します。パッチは上記のようにローカルに適用されるか、開発者がベースリリースパッケージのコピーにプルして適用できます。

于 2009-11-10T06:30:26.513 に答える
0

編集:あなたの質問を正しく読んでいるかどうかわからないので、以下はあなたの質問に直接答えないかもしれません.

私が検討したがテストしていないのは、pip のフリーズ バンドル機能を使用することです。おそらくそれを使用して、Pinax でバンドルを配布するとうまくいくでしょうか? 私の唯一の懸念は、さまざまな OS がどのように処理されるかということです。たとえば、Windows で pip を使用したことがないため、バンドルが Windows でどのように相互作用するかはわかりません。

私が試してみたい完全なアイデアは、バンドルの管理を制御する paver スクリプトを作成して、ユーザーが新しいバージョンに簡単にアップグレードできるようにすることです。ただし、これには少し足場が必要です。

もう 1 つのオプションは、制御していないアプリのミラーを一貫した VC に保持し、ミラー バージョンを配布することです。これにより、「全員」がさまざまなプログラムをインストールする必要がなくなります。

それ以外は、唯一の本当の解決策はあなたたちがしていることのようです.私が見つけた手間のかからない方法はありません.

于 2009-11-10T06:52:01.557 に答える