web-dev-qa-db-ja.com

3段階の実装におけるMercurialトポロジー

数年前、今、私たちはMercurialに次のトポロジーを導入した私たちと一緒に働いていました...

Mercurial repository topography

メインリポジトリサーバーは当然のことながら、プライマリリポジトリを保持していますが、必要なリポジトリはlocalリポジトリに複製され、そこから1つ以上の作業フォルダー。

私はこの方法を見たことがありません。私の同僚のほとんどは、サーバーから作業フォルダーに直接複製するという単純なアプローチを使用する傾向があります。

このアプローチには、(不必要に複雑になる可能性がある以外に)長所または短所はありますか、あるいは、このような方法で実装する必要があるのはなぜですか。私はこのアプローチをオンラインで探すことを試みましたが、何も見つかりませんでした。

2
Paul

さまざまな理由で複数のローカル作業コピーを作成することの価値はわかりますが、図に示されているすべてが真のクローンである場合、中間の「層」のポイントはわかりません。

複数の作業フォルダを使用すると、タスクを相互に分離できるため、便利です。「作業」リポジトリのそれぞれが異なるブランチである場合や、同じブランチ内でも異なるタスクである場合があります。たとえば、他の作業が他の場所で進行しているときに、1つを使用して欠陥を追跡する場合があります。私はいつもこういうことをしています。

中間層が不要に見える理由は、「作業」リポジトリのそれぞれが「サーバー」に直接プッシュ/プルできるためです。ただし、中間層を介してそれを行うには、追加のプッシュ/プル手順が必要です。


ここで、別の解釈は、クローンがダイアグラム内のクローンであるかどうかによって異なります。 Mercurialには " share "コマンド(拡張子)もあり、クローンと同じように動作しますが、実際にはリポジトリの履歴全体を複製するのではなく、複数の作業フォルダにその1つのコピーを利用します。これらの「共有」は、通常のクローンのようにプッシュ/プルします。したがって、「作業」リポジトリがhg shareを使用して作成された場合、確かに利点があります。作成が迅速になり、使用するディスク容量がはるかに少なくなります。

つまり、「サーバー」から「ローカル」へのhg cloneとなり、ローカルから「仕事」へのhg shareとなります。

これが、特に図の配置について私が考えることができる唯一の正当な理由です。


個人的に私がすることは少し簡単です:

enter image description here

ローカルの作業用コピーの1つをサーバーの実際のクローンとして指定し、それを必要なだけ他のコピーと共有します。これは、柔軟性を犠牲にすることなく、可能な限り軽量であると思います。

4
UuDdLrLrSs