gitolite を試す

gitolite のがgitosis より簡単らしい.
branch とかへのアクセス制限もできるようだ(2010/12/30 追記)
Personal なブランチの名前空間をサポートもしてるようだ(2010/12/30 追記)

git$ mkdir -p $HOME/gitolite/bin $HOME/gitolite/conf $HOME/gitolite/hooks
git$ cd modules
git$ git clone git://github.com/sitaramc/gitolite gitolite-source
git$ cd gitolite-source
git$ src/gl-system-install $HOME/gitolite/bin $HOME/gitolite/conf $HOME/gitolite/hooks
git$ cd $HOME
git$ export PATH=$HOME/gitolite/bin:$PATH
git$ gl-setup $HOME/.ssh/clairvy.pub
git$ vi .bashrc
<$HOME/gitolite/bin をPATH に追加>

PATH の件を追記 (2011/01/05 追記)

これで,アクセスできるようになるみたい.

試す

$ ssh git@remote-host.domain
PTY allocation request failed on channel 0
hello clairvy, the gitolite version here is v1.5.8-1
the gitolite config gives you the following access:
     R   W      gitolite-admin
    @R_ @W_     testing
Connection to localhost closed.
$ git clone git@remote-host.domain:gitolite-admin.git

gitosis と同じように,管理はgitolite-admin リポジトリを触るみたい.
あと,conf を書くと空repository を作ってくれるみたい.
これは来年試そう.*1

ご参考

ということで追記.(2010/12/30)

gitolite/gitosis 共に .ssh/authorized_keys にログインユーザ設定をすると考えればいいみたい.
ssh git@rmote-host.domain したときに,コマンドが動く設定をしてるのかな?
なので,それを無効にしたかったら,その辺をなんとかすればいい.*2

あと,各リポジトリの hooks は,絶対パスシンボリックリンクされるので,
$HOME/gitolite/hooks 的な場所に位置が変更になったらその辺に注意.
なんかこう.$HOME/gitolite 配下で色々クローズする方が移動できて楽かもしれないけど,
$HOME/.gitolite.rc で $HOME/repositories の位置を制御したりすればできるのかな?
あと,多分 $HOME/.gitolite/{keydir,conf} が現在の設定なので,その辺を直接イジることもできる.
普通はプッシュするだろうけど,設定ミスったときとかに.*3

*1:$HOME/gitolite/bin にパスが通っていないと new repo を作ってくれないよう.パスさえ通せば自動的に作ってくれる

*2:gitosis と gitolite で同じユーザでやってたので,ここでハマった

*3:というかミスりました

gitosis を試す

メモ的に

まず git ユーザを作り終わっているとします.

$ sudo su - git
git$ git clone git://eagain.net/gitosis.git
git$ easy_install-2.6 --user gitosis
git$ cd ~/local/bin
git$ ln -s ~/.local/bin/* .
git$ rehash
git$ cd
git$ ssh clairvy@localhost cat .ssh/id_rsa.pub | gitosis-init

試す.

$ git clone git@localhost:gitosis-admin.git

*1

とりあえず,できたみたいだけど,リモートから触ってないので,
まだわかんない感じ.

別の場所に設置して試します.

ご参考

運用としては,gitosis-admin リポジトリを編集+手 or スクリプトなんかなー.
リポジトリ作るのとか.その辺はおいおい試します.
github みたいに楽にするにはまだ補助が要るんかなー?

*1:パスが通ってなかったっぽいので,gitosis-serve を/usr/bin にシンボリックリンクしました

MacOSX でのユーザの作り方(dscl)

メモ的に

全然知らなかったんだけど,MacOSX では,DirectoryService でユーザとかのリソースを管理してるみたい.

ということでユーザを作ってみた.

$ sudo dscl . -create /Groups/git gid 601
$ sudo dscl . -create /Users/git
$ sudo dscl . -create /Users/git RealName 'git version control'
$ sudo dscl . -create /Users/git UniqueID 601
$ sudo dscl . -create /Users/git PrimaryGroupID 601
$ sudo dscl . -create /Users/git NFSHomeDirectory /Users/git
$ sudo dscl . -create /Users/git UserShell /opt/local/bin/zsh
$ sudo dscl . -create /Users/git uid 601
$ sudo dscl . -create /Users/git gid 601
$ sudo passwd git ← パスワード設定
$ sudo createhomedir -b -u git

確認

$ sudo dscl . -read /Groups/git
$ sudo dscl . -read /Users/git
$ id git
uid=601(git) gid=601(git) ....

第一引数の"."(ドット) は,ローカルのdatasource らしい.

最初 /etc/{passwd,group} を直編集して,何でできないか不思議だったよ.

追記(2010/12/26 16:29)
uid/gid を,指定していなかったらそもそも createhomedir できなかったよ.

ご参考

YAPC::Asia 2010 にいってきた

今回で二回目の参加になります

前回は,@issm さんと一緒に参加したんですけど,
今回は,@hatyuki さんも居て三人で回ったりもした感じでした.
それも ゆるくPerl を語る会 が出会いの場になったからですね.*1
ゆる Perl を開始してくれた id:trinity777 ++

時刻的にも,最後のまとめ的な位置付けということもあると思うのだけど,
最後のkeynote が一番心に残っているのですよ.
やっぱりid:miyagawa さんかっけー(miyagawa rocks) と思った訳です.

とあいえ,id:miyagawa さんのスライドにもあったけど,
Perl is glue language. なんすよ.

ちょっと話が飛びますが,id:nekokak さんの発表であったんだけど,
id:kazuhooku が書いてるから安心みたいな話があって,
普通に納得したりしてた.*2

一定の信頼があって,繋りがあるってことかなー.と思うんですよ.
その辺がglue なんかなー.とか.

つまりはPerl は最初から他のものの力を借りるように
デザインされていたんだよ.(Ω ΩΩ<な,なんだってー)

オブジェクト指向って,メッセージパッシング,疎結合みたいな独立したオブジェクトがあって,
それがいっぱい集まって有機的に何かを形成しているみたいなイメージ*3
があるんで,そういうモデルなんかなー.とか.*4

Larry も言ってたんだけど,
"楽しまなければならない"
好きなことをやればいいと思うのですよ.
やりたいことをやればいい.
コードを書いたり,いろいろすればいいと思うのです.
それで join するみたいなイメージを自分は持ちました.

ということで,萌えもポロリも涙も笑いもSQLインジェクションもある.
YAPC::Asia 2011 に,みなさんも行ってみませんか?*5

今後の話

そういう訳で,ゆる Perl も何回か続けてみたけど,
どうやら継続できそうに思えたので,
今度は Nagoya.pm にバージョンアップしてみて,
ゆるPerl 自体の活動が変わる訳じゃないんだけど,
だんだん,みんなが楽しめるようなことをやるように変化していきたいな.と思っています.*6

そんで,rocks と思われる存在になるのもいいんだけど,
自分なんかはそんなにスゴイ人じゃないし,コミュニティにコミットしてないので,できてないので駄目じゃん.じゃなくても.
まずは rocks と言われてる人を見て欲しい.
その空気みたいなものを Nagoya.pm の人と一緒に感じたいなー.とは思いました.

よせがき?

あ,かってに後夜祭の中で,いっぱいサインしてもらいました.
提案してくれた id:nipotan さん,id:yappo さん,他サインしてもらったみなさんありがとうございましたー.
本当,旧なお願いで申し訳ありませんでした.*7

脱線話1

JavaScript をテストするJSTAPd の話とか,
mod_rewrite をテストする話とか,
省サーバ運用の話でid:nekokak さんが自分が決めたところまでは自分で見たいみたいな話があって,
そういう感覚って,完全に TDD の安心に繋がってるのかなー.とか思ったりもしてみた.
というか,Perl 界隈でテスト書かないとか無いですよね.みたいな*8
ということで,TDD 的な思想が当たり前過ぎてグリーンバンドをしてたけど,誰も触れてくれなかったYO!

脱線話2

Perl の人(主にd の付く人)は PHP をあまりイジめないでください,とか
Perl の人怖いとかいう話もあって,*9
うーん.評価とイジメは違うんだけどなー.
とか,PHP をHack するみたいな発想が,そもそもないのかなー.とかは思ったりした.
Ruby 界隈はそういうのも充分懐が広い気が(勝手に)してる.*10

あー,これもPHP DIS ってる,とか言われちゃうかなー?

リンク

  • サインしてもらいました

言語設計者たちが考えること

オライリージャパン
売り上げランキング: 1530
おすすめ度の平均: 4.0
3 軽い読み物
5 個性豊かな言語設計者の考え方がわかる

  • とりあえず

Smalltalkで学ぶオブジェクト指向プログラミングの本質
青木 淳 浅岡 浩子 澤本 依里
日経BP
売り上げランキング: 128284
おすすめ度の平均: 4.0
5 オブジェクト指向を習う
4 古典的な「Smalltalk-80」の子孫であるVisualWorksの入門書として
4 オブジェクト指向で1冊目じゃなきゃ
2 ちょっとこれは・・・
4 “純正”Smalltalk-80の流れを受け継ぐVisualWorksの入門書として

  • たまたま思い出した

情熱プログラマー ソフトウェア開発者の幸せな生き方
Chad Fowler
オーム社
売り上げランキング: 134342
おすすめ度の平均: 4.5
5 「ソフトウェア開発者の幸せな生き方」とは
3 並ではあるが若手(のみに)読ませたい
5 社会人のみならず、学生にも是非読んで欲しい一冊

*1:途中一緒に昼食したとき,PHP のライブラリのポーティングの話をずーっとしてたのは秘密だ.

*2:誤解して欲しくないんだけど,無条件に受け入れるという話ではなく,理由があってやっているだろうから聞けばわかるだろうな.という予想みたいな話

*3:Smalltalk で学ぶオブジェクト指向プログラミングの本質

*4:逆か?自分にはそういう心理モデルがあるから,そう理解してしまうだけ?そう認識するだけ?Naming is hard

*5:あり?Hokkaido.pm だっけ?

*6:ゆるPerl in 岡山.とか?

*7:してもらったサインは,スタッフが美味しくいただきました.後で上げる?

*8:id:yappo さんのセッションのときでもテスト書いてない型?と訊かれて誰も(?)手を上げてなかったような

*9:主に id:tokuhirom の人だけじゃね?という意見があったり無かったり

*10:OOP 界隈と密結合で,ファシリテーションとかあるから?メタプログラミングが関係するとか?そういえば PHPメタプログラミングの話もしたなー(閑話休題)

Eclipse で Android のソースが見たい

Android で UnitTest を書こうと思ったんだけど,
ドキュメントを見てもよくわからんかった.
困ったらソースを見れということで,Eclipse から追えるようにしてみた.

ソース自体は,以下から落とせる.

今回は platform/frameworks/base ら辺しか使わない.

以下のスクリプトをframeworks/base にcd してから使うと,
ANDROID_SDK_ROOT のplatform/*/sources ディレクトリ配下にごっそりファイルが
コピーされるようになっている.

最初は,シンボリックリンクでなんとかならんか?と思ったんだけど,
ファイルの重複とかあって,チェックするのが面倒になったので,
コピーするようにしました.
本当は,git co してバージョン毎にコピーしようと思ったけど,
そこまではやってません.

あと,微妙なところで tools を除外していますが,
同名ファイルでファイルサイズが違うことに気付いたので,
除外してみました.詳細は知らないです.

これで,Eclipse を再起動すれば,ソースが見られると思います.*1

参考

*1:Eclipse の再起動が必要なことに気付かなかったので最初全然見られませんでした.orz

NagoyaHackathon に行ってきた

NagoyaHackathon 01 に行ってきました.
余裕で遅刻したので,チームに入らずに色々調べてました.

が成果です.

一人で黙々とやるのもいいけど,誰か聞く人が居る環境もアリだなー.
と思いました.使い分けかな?

Git-Http をやってみた

ようするに,以下が必要らしい.

  • WebDAV
  • Git --bare 的なもの
  • git server-update

Apache 側は

  • ロケーションに対して DAV on する
  • passwd (Auth)
$ cd /etc/apache2
$ vi httpd.conf
$ git diff httpd.conf
-#Include /private/etc/apache2/extra/httpd-dav.conf
+Include /private/etc/apache2/extra/httpd-dav.conf

*1

repository 側は,

  • hooks/post-update - update-server-info
$ mkdir ~/Sites/my-new-repo.git
$ cd !$
$ git init --bare
$ cp hooks/post-update.sample hooks/post-update
# 最初から update-server-info の設定になってる!
$ vi .htaccess
$ cat !$
AuthType Basic
AuthName "Git"
AuthUserFile /Users/clairvy/Sites/my-new-repo.git/passwd
Require valid-user

最初 info/refs が無くてなんでやねん.
と思っていたら.単に typo していただけだったという.

参考

*1:なんかコマンドで a2e 的な有効にしたりするのかなぁ?