Git のトピックブランチで開発している時に、他のブランチを同時にチェックアウトしておきたくなる事がままある。
いったんテンポラリコミットを作ったり、あるいは stash したりして作業ツリーを保存してチェックアウトしなおして用事を済ませて元に戻すとかはやるのだけれど、ちょっと面倒。3番目のケースは同時にチェックアウトしたいのでこの方法だと駄目だし、4番目のケースだとしばらくそのままにしておかないのでもっと困る。
そのような時はローカルリポジトリから別ディレクトリへ clone して、そちらをサブで使ったりするんだけれど、サブの方でちょっと修正したりした際にローカル間で push/pull とかしなければならなくてこれまた面倒。
なんかいいのないかなと思ったら Git の contrib に git-new-workdir というのがあるのを昨日知った。
git-new-workdir . ../sub あるいは git new-workdir . ../sub
で作業ツリーを新しく作れる。/tmp/git/main を /tmp/git/sub に new-workdir すると sub の方の .git の中は
drwxr-xr-x 3 naney naney 4096 1月 30 00:37 . drwxr-xr-x 3 naney naney 4096 1月 30 00:37 .. -rw-r--r-- 1 naney naney 23 1月 30 00:37 HEAD lrwxrwxrwx 1 naney naney 25 1月 30 00:37 config -> /tmp/git/main/.git/config lrwxrwxrwx 1 naney naney 24 1月 30 00:37 hooks -> /tmp/git/main/.git/hooks -rw-r--r-- 1 naney naney 104 1月 30 00:37 index lrwxrwxrwx 1 naney naney 23 1月 30 00:37 info -> /tmp/git/main/.git/info drwxr-xr-x 2 naney naney 4096 1月 30 00:37 logs lrwxrwxrwx 1 naney naney 26 1月 30 00:37 objects -> /tmp/git/main/.git/objects lrwxrwxrwx 1 naney naney 30 1月 30 00:37 packed-refs -> /tmp/git/main/.git/packed-refs lrwxrwxrwx 1 naney naney 23 1月 30 00:37 refs -> /tmp/git/main/.git/refs lrwxrwxrwx 1 naney naney 26 1月 30 00:37 remotes -> /tmp/git/main/.git/remotes lrwxrwxrwx 1 naney naney 27 1月 30 00:37 rr-cache -> /tmp/git/main/.git/rr-cache lrwxrwxrwx 1 naney naney 22 1月 30 00:37 svn -> /tmp/git/main/.git/svn
のような感じで HEAD と index と logs/HEAD 以外はもとのローカルリポジトリへのシンボリックになっている。なので sub での checkout や index の Git 操作など以外は main の方へ反映されるようになっている。わざわざ push/pull しなくて良いのでこれは楽ちん。もちろん作業ツリーはそれぞれ独立しているので、例えばサブの方で Web サーバを起動しておいたり時間のかかるフルテストを走らせておくとかもできる。
ただ複数チェックアウトして作業していると、気がつくと Emacs で違うほうの作業ツリーのファイルを開いて編集していたりして「あれ? 変更したけれどなぜか反映されない……」とかやっちゃうので(実際やった)ちょっと注意が必要ではある。
git-new-workdir は contrib の中(Debian GNU/Linux sid だと /usr/share/doc/git/contrib/workdir/git-new-workdir)にあるみじかいシェルスクリプトなので適当に PATH の通ったところにコピーして実行権限を設定しておけば OK。
Git はこういうところがカワイイよね。
一昨日5月28日に国内発売になった Chromecast、その日の 9:00 過ぎに Google Play で注文したのが今日到着した。ヤマト国際物流香港から羽田小口通関支店を通過しての配送*1。
3年前半前に購入した REGZA 37Z1 の背面の HDMI 端子に直挿し。横に並んでいる他の HDMI ケーブルと干渉せずに挿せた。REGZA 37Z1 は外付け HDD 用とは別にもう1つ USB 端子があるので Chromecast の電源は付属のケーブルでそこから得るようにした。AC アダプタのオン・オフとか考えなくて良いので手間なし。
Android デバイスに Chromecast アプリをインストールして、そこからセットアップ。特に迷うことは無いかな。Chromecast の Wi-Fi は 2.4GHz のみなので AtermWR9500N の 2.4GHz 側のアクセスポイントを選んで(というか 5GHz 側のは候補に表示されない)、パスワードを入力して設定完了を待てば OK。
Chromecast に Google アカウントを登録してそのアカウントで各種サービスを視聴するのだとてっきり思っていたのだけれどそうではないのね。コントロールする側がそれぞれのアカウントで再生したものが、Chromecast で再生されるだけなのか。それは良かった。自分のメインアカウントと、iPad 2 に設定してある家庭用のアカウントで、それぞれの再生リストや履歴をもったままにしておけるので気をつかわなくて良い。
ThinkPad X200 の Debian GNU/Linux sid 上の Google Chrome に Google Cast 拡張機能を入れてタブキャスト。とりあえずブラウズ画面は問題なく表示できた。
あと「画面全体をキャスト」もきちんとできた。ちょっとラグがあるのとファンがガンガン回るというのああるけれど。ThinkPad X200 のプロセッサが「インテル Core 2 Duo プロセッサー P8600 (2.40GHz 1066MHz 3MBL2)」なのでちょっとギリギリなのかな。Linux 側で静止画をスライドショーしてテレビで見る分には問題なし。
動画再生用 X クライアントで動画を再生している状態で「画面全体をキャスト」してもサウンドは送られないようなのでそういう動画の見方は今は無理げ。PC 側で音は出るけれど、テレビ側では遅れて映像が流れるのでタイミングが合わない。
ということで、当面は iPad 2 で YouTube を大画面で観るというのがメインの用途かな。iPad 2 だと一緒に観るには2人ぐらいまでで3人以上だとちょっと観にくいなと思っていたのでそういう時に使おう。当然だけれど解像度が低かったり圧縮ノイズが酷いのは大きな画面で観るとツラさ倍増なのでできればきちんと選別してゆっくり見たいところ。
あと、テレビの裏が埃だらけだった。小綺麗な Chromecast もすぐ埃が積もるんだろうなあ……。
[ 製品レポート ]
台風の影響で風が強く雨もたまに強く降ったりする1日。間隙をぬってコンビニ行ったり、スーパーに行ったりした以外は家にいた。
先週の会社のキーボードのに続き、自宅の ThinkPad X200 のトラックポイントのキャップも交換。手持ちの在庫無くなってきた。ソフト・リム・キャップ派じゃない人と共同購入したい。
第26回東京湾大華火祭は今年は中止。遠目ながら見ようと思っていたのでちょっと残念。
そういえば3カ月前に uim-mozc を入れて、Debian GNU/Linux sid で Mozc を使っているんだけれど /usr/lib/mozc/mozc_tool --mode=config_dialog が落ちて設定できなくて困っていた(けど放置していた)。 uim-pref-qt4 でいったん「標準の入力方式を指定」で Mozc 以外にすれば落ちなくなって設定できるとしったので、とりあえずこれで対応。ようやく空白がデフォルト(いわゆる)半角で入力できるようになってストレス解消した。
コクヨホールで docomo Wi-Fi アクセスポイント 0001docomo が結構な電波強度で掴めたので、Debian GNU/Linux sid なノート PC で接続してみた。
にして ID とパスワードを設定するこことで接続。当初 PEAP を選択していなくてつながらなくてちょっとはまった。
あと docomo Wi-Fi が1度に1台しか接続できないのだけれど、バッグの中の設定済み iPod touch 5th の方が一足先に接続していてノート PC 側は「二重ログインできません。」エラーになってこれもちょっとはまった(iPod touch 5th の方は Wi-Fi を切るだけじゃ駄目で、明示的にログアウトさせる必要がある)。
つながってしまえば、この会場でいえばテザリングより安定していたので快適。通信量も気にする必要がないので便利。去年の9月の時よりだいぶ良くなってきている感じ。
昨日 Wi-Fi でつながらなくなった Debian GNU/Linux sid な ThinkPad X200 であるがいろいろ試行錯誤しても駄目で、しょうがないので network-manager パッケージ(NetworkManager)を以前のものにダウングレードすることにした。snapshot.debian.org から古い Debian パッケージをダウンロードしてきて、dpkg でインストール。同時にアップデートしていたいくつかのパッケージの依存関係の問題でダウングレードできないと出るので、それらも1つずつ古いのを取ってくる。
最終的にダウングレードできたものの、結局やはり Wi-Fi がつながらないのでこれも駄目かとまた最新のバージョンに上げたらあっさり接続できるようになった。あれ? もしかしたら普通にreconfigure とかで直ったのかな?
「ディスプレイを閉じたらサスペンド」の方はまだ直らず。とりあえず s2ram -f でのサスペンドは効いたのでこれでしのぐことにする。
あとアップデートするパッケージを精査するの大変なので不要なパッケージを適宜 purge したり。数年使っていない TeX もさよならした。ちょっとキュンとなった。
年明けに Debian GNU/Linux sid なノート PC が Wi-Fi で通信できなくなって、翌日直ったかに見えたけれどその後また駄目になって、結局ずっと有線 LAN で使っていた。しかし来週のイベントに持ち出したいのでそろそろ Wi-Fi 直さないと。いろいろやってようやく今日復活させた。
/etc/polkit-1/localauthority/50-local.d/org.freedesktop.NetworkManager.pkla というファイルを作り、
[nm-applet] Identity=unix-group:netdev Action=org.freedesktop.NetworkManager.* ResultAny=yes ResultInactive=no ResultActive=yes
と書いて保存。自分を netdev グループに追加してあればこれで kde-nm-connection-editor などで新しい Wi-Fi 設定を保存できるようになる。
そもそも Wi-Fi のコネクション自体はできているのだけれどうまく通信できないと思っていたところ、どうも有線 LAN の方の設定でルーティングしようとしていたようなので /sbin/ifdown eth0 して落とした。そしたらあっさり通信できるようになった。
チャンチャン。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。