Fork me on GitHub

Git Gitプロトコルでリポジトリを共有

  • Aug 19, 2009

categoryプラグインは存在しません。

環境

概要

gitプロトコルを使ってリポジトリをpullし、sshなどでpushする方法です。

手順

gitのインストール

とりあえずgitはインストール済みであるとします。

git-daemonのインストール

ここでは、xinitdを使ってgit-daemonを起動させます。

  • /etc/xinetd.d/ 内に git というファイル名で以下の内容を保存
# default: off
# description: The git server offers access to git repositories
service git
\{
       disable = no
       type            = UNLISTED
       port            = 9418
       socket_type     = stream
       wait            = no
       user            = nobody
       server          = /usr/bin/git-daemon
       server_args     = --inetd --export-all --base-path=/var/git --enable=receive-pack
       log_on_failure  += USERID
\}
  • xinetdを再起動
sudo /etc/init.d/xinetd restart

リポジトリの作成

リポジトリは通常のGitと同じようにbareのものを作成します。

cd ~/git
mkdir hoge.git
cd hoge.git
git --bare init
touch git-daemon-export-ok

書き込み権などは、通常のファイルシステム同様、コミット権のあるユーザだけが書き込み可能なように設定しておきます。

chgrp -R hoge .
chmod g+ws .

リポジトリの公開

リポジトリは、実体を/var/git に置くか、リンクしておきます。

sudo mkdir -p /var/git
cd /var/git
sudo ln -s ~/git/hoge.git

nobodyから読み取れるようにはしておきます。

リポジトリの取得

リポジトリを取得する場合は、

git clone git://server/hoge

などと指定します。

リポジトリの更新

更新は、通常ssh経由で行います。

git push ssh://server/~user/git/hoge master

clone, pullなどもsshで行っても良いです。

コメント

commentプラグインは存在しません。