プロジェクト内で Atmosphere の既存のパッケージをフォークするための最良の/最もクリーンな方法を見つけようとしています。既存のパッケージを変更する必要があり、フォークすることを余儀なくされたことが何度かありました。
私が知る限り、次のオプションが存在します。残念ながら、これらにはそれぞれ独自の問題があり、私はまだ完全な解決策を見つけていません。例として使用meteor-router
します:
1.パッケージファイルをパッケージフォルダーにコピーするだけです
手順:
- 削除する
packages/router/.git/
packages/.gitignore
「ルーター」行を編集して削除します- ルーターを取り外します
smart.json
- プロジェクト リポジトリに追加
packages/router
してコミットする - ここで変更を加えます (この方法では、最初のコミットはクリーン バージョンであり、変更内容を自分で解決できます)
利点:
- 達成しやすく、理解しやすい
- 依存するすべてのコードは、プロジェクト リポジトリで見つけることができます
短所:
- 元のリポジトリの履歴がすべて失われます
- 新しいバージョンに更新するのは難しい
- 変更を元のプロジェクトに戻すのは難しい
最も単純なパッケージ以外では、これを考慮しないでください!
2. github で fork してから ...
github でパッケージをフォークするには、smart.lock
ファイルをチェックして、どのリポジトリが使用されているかを確認できます。そのリポジトリの github ページに移動し、フォークします。
次に、次の 3 つのオプションがあります。
2a. git サブモジュールとして追加します。
git サブモジュールの詳細: http://git-scm.com/book/en/Git-Tools-Submodules
手順:
- サブモジュールを初期化/作成/更新する方法については、上記のリンクを参照してください
- からパッケージを削除します
smart.json
利点:
- サブモジュールのバージョンはプロジェクトに接続されています
- 変更はすぐに反映されます
短所:
- すべての開発者は
git submodule init
、最初に実行しupdate
て更新する必要があります - チェックアウトを編集するときは、サブモジュールの問題に注意する必要があります
- サブモジュールに関するその他の問題について読む
2b. プロジェクトsmart.json
を編集してバージョンを使用する
手順:
- で、空の
smart.json
を見つけ"router": {}
て追加します。"git": "https://github.com/USER/meteor-router.git"
{}
"branch"
オプションで、またはを追加し"tag"
ます。
利点:
- Meteorite を使用して外部パッケージを管理できます
- 他の開発者や展開環境で自動的に機能します
短所:
- パッケージ フォルダー内のコードは、git リポジトリではないため、編集できません。
- Meteorite は、実行するたびに自動的に最新バージョンに更新されるわけではありません
(提案された Meteorite の改善: Python の pip が「-e」パラメーターの使用を許可するように、パッケージを編集可能な形式でインストールできるようにします)
2c。プロジェクトの外部でクローンを作成し、に追加し"path"
ますsmart.json
手順:
- プロジェクト外の場所にパッケージを複製します
- 2b と同様に、Meteorite をローカル チェックアウトにポイントするには、a を追加
"path"
します。smart.json
利点:
- パッケージは自由に編集でき、Meteor は自動的に変更を反映します。
短所:
- これをコミットする
smart.json
と、他のすべての開発/展開環境が壊れる可能性が高くなります...
どの方法を使用しますか? その方法の欠点をどのように回避しますか?
これらのソリューションでいくつかの問題を見逃した可能性があります。