Commits

Takumi IINO committed 305c924

作業フローの項を追加

  • Participants
  • Parent commits f032243

Comments (0)

Files changed (1)

File source/index.rst

 .. _`優れたチェンジセットコメントの書き方`: http://mercurial.selenic.com/wiki/JapaneseChangeSetComments
 .. _`Mercurialのコメントの作法`: http://mercurial.selenic.com/wiki/ContributingChanges#Patch_descriptions
 
+作業フロー
+----------
+
+作業領域の準備
+^^^^^^^^^^^^^^
+まず最初に、Mercurialで利用するユーザ名を教える必要があります。$HOME/.hgrcを編集してユーザ名を設定しましょう。
+
+  ::
+
+    $ cat $HOME/.hgrc
+    [ui]
+    username = Your Name <your.name@example.com>
+
+中央リポジトリを複製(hg clone)するところからMercurialの作業は始まります。
+
+  ::
+
+    # 中央リポジトリを複製して自分用の作業領域を作成する
+    $ hg clone http://url/to/remote/repository WORKING_SPACE
+    $ cd WORKING_SPACE
+
+複製した時点で、作業領域はdefaultブランチの最新のリビジョンとなっています。必要が有ればhg update作業するブランチに移動します。
+
+  ::
+
+    # defaultで作業しない場合は移動する
+    $ hg update WORKING_BRANCH
+
+中央リポジトリを利用しないでリポジトリを新規作成する場合はhg initを利用します。
+
+  ::
+
+    # リポジトリを新規作成
+    $ hg init WORKING_SPACE
+    $ cd WORKING_SPACE
+
+編集とコミット
+^^^^^^^^^^^^^^
+作業領域のファイルを編集したり、ファイルを追加したりいろいろ作業しましょう。
+
+  ::
+
+    $ (なにかファイルを編集)
+    $ (なにかファイルを追加)
+    # 追加したファイルをmercuiralで管理する
+    $ hg add FILE_NAME
+
+コミットする前に現在のリポジトリの状況を確認しましょう。
+
+  ::
+
+    # ファイルの状態を確認
+    $ hg status
+    # 差分表示
+    $ hg diff
+
+編集内容の確認が出来たらコミットします。
+
+  ::
+
+    $ hg commit
+    (コミットメッセージを入力します)
+
+  .. note::
+
+    チケット駆動開発などを行っている場合は作業する前に作業ブランチを切ります。
+
+    具体的には次の様な作業を行います。
+
+    ::
+
+      $ hg branch
+      develop
+      $ hg branch issueXXX
+      $ hg commit -m "start issueXXX branch"
+      $ (何か作業)
+      $ hg commit
+      (コミットメッセージを入力します)
+      $ hg up develop
+      $ hg merge issueXXX
+      $ hg commit -m "merge with issueXXX"
+
+変更の取り込みと変更の反映
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+自分の作業が完了したら、変更を反映させます。
+
+お作法としては変更を反映させる前に、まず複製元リポジトリ(通常は中央リポジトリ)の変更を取り込みます。
+
+  ::
+
+    # まず変更を取り込みましょう
+    $ hg pull
+
+変更を取り込むとマルチプルヘッドが出来たり出来なかったりします。マルチプルヘッドが出来た場合は変更を反映させることが出来ません。
+
+  ::
+
+    # マルチプルヘッドが出来た場合は変更を反映させることが出来ません
+    $ hg push
+    pushing to http://url/to/remote/repository
+    searching for changes
+    abort: push creates new remote heads on branch 'default'!
+    (did you forget to merge? use push -f to force)
+
+メッセージにあるとおりhg push -fを利用すれば無理矢理変更を反映出来ますが、たぶんあなたは開発チームから白い目で見られると思います。
+
+マージしましょう。
+
+  ::
+
+    # マージしよう
+    $ hg merge
+    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+    (branch merge, don't forget to commit)
+    # マージをコミット
+    $ hg commit -m "merge"
+
+さて、ここまで出来たら改めて反映させます。
+
+  ::
+
+    # 変更を反映
+    $ hg push
+    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+    (branch merge, don't forget to commit)
+    # マージをコミット
+    $ hg commit -m "merge"
+
+  .. note::
+
+    中央リポジトリへの hg push -f を禁止したい場合は `Mercurial でセントラルリポジトリのマルチプルヘッドを禁止する`_ を参考にしてください。
+
+    .. _`Mercurial でセントラルリポジトリのマルチプルヘッドを禁止する`: http://labs.timedia.co.jp/2011/09/reject-multiple-head.html
+
 おまけ
 ------