コンテンツにスキップ

cgit

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

cgit

  • /etc/cgitrc
scan-path=/srv/git

virtual-root=/

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

テスト

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

gitolite

インストール

公開鍵の設定

ssh接続確認

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

再設定

sudo dpkg-reconfigure gitolite3

リポジトリ設定

git clone gitolite3@サーバーのホスト名: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

cgit設定

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,
  • /etc/cgitrc
project-list=/etc/cgit/projects.list
scan-path=/var/lib/gitolite3/repositories
  • /etc/cgit/projects.list
sudo install -d -m 755 /etc/cgit
test-cgit.git

グループ変更を反映

sudo systemctl restart fcgiwrap
sudo systemctl restart nginx

テスト

git clone gitolite3@サーバーのホスト名:test-cgit
cd test-cgit

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