httpsでアクセスできるgitリポジトリの構築
問題
gitの共有リポジトリを作りたいです。
ssh://~ よりは
https://~ でアクセスできるものにしたいなと思っています(運用上の都合で)。
答え
http(s)でアクセスできるとだいたいのクライアント側も対応していて楽ですね。
sshはサーバーが新しいと古いクライアントから接続できなかったり、状況によってはつらいこともあります。
gitはhttpのアクセスに対応している
大昔はこんなに至れり尽くせりではなかったと思うのですが、ありがたいことです。
Smart HTTP はバージョン1.6.6以降で対応したようで、結構昔から対応しているようです。
Git – 対応プロトコル
https://git-scm.com/book/ja/v2/Git%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB
構築
以下の内容で簡単に構築可能。
Git – Smart HTTP
https://git-scm.com/book/ja/v2/Git%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-Smart-HTTP
Webサーバーがあって、CGIが利用できれば大丈夫という感じ。
公式サイトの説明は、Debian, Ubuntuの場合はそのまま適用可能。
CentOSなどRedHat系だと適宜読み替え。
/usr/lib/git-core/git-http-backend → /usr/libexec/git-core/git-http-backend
認証
要するにベーシック認証なので、htpasswdコマンドで設定可能。
$ htpasswd -c /opt/git/.htpasswd schacon
リポジトリを置いていく
GIT_PROJECT_ROOT で設定した場所に、リポジトリを置いていく。
共有リポジトリ用なので bare で。
空のリポジトリの作成の場合
$ cd /opt/git ← apacheにも設定した場所 $ mkdir test.git $ cd test.git $ git init --bare
既存のリポジトリから作成の場合
$ cd /opt/git ← apacheにも設定した場所 $ git clone --bare https://github.com/slimphp/Slim.git
置いたものはclone、push, pull できるようになる。
$ git clone https://example.com/git/test.git
配置
上の例にある /opt/git にフラットに並べる以外にも、ディレクトリ分けしてもよい。
/opt/git/dev1/project1.git なら、
git clone https://example.com/git/dev1/project1.git などで利用可能。
コメント