小さなコード変更が必要な場合、サードパーティの Django アプリを Djano プロジェクトに取り込むにはどうすればよいですか? 次のことができる必要があります。
- アップストリームの変更をマージする
- 新機能/改造のプル リクエストを送信する
- 変更したアプリを複数のプロジェクトで使用する
- Django プロジェクトで変更したアプリをデプロイできる
- 物事を非公開にする(オプション)
既存のセミソリューション
このトピックには多くの混乱があるようです。私が提案していると思われる方法は次のとおりです。
方法 1 - pip/virtualenv - プロジェクトを別のリポジトリに保持し、それを Python パスに追加します。利点: コードを別々のプロジェクトにきれいに分割することで、おそらく全体的にわかりやすくなり、複雑さが軽減されます。 欠点: ローカルで開発する場合、依存関係を更新するために、より複雑な管理が必要になります。
2 - git submodule - サブモジュール モジュールを使用してコードを Django プロジェクト ディレクトリに取り込みます。長所: 実際には機能しているように見えますが、サブツリーはこの Django アプリのケースをうまく処理できません 短所: より複雑な展開
3 - git subtree - サブツリー モジュールを使用してコードを Django プロジェクト ディレクトリにプルします。私はこれをもっと自分で調べました。ここで見ることができますhttp://projects.madteckhead.com/django-superproject-3rd-party-git-repo-subdirectories-mapped-mapped-to-apps/ 利点:コードと履歴が保持されますDjango プロジェクト、簡単な展開、共同作業者の複雑さの軽減。短所:サブディレクトリまたはレポをプロジェクトのサブディレクトリに「マウント」できないようです。可能であれば...アップストリームの変更をマージする方法を理解できませんでした。
4 - 問題のサードパーティ アプリを django プロジェクトのアプリ ディレクトリにコピーします。長所: シンプル 短所: 簡単に変更をマージしたり、プル リクエストを送信したりできない
問題は、Python パッケージが実際にはリポジトリのサブディレクトリにアプリを持っていることです。例 thirdpartyapp/ thirdpartyapp/setup.py thirdpartyapp/thirdpartyapp/[対象のコードはすべてここにあります]
質問
複数のサードパーティのdjangoアプリをdjangoプロジェクトに最適に組み込み、それらに変更を加えたり、アップストリームの変更をマージしたりする方法を誰でも明らかにできますか。
私はクリーンなワークフローに本当に感謝しています.Djangoで使用するアプリに貢献することは、私にとって大きな障壁の1つでした.
どうもありがとう、