web-dev-qa-db-ja.com

別のリポジトリでソフトウェア開発のメジャーバージョンステップを作成

現在、ソフトウェアバージョン5.x.xから6.x.xへの切り替えを計画しています。このようなメジャーリリースには、私たちの場合、多くのリファクタリング作業とソフトウェアアーキテクチャの変更が含まれています。バージョン6(git)の新しいブランチを作成する代わりに、このためのカスタムリポジトリを作成することを考えました。一般に、新しいバージョンの開発は古いバージョンに基づいているため、コピーになります。

私の問題は、バグ修正といくつかのマイナーな変更が行われるため、バージョン5の開発が停止しないことです。しかし今、私は2つの別々のリポジトリに2つのバージョンを作成しています。コードをコピーせずに両方に変更を加える、または作業を2回行うための最良の方法は何ですか?効果的な方法はありますか?

たぶん、他の誰かが以前に同じ問題を抱えています。

2
BendEg

このシナリオを処理する一般的な方法の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)
8
barrem23

いくつかのソリューションが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

2
silvio