〜2007年3月下旬〜
なかださんが複数のbranchに対して同時にcommitしてるけど、どうやってんだろう?
一応自分で考えてみた。全branchをcoするなんてのは無駄なので、
たぶんそんなことはしてないと想像。必要なbranchだけが対象になるようにしよう。
まず大元をcoするときに-Nで再帰的にcoしないようにする。
% svn co -N svn+ssh://svn@ci.ruby-lang.org/ruby/
branchesも同様。
% cd ruby % svn up -N branches
あとは適当に欲しいbranchだけupdateする。
% svn up trunk branches/ruby_1_8{,_5,_6}
これでできあがり。ruby/でsvn upすれば全部updateできるので、
同様にここでcommitすれば複数branchの同時commitが可能になるはず(たぶん)。
というか、commit云々よりまとめてupdateできてすげー便利だよ、こりゃ。
- About:
- Txt2man converts flat ASCII text to man page format. It is a shell script using gnu awk, that should run on any Unix like system.
10巻まで読んだが同じ顔だらけで誰が誰だかわかんないよ。
GNU dateは@をつければUnix epochも解釈してくれるんだな。
% date +%s 1174669919 % date -d @1174669919 Sat Mar 24 02:11:59 JST 2007
あとyesterdayとか便利。
% date -d yesterday +%m-%d 03-23
こんなのがあるなんて全然知らなかった。
手始めに
http://www.yomiuri.co.jpで試してみたが、結構難しいな。
余計なアイテムがまざったり、なぜか抜けちゃったりと。
bashならtacでいいはずなんだが、入力データの最終行は改行がないので困る。
(dd;echo)|tacなどと無駄なことをしてたが、そういえばあれならいけると思いついた。
逆にいうと
echo
の入力データは全部改行があってよかったというか。
man git-svnを見るとsvnで推奨されてるレイアウト(trunk,brances,tags)の場合は、
multi-initしてmulti-fetchしたほうがいいようだ。
Rubyのsvnリポジトリをローカルへ持ってきて実験。
% mkdir ruby.git; cd ruby.git % git svn multi-init file:///some/where/svn/ruby -T trunk -b branches -t tags % git config svn.repack 1000 % git config svn.repackflags '-a -d' % git svn multi-fetch
で4時間弱。repackしないと最終的には2GBぐらいに膨れあがるので必須設定のような気がする。
% du -sh 45M .
こんなに違う。ちなみに元々のsvnリポジトリは323MB。
まあfsfsだと1コミットで1ファイルだしねえ。
gitもpackして1個のファイルにしてるから小さくなってるわけで。
switchの方法はよくわからず。
% sed -i~ 's|file:///some/where/svn/ruby|svn+ssh://svn@ci.ruby-lang.org/ruby|' .git/svn/*/info/url
でうまくいってはいるようだけど。
あと.git/svnの要らないブランチは消すとmulti-fetchでfetchしなくなる。
ってそれはなんか間違った方法だと思うよ。
ゴルフ向き?関数型はよくわからんなあ。
- About:
- Fishkill is a minimalist functional programming language. Some might call it a toy language. It is based entirely on pattern matching of function arguments. There are no data types (or you might say there is a single data type). Instead, arbitrary constructors can be defined by just using them in a program.
意表をついてほとんど話題になってないL+system.rbを晒してみる。
n,$_,*h=$<.read.split puts$_ n.oct.times{puts gsub(/./){Hash[*h][$&]||$&}}
案外きれいにまとまってる。
全部読むときには$<.readかgets$_をよく使うんだけど、
nilが入ってる変数はいっぱいあるのに、なぜかgets$_を選ぶことが多い。
それはそれとして、gets($_).splitと長くなっちゃうよなあと思い込んでしまった。
そうなると中々抜け出せない。
公開するとそういう指摘があったりで結構利点があるよね。
ちなみに一番最初のバージョンはこんな感じだった。
n=gets.oct $><<s=gets h=Hash[*$<.map{|$_|split}.flatten] n.times{puts s=s.split("").map{|i|h[i]||i}*''}
flattenなんてこんな長いのよく使うよな。
- About:
- Bug is a simple todo-tracking system for the unix commandline. It's written in bash, and it only requires the typical Unix utilities: grep, cut, tr, ... It should probably work with a small busybox. The lack of dependencies was the biggest motivation for its development.
今日のスポーツニュースを見て感じた。
中村紀洋と花田勝とホリエモンの区別がつかない。
今月で定期券が切れるついでに東武野田線の磁気カードもSuicaにまとめようと思って一週間、
いつ見ても窓口は行列で先延ばしにするうちに今日になってしまった。
この時期だと土曜日でも信じらんないくらい混んでいて、
もう待つのもいやなので自動販売機で新規を買った。
帰りの切符を買うのも面倒だし今日から有効にして。
というわけで、いま無駄に2つSuicaがある。
空いたらチャージ分だけでも払戻してもらおうかな。
手数料210円取られるらしいが。
それで気づいた。4/1からでも3/31からでも6ヶ月だと9/30まで有効の定期券になる。
せこい話だがうまい具合に大の月と小の月が組み合わさったわけだ。