]
トップ «前の日記(2009-07-26) 最新 次の日記(2009-07-29)» 編集

Yukiharu YABUKI の tDiary



このtDiaryを検索します。

2009-07-28 [長年日記]

_ [Debian] gitosis:ユーザの追加とプロジェクトの追加

この記事は、 gitosis : setting of Debian GNU/Linux Lenny way の続きです。gitosis で sandbox リポジトリを作ろうといいながら、来客や契約書の作成やレビューなどで記録に残すのが遅れました。

いまから書くことは、基本的には /usr/share/doc/gitosis/README.rst.gz を見ると判ります。私がミスで設定に悩んだ時間分は、あなた方の時間の節約になるかと思います。

ssh鍵のファイル名について、

id_rsa.pub のファイル名を変更したのには理由があります。gitosis はアカウント名として公開鍵のファイル名から拡張子 .pub を除いた部分を使用します。そのため keydir に保存するときは、公開鍵のファイル名を gitosis.conf で指定したアカウント名と併せておく必要があるのです。

[gitosis - Git リポジトリ群の管理とアクセス制御 vol.2より引用]

とありますが、私の場合、
yabuki@yelona:~/scm/git/Ernalda/gitosis-admin$ ls -la keydir/
合計 16
drwxr-xr-x 2 yabuki yabuki 4096 2009-07-28 14:15 .
drwxr-xr-x 4 yabuki yabuki 4096 2009-07-28 15:44 ..
-rw-r--r-- 1 yabuki yabuki  399 2009-07-28 14:15 kouji-t.pub
-rw-r--r-- 1 yabuki yabuki  395 2009-07-14 10:17 yabuki@yelona.pub
のような形でも利用していることを報告しておきます。とはいえ、unixアカウント名.pub はわかりやすいのでお勧めの鍵ファイル管理方法ではないでしょうか。実際、私も別人の鍵ファイル管理は unixアカウント名.pub にしてしまいました。

  1. git clone してある、gitosis-admin の gitosis.conf に、group を追加する。
            [group myteam]
            members = jdoe
            writable = myproject
    
    が /usr/share/doc/gitosis/README.rst.gz に記述してある例ですが、これでは、自分が欲しい例としては足りませんでした。その心は、複数の unix account を列挙するときのセパレーターは、space " " であって、comma "," じゃないことに気がつくまで時間を無駄にした。注意深い人ならば、一回で上手く行くだろうが。そこで私の例は
            [group kiire-japan]
            members = yabuki@yelona kouji-t
            writable = sandbox
    
    としておきます。
  2. で、鍵を keydir/ にコピーして git add して commit して、用意完了です。
  3. 例だと、
            mkdir myproject
            cd mypyroject
            git init
            git remote add myserver gitosis@MYSERVER:myproject.git
            # do some work, git add and commit files
            git push myserver master:refs/heads/master
    
    になってますけど、ちゃーんと設定できたら
    cd /tmp
    mkdir -p yabuki/sandbox
    cd yabuki/sandbox
    git init
    git remote add origin gitosis@192.168.11.250:sandbox.git
    # origin とかは man git-remote したらわかるけど name なので、git remote rm origin 
    # とかしたらいったん消してまた付け替えられます。
    # それで、ここでリポジトリの説明をするような、READMEファイルを作っておくのがいいんじゃない
    # だろうか。で、commitしておく。
    $ git push origin master:refs/heads/master
    Initialized empty Git repository in /srv/gitosis/repositories/sandbox.git/
    Counting objects: 3, done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 297 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To gitosis@192.168.11.250:sandbox.git
     * [new branch]      master -> master
    
    ちなみに認証できてない時(つまり projectのメンバーになってない時)には、
    $ git push origin master:refs/heads/master
    ERROR:gitosis.serve.main:Repository read access denied
    fatal: The remote end hung up unexpectedly
    
    と表示されてました。ちゃんと access denied になってますね。
  4. (以下2009.07.30更新) gitosisはリポジトリを階層化することで整理しやすくする。たとえば
    company+
           +web
           +document+tech
                    +presskit
                    +minutes(議事録)
    や
    customer1+
             +project1
             +project2
             +project3
    customer2+
             +project1
             +project2
             +project3
    
    とかを想像してほしい。関連する人間が変わればアクセス制御をしたくなる場合があるだろう。

    gitosis はコンテナ内にディレクトリ階層を作れるというのがポイントです。ここでは private というディレクトリを掘ってみました。private という名前に特に意味はありません(hoge でも fuga でも何でも良い)。

    [gitosis - Git リポジトリ群の管理とアクセス制御 vol.2より引用]

    [group yabuki]
    members = yabuki@yelona
    writable = private/yabuki
    
    として
    $ git commit -m "create private/yabuki" gitosis.conf
    Created commit b176627: create private/yabuki
     1 files changed, 4 insertions(+), 0 deletions(-)
    $ git push
    Counting objects: 5, done.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 375 bytes, done.
    Total 3 (delta 1), reused 0 (delta 0)
    To gitosis@192.168.11.250:gitosis-admin.git
       d1d3b73..b176627  master -> master
    
    mkdir -p /tmp/yab/yabuki-private-repo
    cd /tmp/yab/yabuki-private-repo/
    # READMEファイルをつくったり、
    # docディレクトリにファイルをいれたり、
    # ソースを整理してsrcに入れたり
    git add README doc/ src/
    git commit -a -m "init yabuki-private-repo and commit"
    git remote add origin gitosis@192.168.11.250:private/yabuki.git
    git push origin master
    
    とすると
    yabuki@Ernalda:~$ sudo ls -la /srv/gitosis/repositories/
    合計 20
    drwxr-xr-x 5 gitosis gitosis 4096 2009-07-29 22:26 .
    drwxr-xr-x 5 gitosis gitosis 4096 2009-07-29 02:44 ..
    drwxr-x--- 8 gitosis gitosis 4096 2009-07-29 14:08 gitosis-admin.git
    drwxr-x--- 3 gitosis gitosis 4096 2009-07-29 22:26 private
    drwxr-x--- 7 gitosis gitosis 4096 2009-07-28 15:45 sandbox.git
    yabuki@Ernalda:~$ sudo ls -la /srv/gitosis/repositories/private
    合計 12
    drwxr-x--- 3 gitosis gitosis 4096 2009-07-29 22:26 .
    drwxr-xr-x 5 gitosis gitosis 4096 2009-07-29 22:26 ..
    drwxr-x--- 7 gitosis gitosis 4096 2009-07-29 22:26 yabuki.git
    
    になっています。

_ [Benchmark] EXT4, Btrfs, NILFS2 Performance Benchmarks

ぼちぼちとベンチマーク系の記事を後から参照しやすいように、カテゴライズしていこうかと。徐々にさかのぼって処理できたらいいな。(http://www.phoronix.com/scan.php?page=article&item=ext4_btrfs_nilfs2&num=1)

_ USENIX Security '09 is coming to Montreal, Canada, August 10-14

八月のカナダのモントリオールかあ。(http://www.usenix.org/events/sec09/index.html)