私が、コンパイル時間が非常に長い巨大なコードプロジェクトでgitを使用している多くの開発者の1人であると仮定します。
現在、私の個人的な日常の変更は通常制限されており、コードベースは適切にモジュール化されています。つまり、私の個人的な作業に関する限り、最初からコンパイルすることは、一度だけ支払う必要がある価格です。その後、変更したモジュールのみを再コンパイルできます。
一方、私が取り組んでいるブランチとは完全に異なるコードベースの状態を反映する(少なくとも2つの)ブランチのバグを修正しなければならないことがよくあります。これらの2つのブランチは、実際には開発チーム全体の作業の結果であり、多くの場合、モジュール全体が書き直されたり追加されたりします。バグ修正をプッシュする前にすべてをコンパイルしておくことは必須です。
私の最初のアプローチは、バグ修正が必要になるたびに開発ブランチから切り替えてから、クリーンアップ、バグ修正、最初から再コンパイル、プッシュ、元のブランチに切り替え、再度クリーンアップ、再コンパイルすることでした-これを行うための遅延は耐えられません。
次に、自分のマシンにコードベースの3つの別々のチェックアウトを保持するように移動しました。これにより、「コストのかかる再コンパイル」の問題が解決されます(すべてのブランチでの変更は再び増分になります)が、「今何を開発しているのか」という疑問が生じます。答えるのがより複雑になり(現在のディレクトリに依存するため)、これら3つのコピーの同期が複雑になります(これにより、実行する必要のあるすべてのルーチン//コマンドが3倍になりますpush
)。remote update
pull
より簡単な解決策は、チェックアウトがブランチを「離れる」たびにディレクトリの状態(追跡されていない、コンパイル済みファイルを生成する場所)を保存し、そのディレクトリが存在する場合は毎回その状態を呼び出す機能を持つことです。ブランチを「入力」(チェックアウト)します。
- この動作を実現するのに役立つgitコマンドはありますか?
- そうでない場合、それを可能にするツールはありますか?
- そうでない場合、gitはこの動作のスクリプトを作成するのに役立つチェックアウトフックを提供しますか?