gitosis による git サーバーの管理 のバックアップ差分(No.1)

更新


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[公開メモ]]

#contents

* gitosis について [#kf89cbe7]

gitosis の説明は

- http://openbooth.org/archives/60.html

あたりを。

* Debian における gitosis リポジトリの作成 [#l4afdd75]

- http://openbooth.org/archives/65.html

と同様にやれば良いんだけれど、
はまるのは、git というユーザーではうまく行かない事。

gitosis というユーザーが自動的に作られるので、それを使う。

 LANG:console
 $ sudo aptitude install gitosis
  以下の新規パッケージがインストールされます:
    gitosis python-pkg-resources{a} python-setuptools{a} 
  更新: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
  284kB のアーカイブを取得する必要があります。展開後に 1217kB のディスク領域が新たに消費されます。
 $ cp ~/.ssh/id_rsa.pub ~gitosis/osamu_id_rsa.pub
 $ sudo su gitosis
 gitosis$ cd
 gitosis$ pwd
  /srv/gitosis
 gitosis$ gitosis-init < osamu_id_rsa.pub
  Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/
  Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
 gitosis$ rm osamu_id_rsa.pub
 gitosis$ ls -a
  .ssh     gitosis  repositories
 gitosis$ exit
 $ cd
 $ ssh gitosis@localhost
  PTY allocation request failed on channel 0
  ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
  Connection to localhost closed.
 $ git clone gitosis@localhost:gitosis-admin.git
  Initialized empty Git repository in /home/osamu/gitosis-admin/.git/
  remote: Counting objects: 5, done.
  remote: Compressing objects: 100% (4/4), done.
  remote: Total 5 (delta 0), reused 5 (delta 0)
  Receiving objects: 100% (5/5), done.
 $ cd gitosis-admin/

* 管理作業 [#u5d1b577]

- http://openbooth.org/archives/82.html

を参考に、osamu@another-server を管理者として登録してみる。

 LANG:console
 $ pwd
  ~/gitosis-admin/
 $ ls
  gitosis.conf
  
  keydir:
  osamu@debian-server.pub
 $ cat gitosis.conf
  [gitosis]
  
  [group gitosis-admin]
  writable = gitosis-admin
  members = osamu@debian-server
 $ jed gitosis.conf
  [gitosis]
  
  [group gitosis-admin]
  writable = gitosis-admin
  members = osamu@debian-server, osamu@another-server
 $ scp osamu@another-server:.ssh/id_rsa.pub keydir/osamu@another-server.pub
 $ git add keydir/osamu@another-server.pub
 $ git commit -a
  Created commit d7e6afb: osamu@another-server.pub was added as admin
   1 files changed, 1 insertions(+), 0 deletions(-)
   create mode 100644 keydir/takeuchi@dora.pub
 $ git status
  # On branch master
  nothing to commit (working directory clean)
 $ git push
  Counting objects: 6, done.
  Compressing objects: 100% (4/4), done.
  Writing objects: 100% (4/4), 730 bytes, done.
  Total 4 (delta 0), reused 0 (delta 0)
  To gitosis@localhost:gitosis-admin.git
     31412ce..d7e6afb  master -> master

これで追加されているはず。

 LANG:console
 $ ssh osamu@another-server
 $$ git clone gitosis@gitosis.server:gitosis-admin.git
  Initialized empty Git repository in ~/gitosis-admin/.git/
  remote: Counting objects: 10, done.
  remote: Compressing objects: 100% (9/9), done.
  remote: Total 10 (delta 1), reused 4 (delta 0)
  Receiving objects: 100% (10/10), done.
  Resolving deltas: 100% (1/1), done.
 $$ rm -r gitosis-admin

うまく行っている。

* 具体的な設定方法 [#u6460df3]

使い方は /usr/share/doc/gitosis/example/* を見る。

基本は、

 [group グループ名]
 members = member1 member2 member3 ...
 writable = リポジトリ1 リポジトリ2 リポジトリ3 ...
 readonly = リポジトリ1 リポジトリ2 リポジトリ3 ...

という設定。

あとは、必要に応じてリポジトリごとの設定。

 [repo foo]
 ## Allow gitweb to show this repository.
 gitweb = yes
 
 ## Oneline description of the project, mostly for gitweb.
 description = blah blah
 
 ## Owner of this repository. Used in gitweb list of projects.
 owner = John Doe
 
 ## Allow git-daemon to publish this repository.
 daemon = yes

gitosis でリポジトリへの書き込み権限を作ってから git push することになる。


Counter: 45190 (from 2010/06/03), today: 1, yesterday: 0