[Mercurial]ブランチを作成する

Android アプリの開発では Mercurial を使用しています。

中央リポジトリからクローンしてローカルリポジトリを作成しました。
ブランチはdefaultのみです。

ローカルで default ブランチのまま作業を進めても問題はないのですが
ログが汚れるのが嫌いなので、ローカルリポジトリでは自分専用のブランチを作成することにしました。




自分専用のブランチは中央リポジトリにはプッシュしません。
ブランチ名は local_matsuda という名前にすることにしました。
一日に一回中央リポジトリから pull します。
pull して影響があるのは default ブランチなので自分専用のブランチは何も影響を受けません。
push するときは default ブランチに local_matsuda をマージします。マージというよりは rebase とか collapse とか・・・
必要がなくなった local_matsuda は close もしくは削除します。

中央リポジトリは汚れません。他の開発者の影響も受けにくくなります。
たまに競合することがあるというくらいでしょうか

ブランチを作成する

$cd ローカルリポジトリ
$hg branch local_matsuda
作業領域をブランチ local_matsuda に設定
(ブランチは永続的且つ共有されます。ブックマークはいかがですか?)


ブランチが作成されているか確認する

$hg branches
default                        5:21a8e1a88842

ブランチ一覧にはでてきてません。
コミットしないとブランチ一覧には出て来ません。

ブランチ作成をコミットする

$hg commit -m "ローカルブランチ作成"
$hg branches
local_matsuda                  6:6690f76d37c6
default                        5:21a8e1a88842 (非アクティブ


ブランチが作成されたことがわかります。
これで作業はローカルブランチで行うことができます。

default ブランチにローカルブランチの変更内容をマージする手順は別記事として作成します。

中央リポジトリに default ブランチだけをプッシュする

$hg push -b default

これでプッシュされるのは default ブランチのみだと思います。


$hg push --help
(省略)
-b --branch ブランチ [+]       反映対象とするブランチ
(省略)


4 件のコメント:

  1. マスターリポジトリへの反映時に rebase or collapse ということは、
    手元の変更履歴(= 試行錯誤過程)を反映させたくないのだと思いますが、
    そのようなケースでは、MQ の利用を検討してみるのもよろしいかと。

    変更のベースとなるリビジョンへの追従も容易です。

    複数の作業を並行して実施したい場合は、"hg qqueue" によって、
    複数のキューを管理可能です。

    なお、MQ パッチを適用したまま push した際に、うっかり履歴が反映
    されないように、phase に関する設定をしておくことをお勧めします。

    http://d.hatena.ne.jp/flying-foozy/20120202/1328188714

    返信削除
    返信
    1. コメントありがとうございます。

      試行錯誤の過程を反映させたくない
      というのがそのとおりですね。

      頭がぼーっとしているときに「とりあえずコミットしてから寝る・・・」なんてことをよくやります。

      MQ については理解不足なので色々と試してみます。

      貴重な情報有り難うございました。

      削除
  2. Mercurial に関する質問や、予期せぬ挙動等に遭遇した際には、
    #mercurialjp 付きツイートや、日本語 ML 宛に投函して頂ければ、
    可能な範囲で回答/調査しますので、よろしくお願いします。

    https://twitter.com/#!/search/realtime/%23mercurialjp
    https://groups.google.com/group/mercurial-ja?hl=ja

    返信削除
    返信
    1. 情報有り難うございます。

      Twitter や ML を利用するという発想が最近なくなってました。
      Mercurial については、これから利用していきたいと思っているので
      質問等させていただきます。

      削除