コンテンツにスキップ

cgit

  • cgit
  • fcgiwrap
  • gitolite3

gitolite

インストール

公開鍵の設定

ssh接続確認

ssh gitolite3@サーバーのホスト名

再設定

sudo dpkg-reconfigure gitolite3

リポジトリ設定

git clone gitolite3@example.com:gitolite-admin
  • gitolite-admin/conf/gitolite.conf
repo test-cgit
    RW+     =   admin
git add conf/gitolite.conf
git commit -m "Add test-cgit repository"
git push

nginxがアクセスできるようにする

sudo usermod -aG gitolite3 www-data

sudo namei -l /var/lib/gitolite3/repositories/test-cgit.git
#sudo chmod 750 /var/lib/gitolite3
sudo chmod -R g+rX /var/lib/gitolite3/repositories
  • /etc/gitolite3/gitolite.rc
UMASK => 0027,

cgit設定

  • /etc/cgitrc
project-list=/etc/cgit/projects.list
scan-path=/var/lib/gitolite3/repositories

virtual-root=/

/etc/cgit/projects.listの作成

sudo install -d -m 755 /etc/cgit
  • /etc/cgit/projects.list
test-cgit.git

グループ変更を反映

sudo systemctl restart fcgiwrap
sudo systemctl restart nginx

nginx

  • /etc/nginx/sites-available/cgit
server {
    server_name git.example.com;

    location /cgit-css/ {
        alias /usr/share/cgit/;
    }

    # cgit CGI
    location / {
        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME /usr/lib/cgit/cgit.cgi;
        fastcgi_param SCRIPT_NAME     /;
        fastcgi_param PATH_INFO       $uri;

        fastcgi_pass unix:/run/fcgiwrap.socket;
    }
}
sudo ln -s /etc/nginx/sites-available/cgit \
    /etc/nginx/sites-enabled/

sudo nginx -t
sudo systemctl reload nginx

ホスト名解決

git.example.com

HTTPS

sudo certbot --nginx -d git.example.com

テストデータ追加

git clone gitolite3@example.com:test-cgit
cd test-cgit

echo "Gitolite + cgit test" > README.md
git add README.md
git commit -m "Initial test"
git push origin HEAD

参考

初期設定

git config --global init.defaultBranch main

gitリポジトリ作成

sudo install -d -o root -g www-data -m 0750 /srv/git

sudo git init --bare --initial-branch=main /srv/git/example.git
sudo chown -R root:www-data /srv/git/example.git
#sudo chmod -R g+rX /srv/git/example.git

gitリポジトリにpush

git init -b main

echo "# example" > README.md
git add README.md

git commit -m "Initial commit"

git remote add origin /srv/git/example.git
git push -u origin main