32

私の SVN リポジトリには、リリース サイクルが異なるプロジェクトがいくつかあります。リリースは、SVN の従来のタグ構造を使用して作成されます。リリースで修正すべきバグがある場合、タグからブランチが作成され、バグが修正され、そこからトランクにマージされます。

現在、複数の理由から、SVN から mercurial に切り替えて、中央のプッシュ サイトを使用したいと考えています。

質問: ほとんどコードを共有しない複数のプロジェクトを Mercurial で編成するのに最適な方法はどれですか? プロジェクトごとに 1 つずつ、複数のプッシュ サイトを作成する必要がありますか?

私のリリースタグ、バグ修正ブランチなどを再作成する方法についての説明を回答に含めてください...お好みのバージョンのリポジトリ設計を使用してください。

編集:できるだけ少ない拡張機能をインストールしたいと思います。

編集2:

この SVN レイアウトを考えると:

.
|-- project-a
|   |-- branches
|   |   |-- 1.x
|   |   `-- feature-1
|   |-- tags
|   `-- trunk
`-- project-b
    |-- branches
    |-- tags
    |   |-- 1.0
    |   `-- 1.1
    `-- trunk

(ありがとう @bendin! :) )

複数の hg push リポジトリで作業する方が良いですか

project_a-trunk
project_a-1.x
project_a-feature-1
project_b-trunk

枝のために。タグは適切なブランチに折りたたまれます。

または、この例では 2 つのプッシュ リポジトリを使用しますか?

project_a
project_b

名前付きブランチを使用するため、1 つのリポジトリ内に複数のヘッドがあります。

複数のヘッド リポジトリの利点は、複数のリポジトリでタグを探しに行く必要がないことです。私が見る不利な点は、hg book が複数のヘッドリポジトリを思いとどまらせるように見えることです。あなたは何をしますか?

4

3 に答える 3

12

一部の Subversion リポジトリは、論理的に無関係なもの (つまり、バージョン番号とリリース サイクルが異なるプロジェクト) を 1 つのトランクの下にグループ化します。

.
|-- branches
|   |-- project-a-1.x
|   `-- project-a-feature-1
|-- tags
|   |-- project-a-1.0
|   |-- project-b-1.0
|   `-- project-b-1.1
`-- trunk
    |-- project-a
    `-- project-b

この種のレイアウトは、Mercurial に直接類似するものはありません。独自のリリース サイクルと独自のバージョン番号を持つ各プロジェクトには、独自のリポジトリが必要です。

一部の Subversion リポジトリは、各プロジェクトに独自のトランク、タグ、およびブランチを与えることで、これを行うように構成されています。

.
|-- project-a
|   |-- branches
|   |   |-- 1.x
|   |   `-- feature-1
|   |-- tags
|   `-- trunk
`-- project-b
    |-- branches
    |-- tags
    |   |-- 1.0
    |   `-- 1.1
    `-- trunk

各プロジェクトは、物理的な Subversion リポジトリ内の論理リポジトリと考えることができます。各プロジェクトには、独自のトランク、タグ、およびブランチがあります。これには、タグとブランチがどのプロジェクトに属しているかが既にわかっているため、タグ名とブランチ名を短くできるという利点もあります。

このレイアウトもマーキュリアルのようなツールで表現するのは簡単です。各「プロジェクト」は Mercurial リポジトリになります。そのリポジトリ内のタグとブランチは、そのプロジェクトのタグとブランチです。

于 2009-05-30T10:59:57.393 に答える
8

ベンディンが言うように、最初は独立したプロジェクトごとに 1 つずつ、複数のリポジトリを作成する必要があります。

Mercurial コミットはリポジトリ全体のレベルで行われ、単一のサブディレクトリだけをチェックアウトすることはできません。これは、一部のファイルのみをコミットすることで一貫性のないコミットを行うことができる Subversion とは異なりますが、単一のサブディレクトリのみをチェックアウトすることもできます。

リリースを作成するときは、通常、タグを Mercurial リポジトリ ( hg tag) に追加します。リリースごとにバグ修正リポジトリを保持するかどうか、最初に必要になったときに作成するかどうかは自由に決めることができます。トリックはそれです

% hg clone -r 1.0 project-a project-a-1.0.x

project-a-1.0.xタグまでの履歴のみを持つリポジトリを作成するために使用できます1.0。その後、 でバグを修正して、project-a-1.0.xに戻すことができproject-aます。project-a-1.0.xリポジトリでさらにバグ修正を行うことができます。

于 2009-05-30T15:19:42.580 に答える
2

マーキュリアル フォレスト エクステンションを試してみたいと思います

于 2009-05-30T10:49:48.647 に答える