Differences between revisions 4 and 5
Revision 4 as of 2008-01-15 23:26:12
Size: 8451
Editor: abuehl
Comment: #language ja
Revision 5 as of 2009-05-19 19:30:57
Size: 8451
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
このページは ["UnderstandingMercurial"] の翻訳です。 このページは [[UnderstandingMercurial]] の翻訳です。
Line 7: Line 7:
順を追った説明は ["JapaneseTutorial"] を参照してください。

[[TableOfContents]]
順を追った説明は [[JapaneseTutorial]] を参照してください。

<<TableOfContents>>
Line 262: Line 262:
["JapaneseTutorial"] を参照してください。 [[JapaneseTutorial]] を参照してください。

このページは UnderstandingMercurial の翻訳です。

新規ユーザは Mercurial の分散開発モデルに混乱するかもしれません。 このページでは、いくつかの基本概念を解説しようと思います。 順を追った説明は JapaneseTutorial を参照してください。

リポジトリにあるもの

Mercurial のリポジトリは、 store と作業領域ディレクトリの対を持っています。

store は、プロジェクトの完全な履歴を格納しています。 唯一中央にのみ履歴のコピーを持つ旧来の SCM 類と異なり、 全ての作業領域ディレクトリは、 履歴のプライベートなコピーを持っています。 これにより、開発を並列に行うことが出来ます。

作業領域ディレクトリは、 指定された時点(例えば rev 2) におけるプロジェクトファイルのコピーを持っており、 それらを編集することが出来ます。 タグや無視するファイルに関する設定もリビジョン管理されているので、 それらの情報も含まれています。

変更のコミット

コミットの際には、 parent (親)リビジョンに対する作業領域ディレクトリの相対的な状態が、 新たなリビジョンとして記録されます。

rev 4 は、 作業領域ディレクトリの(parent)リビジョンであった rev 2 に対するブランチである点に注意してください。 コミットにより、rev 4 がその時点での作業領域ディレクトリの parent リビジョンになります。

リビジョン、チェンジセット、head および tip

Mercurial は、複数のファイルに対する関連する変更を、 単一不可分なチェンジセットに分類し、 これらがプロジェクト全体におけるリビジョンとなります。 これらはそれぞれ一連のリビジョン番号を持ちます。 Mercurial は分散並行開発を許容しているので、 ユーザー間でこれらの番号が食い違う可能性があります。 そのため、Mercurial は各リビジョンにグローバルな チェンジセット IDを割り当てます。 チェンジセット ID は 40 桁の 16 進数ですが、 "e38487" のように、紛らわしさのない長さまで省略可能です。

履歴中のブランチの分岐やマージは、任意の時点で発生し得ます。 マージされない個々のブランチは、 履歴中に新規のheadを形成します。 この例では rev 5 および rev 6 が head です。 Mercurial は、 最もリビジョン番号の大きい head として、 rev 6 をリポジトリの tip とみなします。

複製、変更、マージおよび pull

以下のような store を持つユーザ Alice として作業を始めましょう。

Bob がこのリポジトリを複製(clone)すると、 Alice の store の完全なコピーを得ることが出来ます (但し、Bob の作業領域ディレクトリは、Alice のものからは独立しています)。

次に、Bob は幾つかの変更をコミットします。

それとは並行して、 Alice は自身の変更を加えます。

Bob が同期のために Alice のリポジトリから pull(引き寄せ) します。 pull により Alice の全ての変更が Bob のリポジトリにコピーされます。

Alice の g が Bob のリポジトリにおける最新の head なので、 この時点で gtip となります。 Bob が作業を行っていた直近の変更(f)と tip をマージし、 結果をコミットすることで、Bob のリポジトリは以下のような状態になります。

この時点で Alice が Bob のリポジトリから pull した場合、 Bob の持つ e、f および h の変更が取得され、 二人のリポジトリは完全に同期されます。

非集中型システム

Mercurial は完全な非集中型のシステムですので、 中央リポジトリといった内部概念がありません。 そのため、変更を共有するための伝播経路を、 ユーザが自由に定めることができます。

Mercurial 利用に関する実践的な入門は、 JapaneseTutorial を参照してください。

訳注

履歴情報を格納する store は、 単なる「格納領域」以上のニュアンスがあるため、 原文の表記をそのまま残しました。

CVS や Subversion といった他の SCM ツールによって、 既に一般化したと思われる語(e.g.: branch、commit、merge 等) に関してはカタカナ表記としましたが、 Mercurial 固有の(あるいはコマンド名を意識した)ものに関しては、 原文の表記をそのまま残しました(e.g.: parent、head、tip 等)。

parallel は計算機科学的には「並列」ですが、 言い回しが不自然になるので「並行」としました。


CategoryJapanese

JapaneseUnderstandingMercurial (last edited 2013-04-05 16:20:43 by YuyaNishihara)