SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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 などで利用可能。

関連するメモ

コメント