2008年 07月 04日

正しい振舞い(笑

そろそろ殺されそう……

ひだまりスケッチ<a class="okeyword" href="g:subtech:keyword:×">×</a>365

やばいなぁ…… ほんといい。なんかやたら1期に比べてうごくなーっておもった。これだけはリアルタイムで放映見る。なんか、なぁ、ほんといい。ほんといい。余韻に浸っている。いろいろ、書きたいけれど、余白が65535バイトほど足らないので書かない。

log (じぶんいがいのだいたいさくじょしてるのでコンテキストがよめない)

01:25 <@cho45> XUL/Migemo
01:25 <@cho45> いれてみたけどいろいろすげええええ
01:25 <@cho45> Safari みたいなハイライトかっこよす
01:27 < g****> 365
01:30 <@cho45> migemo ためしてたらはじまってあせった > 365
01:30 <@cho45> 何度かためしたんですけど、慣れなくてだめだった > migemo
01:34 < m****> migemoとかいい365をみるんだ
01:34 <@cho45> なんかやたらうごきますね!
01:35 <@cho45> おれにチョコくれ! ゆの! ゆのー!
01:36 <@cho45> ゆのっちまじかわいい
01:36 <@cho45> ゆのっちまじかわいい!
01:36 <@cho45> ゆのっちまじかわいい!!!1
01:37 <@cho45> ほんとうごくなー
01:37 < m****> 来週から富士山です。
01:37 <@cho45> 来週からwww
01:37 <@cho45> no more 富士山

気付いたらはじまってて急いでヘッドフォンつけた。

もっと! もっと! キモく!!!!

git-svn dcommit を自動的に行う

svk で mirror レポジトリに直接コミットするような感じにしたいときがいくらかありますよね。普通に git ci / git svn dcommit をやるんでもいいんですが、これだと git の軽さが損なわれてしまい、とても残念な気持ちになります。なので、git svn dcommit は非同期で裏に回すようにします。


しかし、けっこうこういう、裏にまわして非同期で実行して結果だけみたい場合っていうのはあるので、汎用化しておきます。結果表示はうまくいったかどうかだけわかればいいので、screen のラインに表示させることにしました。

backtick は wait を 0 に設定すれば screen と密着したデーモンみたいに使えるので、そこの中で DRb サーバをたちあげ、随時リクエストを実行していくようにします。(ただし :source で終了してくれたりはしないので、自分で過去の自分を kill するようにしています)

#!/usr/bin/env ruby

require "drb/drb"

DRb.start_service

o = DRbObject.new(nil, "druby://localhost:9999")
o.add_queue(ENV.to_hash, ARGV.join(" "))

こんな感じでリクエストをなげると、実行されて、一行ずつ screen の backtick エリアに表示されます。実際実行されているかどうかは、ps aux | grep AsyncDRb とかやると、wating... とか実行中のコマンドとかが表示されます。


でもって、これを有効にしたうえで、~/.gitconfig に alias を書きます。

[alias]
	ci      = !sh -c 'git commit -av && [ "$(git config --bool svn-remote.svn.autodcommit)" = "true" ] && $HOME/.screen/asyncrun.rb git svn dcommit && echo "dcommit done!"'
	svn-ad  = config svn-remote.svn.autodcommit true
	svn-ado = config svn-remote.svn.autodcommit false

自動的に dcommit したくない場合も十分あるので、svn-remote.svn.autodcommit の設定をみて、実行するかどうか決めています。

あとは普通に git ci とかやれば裏で dcommit が走りながら編集できるのでとても便利です。