ラベル tips の投稿を表示しています。 すべての投稿を表示
ラベル tips の投稿を表示しています。 すべての投稿を表示

2008年11月13日木曜日

svkでコンフリクト発生時にオルタネイトタイピングしなくて済む方法

僕はバージョン管理にsvkを使っているのですが、smergeや、pullすると稀にコンフリクトする時があります。
コンフリクトすると、
Conflict found on file xxx:
e)dit, d)iff, m)erge, s)kip, t)heirs, y)ours, h)elp? [e]

こんな感じでコンフリクトしたファイルをどうやって解決するか、いくつか選択肢が表示されるわけですね。

大抵は僕が悪いので、theirsを選択するのがほとんどです。
コンフリクトしているファイルがせいぜい2つ、3つくらいだとじっくり調査できるのですが、
たまにこれがハンパない回数聞かれるときがあります。
pullするの忘れてpushばっかりしてハッと思いだしてpullした時とか。

その度にtキー, エンターキー, tキー, エンターキー, ...と繰り返しタイプするのも大変です。
決まったリズムでキー叩くので仕事してるフリにも使えません。
ああ、こいつあきらかに一個一個消してんな、ってのがバレバレです。

CPAN ShellからCatalystやPlaggerインストール時にyes連打するのと似た感覚ですね。
ちなみにこれはちゃんと解決策あります。
参考 : CatalystやPlaggerのインストールでyes連打をしたくない - bokut.in

きっとsvkにもあるはず!と思って調べていたら、案の定ありました。

export SVKRESOLVE="t"

これで、以後コンフリクト時にはtheirsを自動選択してくれます。

これ、どうやら、
svk help environment

に書いてあったようです。

参考 : [svk-devel] svk resolver: obscure error, and obscure documentation

ちなみに、オルタネイトタイピングとは、tキーとエンターキーを交互にタイプすることから思いついた、オレオレスラングです。
参考 : オルタネイト

2008年10月1日水曜日

[tab2space]タブ文字をスペースに変換するとき、どうしてる?

SKK諦めて予測入力の出来るPrime使いはじめたcohtanです。

僕はコード書いているときに誰が見ても同じ見た目になることから、タブ文字をスペース4つ分に変換しています。
もちろんスペースキーを4回叩いているわけではなく、タブを押したら勝手にスペース4つ入るように設定しているだけです。

で、ここから本題。

ここにはいない他人が書いたコードにタブコードが入っている時にそれらをスペース4つに置き換えたい。
という状況が発生しました。
しかもここにはいない他人が書いているコードはたくさんあり、数百ファイルあります。

さぁどうするかと。
単純に、1つのタブコードに対して4つのスペースで置換したのでは見た目が変わってしまいます。
というのも、タブコードは文字列の頭を揃えるために使われる事があるので、4スペースの時もあれば、3スペースのときも、2スペースのときも、1スペースのときもあるのです。
なので、エディタにタブコードをスペースに変換する機能が備わっていれば、まず間違いなく文字列の頭を揃えてくれます。

ようは、これを自動で複数のファイルに対して実行したいと。
エディタ側に複数ファイルを一気にに編集する機能がついていれば可能っぽいですが、僕の愛用エディタであるvimではどうやっていいのかわかりません。

そこで、色々調べたところ、どうやらvimにはexモードという機能が存在し、コマンドのみを実行する事が出来るようです。
これをワンライナーで複数ファイルに噛ましてしまえば、エディタ上でタブコードをスペースに変換した時の美しい文字列の頭揃えが出来るはずです。

というわけで、出来たワンライナーがこれ。

find . -name "*.php" -exec ex -c 'ret' -c 'wq' {} \;


この例では、拡張子がPHPのファイルに対して実行しています。
-exec 以降が肝で、


  • ex - vim -e と同様。Exモードっというらしく、指定ファイルにコマンドを発行出来る。

  • -c はコマンドを引数で指定するオプション。+でもいいみたいだけど、findに+を渡すと怒られてしまった。



ようするに、:retして、:wqしてるだけなんです。
これを、カレントディレクトリ以下の*.phpに対してやってるだけ。

自前で文字列カウントしながらスペース変換やろうとすると結構めんどくさい気がするので、これはなかなか便利そう。
これでvimのコマンド部分だけを使って複数ファイルをごにょごにょする、なんてことも難しくないですね。

ひとつ悔しいのは、この機能を生粋のEmacserである、id:k1LoW氏から教えてもらったことです。
k1LoW++!

id:teramakoさんのエントリーが大変参考になりました。
ex(vim -e)コマンドを使おう

久しぶりにブログを書く

最初ログインできなくて焦った。 いや、ログインはできたのだが、ログイン後に自分のブログの管理画面に遷移できず、新しいブログを作成する画面になってしまったからビビッてしまった。 どうやら、Google+(現在はサービス終了)に紐づいたプロフィールを設定しているとこのような状況に陥る...