現在、ソフトウェアバージョン5.x.xから6.x.xへの切り替えを計画しています。このようなメジャーリリースには、私たちの場合、多くのリファクタリング作業とソフトウェアアーキテクチャの変更が含まれています。バージョン6(git)の新しいブランチを作成する代わりに、このためのカスタムリポジトリを作成することを考えました。一般に、新しいバージョンの開発は古いバージョンに基づいているため、コピーになります。
私の問題は、バグ修正といくつかのマイナーな変更が行われるため、バージョン5の開発が停止しないことです。しかし今、私は2つの別々のリポジトリに2つのバージョンを作成しています。コードをコピーせずに両方に変更を加える、または作業を2回行うための最良の方法は何ですか?効果的な方法はありますか?
たぶん、他の誰かが以前に同じ問題を抱えています。
このシナリオを処理する一般的な方法の1つは、トランク/ブランチの概念を使用することです。あなたがしていることは、単一のリポジトリを持ち、メンテナンスの理由で5.x.xバージョンを分岐することです。次に、新しい6.x.xの変更をすべてトランクに入れます。そうすれば、コードのすべてのバージョン履歴を維持できます。これにより、トランクに影響を与えることなく、古いバージョンをチェックアウトして、ターゲットを絞った修正を行うこともできます。
これは次のようになります。
|------branch (5.x.x)
|
----------------------------------------------------------------------Trunk (6.x.x)
その後、バージョン7.x.xが必要になった場合は、もう一度同じことを行うことができます。
|------branch (5.x.x)
| |---branch (6.x.x)
| |
---------------------------------------------------------Trunk (7.x.x)
いくつかのソリューションがgitと一緒にあります。私はそのような状況でgit-worktree
で良い経験をしました。マニュアルページからの抜粋:
Manage multiple working trees attached to the same repository.
A git repository can support multiple working trees, allowing you
to check out more than one branch at a time. With git worktree add
a new working tree is associated with the repository. This new working
tree is called a "linked working tree" as opposed to the "main working
tree" prepared by "git init" or "git clone". A repository has one main
working tree (if it’s not a bare repository) and zero or more linked
working trees.
ここに完全なコピー: https://git-scm.com/docs/git-worktree