スキップしてメイン コンテンツに移動

[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 ブランチ [+]       反映対象とするブランチ
(省略)


コメント

  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 については、これから利用していきたいと思っているので
      質問等させていただきます。

      削除

コメントを投稿

このブログの人気の投稿

Android ロックアプリを作る -調査編 -

Android 端末のスクリーンがOFFになると端末がロックされて、
スクリーンがONになるとロック画面が表示されます。

ロック画面は指の軌跡かパスワードを入力することで解除できます。

このロック画面をアプリとして作ってみたいと思い調査を始めることにしました。

調査の方針としては


色々なロックアプリをダウンロードしてみる。それぞれのパーミッションを見てみる。

という感じです。


色々なアプリをダウンロードしてみる。

まずはロックアプリ特集とかを探してみます。

Google 先生に聞いてみよう > Android ロックアプリ
結構出てきますね。


WidgetLocker LockscreenLockBot ProFロックスクリーン



それぞれのパーミッションを見てみる。

WidgetLocker Lockscreen



android.permission.VIBRATEandroid.permission.DISABLE_KEYGUARDandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.EXPAND_STATUS_BARandroid.permission.GET_TASKSandroid.permission.REORDER_TASKSandroid.permission.SET_PREFERRED_APPLICATIONSandroid.permission.WRITE_SETTINGSandroid.permission.WAKE_LOCKandroid.permission.CALL_PHONEandroid.permission.READ_SYNC_SETTINGSandroid.permission.GET_ACCOUNTSandroid.permission.READ_LOGSandroid.permission.SYSTEM_ALERT_WINDOWandroid.permission.WRITE_EXTERNAL_STORAGEandroid.permission.INTERNETandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATEcom.android.vending.CHECK_LICENSE
LockB…

携帯電話、タブレットの判定にピクセルではなくインチを使う

色々な案件に関わっていると、スマートフォンなのかタブレットなのかの判定をするためにピクセルを使用しているソースを見ることが多くあります。

幅、高さのそれぞれのピクセル数がある値を超えたらタブレットと判定する。


これはだめですよね

HTC j butterfly  はタブレットと判定されることが多くあります。




ディスプレイは約5インチ
w x h : 1080px x 1920px

5インチなので画面サイズが大きいということでタブレットという判定でもいいかもしれない・・・と思ったりしますが7インチ以上をタブレットと判定したい。。。




ピクセル数は画面のサイズ(インチ)とは違います。1080px x 1920px は5インチであるとは限りません。

i9220++ スマートフォン Android 4.0 3G GPS 5.2 インチ800万画素携帯(ブラック)

5.2インチ 画面解像度:960 x 540 pixels QHD screen


HTC j butterfly よりも画面サイズ(インチ)は大きいけれど、ピクセル数は少なくなってます。


ピクセル数で判定するのではなく、インチで判定したほうが正確ですね。



プログラムで画面サイズ(インチ)を計算してみましょう。

ディスプレイ情報を取得する ピクセル数(width, height)を取得するdpi (xdpi, ydpi) を取得する1インチあたりのピクセル数(dot per inch なのでドット数?) インチ(width, height) を計算する画面サイズ(インチ)を計算する
こんな流れになります。他に簡単に取得できる方法があれば教えていただけるとうれしいです。

Activity#onCreateに書きました

// ディスプレイ情報を取得する
final DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

// ピクセル数(width, height)を取得する
final int widthPx = metrics.widthPixels;
final int heightPx = metrics.heightPixels;

// dpi (xdpi, yd…

Mac の ターミナルから アプリをアンインストールする adb uninstall

ant uninstall でもいいんだけれど、ant プロジェクトじゃないこともあるのでメモ

adb uninstall パッケージ名
cVolume next をターミナルからアンインストールする場合
パッケージ名は jp.caldroid.cvolume40 なので

adb uninstall jp.caldroid.cvolume40
となる