ソース管理ソフトウェアで2つのプロジェクトをマージする適切な方法は何ですか


8

私は自分のプロジェクトを維持するためにFossil-SCMを使用しています。私はチームで働いていないので、通常は非常に直線的な開発ブランチを持っています:1.0-> 1.1-> 1.2

関連するプロジェクトにタスクが与えられるプロジェクトが1つある場合、その手順はどうなるのだろうと思います。そして、それによって最初のプロジェクトを時代遅れにレンダリングします。ほとんどのコードを書き直しがちですが、既にコードを書いたことを覚えていない場合でも、コードをアーカイブしたままにしておきたいと思います。そして、私は死んでいるだけの化石レポを持っていません。マージできますか?これはこれを処理する適切な方法ですか?

たとえば、コードはHTMLページをフォーマットするためにExcelファイルからデータを抽出していました。今、私は私の雇用者が彼らのExcelスプレッドシートをデータベースに移動して、冗長性を減らし、効率を上げ、やる気を増すことを確信しました。これで、データベースを使用してプリフォームするためにフープをジャンプする必要がない論理クエリを実行できるようになったので、元々Excelファイルを操作していた余分なVBSファイルは必要ありません。技術的には、既存のコードの一部を現在の新しいプロジェクトに移植します。

すでに独自のトランクを持っているので、別のプロジェクトのトランクをこれに結合することをお勧めします。どうすれば正確にそれを行うことができますか?

私のツリーは次のようになると思います。この逆ツリーに似たソフトウェア分岐の例を見たことがないので、このような状況の標準はどうなっているのでしょうか。 1.8でマージ!!


4
サウンドはあなたが物事を複雑にしています。「死んでいる化石レポ」の何が悪いのでしょうか?「死んだ」を「アーカイブされた」に置き換えれば、それほど否定的に聞こえなくなります。
Doc Brown

4
以前にMercurialでこれを行ったことがあります。私のアドバイスは、古いプロジェクトをある時点でアーカイブ済みとしてマークし、必要なリソースを新しいプロジェクトにコピーすることです。古い履歴が本当に必要ない場合は、両方のプロジェクトをマージします。
Timoteo Ponce 14

何がマージを妨げていますか?マージしても、古いトランクはそのまま残ります。マージ枝を削除しません、それだけで分岐Bに分岐Aからファイルをマージ
NickL

マージを妨げているのは、2つの異なる化石a.fossilとb.fossilがあるため、すべての履歴とチェックイン情報を2番目の化石に表示する方法がわからないためです。私ははるかに年を取っているので、問題は2つのリポジトリを1つにマージする方法です。
マロー

回答:


1

プロジェクトをマージする最善の方法は、プロジェクトの履歴をどのように管理するか、およびプロジェクトが個別に進化し続けると期待するかどうかによって多少異なります。

それらを別々にしてください-外部/サブモジュールを使用してください

考慮すべき非常に良いテクニックはサブモジュールのテクニックでしょう。Gitとsvnにはこの概念(svnでは外部と呼ばれる)がありますが、残念ながらfossilにはないようです(https://www.mail-archive.com/fossil-users@lists.fossil-scm.org/msg14798.html)。

しかし、アイデアは、プロジェクトを別のプロジェクトに依存させることができ、参照するプロジェクトで使用する他のプロジェクトから、どのブランチまたはタグ、あるいは個々のコミットを選択するだけであるということです。

コピーするだけ

コードの束を持ち上げるだけで、履歴を気にしない場合は、新しいコードを含むフォルダーを追加して、コミットするだけです。

古い履歴をコピーするだけで保持します

2番目のプロジェクトのコードを最初のプロジェクトにマージし、履歴を保持したい場合は、少なくともgitを使用すると、git mergeを使用できます(https://saintgimp.org/2013/01/22/merging-two-gitを参照) -repositories-into-one-repository-without-losing-file-history /の例)。gitは、マージ元のデータのソースとして他のリポジトリをターゲットにすることを許可します(これは基本的にgit pullが機能する方法です)。化石のマージがこの方法で使用できるかどうかについては、化石については十分に知りません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.