数年間、私は自分が取り組んでいる複数のプロジェクトを管理する方法を探していました。ひとつひとつが何らかの形で異なりますが、アプリケーションのコアはすべてに共通しています。現在のプロジェクトでいくつかの新機能を実装したとき、後で別のプロジェクトでそれらを使用するのは困難でした。実際にその機能を見つけるには、多くのプロジェクトを検索する必要がありました。
その後、git が登場し、プロジェクトの管理を改善するのに大いに役立ちました。アプリケーション構造全体とコア ライブラリ、ツール、およびモジュールが実装されている 1 つのスケルトン プロジェクトを作成しました。これは、私が開始する新しいプロジェクトごとのベースです。次のようになります。
mkdir new_project
cd new_project
git init
スケルトンがマージする時間:
git remote add skeleton git@domain:skeleton.git
git fetch skeleton
git merge skeleton/master
ここでは、プロジェクトの調整、ini ファイルの変更、カスタム テンプレート、モジュール、プレゼンターなどの追加を行います。今、プロジェクトはそれ自身の人生を生きています。しばらくすると、更新されたスケルトンとマージされます。
git fetch skeleton
git merge skeleton/master --no-commit
スケルトンからプロジェクトへのすべての変更を確認したいので、 --no-commit オプションを使用します。
そして今、私の質問が来ます。骨格を維持する最良の方法は何ですか? スケルトンをベースとして各プロジェクトに新しい機能を追加する場合、現在のプロジェクトにのみ関連する機能があります。しかし、アプリケーションのコアには機能があり、次のプロジェクトでもそれらが必要になるため、それらをマージしてスケルトンに戻す必要があります。
git/merge またはその他の git コマンドで、スケルトンを維持する方法が見つかりませんでした。そのため、プロジェクトとスケルトンを手動で比較し (ただし、meld という優れたツールを使用)、スケルトン用の変更を適用してから、スケルトンにコミットしています。
プロジェクトをリモートとして追加し、プロジェクトをフェッチしてからスケルトンにマージするためにスケルトンを維持しようとしましたが、この方法では、プロジェクトのみのプロジェクトへのすべての変更がスケルトンに戻ってきて、無効です。