svk でやってたものの git 版。
ref: refs/heads/ という部分を消していいのか、ほかのものが入る場合があるのかよくわからなかったので全表示している。
まぁぱっと見で git とわかるからいいかということでとりあえず。
codereposにあげてあるよ。
あぁ、なんか ref: とかすらでずに sha-1 ハッシュ値だけのときもある。もう少し調べないとだめだ。
svk でやってたものの git 版。
ref: refs/heads/ という部分を消していいのか、ほかのものが入る場合があるのかよくわからなかったので全表示している。
まぁぱっと見で git とわかるからいいかということでとりあえず。
codereposにあげてあるよ。
あぁ、なんか ref: とかすらでずに sha-1 ハッシュ値だけのときもある。もう少し調べないとだめだ。
.zshrc といっしょにcodereposにあげた。
File::HomeDir と Path::Class を使わずに愚直にかいてみたがあまり体感変わらず、ためしに YAML を YAML::Syck にしてみたら激早くなった。
#!/usr/bin/env perl
use strict;
use warnings;
use YAML::Syck;
my $path = $ARGV[0] or die;
my $config = YAML::Syck::LoadFile( $ENV{HOME} . '/.svk/config' );
my $hash = $config->{checkout}{hash};
my @path = split '/', $path;
my $svkinfo;
do {
$svkinfo = $hash->{ join '/', @path }
} while !$svkinfo and pop @path;
exit unless $svkinfo;
if (my ($trunk, $branch) = $svkinfo->{depotpath} =~ m!(?:/(trunk)|/(branches/[^/]+))$!) {
print '(' . ($trunk || $branch) . ')';
}
こんな感じ。
このくらいの体感速度なら割と普通に使えそう。
毎回svk infoしてどこにいるか確かめるのが面倒になったので、
PROMPT='%(?..exit %?)
%{[33m%}%~%{[m%} %{[91m%}`perl /home/typester/dev/scratch/svkpath.pl $(pwd)`%{[m%}
%{[38m%}%(!.#.$)%{[m%}%{m%} '
PROMPTをこんなにして
#!/usr/bin/env perl
use strict;
use warnings;
use YAML;
use File::HomeDir;
use Path::Class qw/file dir/;
my $path = $ARGV[0] or die;
my $config = YAML::LoadFile( file(File::HomeDir->my_home, '.svk', 'config') );
my $hash = $config->{checkout}{hash};
$path = dir($path);
my $svkinfo;
do {
$svkinfo = $hash->{"$path"}
} while !$svkinfo and $path ne ($path = $path->parent);
exit unless $svkinfo;
if (my ($trunk, $branch) = $svkinfo->{depotpath} =~ m!(?:/(trunk)|/(branches/[^/]+))$!) {
print '(' . ($trunk || $branch) . ')';
}
とかしてみた。
これで
こんな感じになるわけだけども、毎回perl呼んでるので重い。
軽くできないかなー。
perlでやるなら裏でデーモン化してそこ呼ぶようにするのがいいのか。でもそこまでがんばる必要があるのかどうか。
ほー。
僕はこんなことしてた。
ls *(/)
とか
ls **/
zsh。デフォのzshだと僕が思っているような挙動にならないかも。
あんまりつかわないけど。。
ll (-l) にするとちょっとtreeっぽくなる。
Esc + ドット(.) と入力すると、
直前に入力したコマンドの最後の引数を補完してくれる。
複数回入力する事によって、
過去にどんどんさかのぼっていく。
naoyaさんのブックマーク経由。知らなかったわぁ。
んで、それ試しててなんとなくとなりの、M-, 押してみたらなんか補完された!
おお、これヒストリからの補完キーだ。ヤバスヤバス。これも便利だ。emacsとキーをあわせようかな。
一時的に trunk 使いたいときとか
export PERL5LIB=`echo ~/workdir/Catalyst/**/lib(/) | sed -e 's/ /:/g'`
とかしてんですが、もっと簡単に書ける?>zsh
zsh とか emacs の補完で大文字小文字区別しないようにする設定よくみるからちょっとやってみたけど、うざくね?
たとえば OSX とかで /Users と /usr とか見に行こうとすると、もうっ!ってなる。
function viewlastlog () { find ~/tiarra/log/$1 | tail -1 | xargs lv }
追加。IRC指定のチャンネルの最後の日のログひらくの
Page 1 of 2: 1 2