diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-16 20:25:27 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-16 20:25:27 +0200 |
commit | 9b4fb13f94bc8fa2f7d50519652bead8ede4ee3a (patch) | |
tree | bf9f324c19e92a4759535cd3793366eebfae0439 /_posts/2021-04-28-git.md | |
parent | b07eb8d1c06e582e5f177c159d820778029a9d93 (diff) |
move stuff around
Diffstat (limited to '_posts/2021-04-28-git.md')
-rw-r--r-- | _posts/2021-04-28-git.md | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/_posts/2021-04-28-git.md b/_posts/2021-04-28-git.md deleted file mode 100644 index 48de24b..0000000 --- a/_posts/2021-04-28-git.md +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: My git setup -subtitle: How I use git on my server -tags: - - git - - server - - software -cover: /img/git.png ---- - -## Overview - -I have two mechanisms set up for accessing my git server. I use gitolite for -ssh access and permission management. I also have cgit set up which generates -html pages for viewing your repositories and also hosts your repositories over -http, or https if you have it set up. - -## SSH Access with gitolite - -Gitolite was a pain in the ass to set up because I didn't understand umasks -before I started trying to set it up. A *umask* is like the opposite of what -you'd enter when running `chmod`. For example: if I run `touch test`, I will -now have a file with the same permissions as `chmod 644`. That looks something -like this: - -```sh -$ touch test -$ ls -l -total bla bla --rw-r--r-- 1 loek users 0 Apr 28 12:28 test -$ chmod 644 test -$ ls -l -total bla bla --rw-r--r-- 1 loek users 0 Apr 28 12:28 test -$ # notice the same permissions on the 'test' file -``` - -If I want gitolite to create repositories with default permissions so other -users can read the repositories, I have to set my umask to the opposite of 644. -Here's a quick explanation of `ls -l`'s output: - -```sh --rw-r--r-- * user group size date time filename -|└┬┘└┬┘└┬┘ -| | | └all users -| | └owner group -| └owner user -└type -``` - -Each digit in a `chmod` command sets the permission for the file owner, file -group, then everyone. That looks something like this: - -```sh -$ chmod 644 test - -decimal: 6 4 4 -binary: 110 100 100 -ls -l: - rw- r-- r-- -``` - -Then we take the opposite of this to get the umask: - -```sh -$ chmod 755 directory -R - -ls -l: d rwx r-x r-x -binary: 000 010 010 -decimal: 0 2 2 -``` - -And now my `.gitolite.rc`: - -```perl -%RC = ( - UMASK => 0022, - ROLES => { - READERS => 1, - WRITERS => 1, - }, - - ENABLE => [ - 'ssh-authkeys', - 'git-config', - 'daemon', - 'gitweb', - ], -); - -1; -``` - -## HTTP(S) Access with cgit - -Cgit is probably the easiest thing to set up. It has great built-in -documentation (`man 5 cgitrc`). Pretty much all configuration is in -`/etc/cgitrc` (css/syntax highlighting isn't in there). The only reason I'm -posting my config here is because for some reason, the order of the options in -cgit's config matters: - -```rc -# -# cgit config -# see cgitrc(5) for details - -cache-size=0 -enable-commit-graph=1 - -css=/cgit.css -logo=/cgit.png - -virtual-root=/ -remove-suffix=1 - -root-title=git :tada: - -## -## List of common mimetypes -## -mimetype.gif=image/gif -mimetype.html=text/html -mimetype.jpg=image/jpeg -mimetype.jpeg=image/jpeg -mimetype.pdf=application/pdf -mimetype.png=image/png -mimetype.svg=image/svg+xml - -# Highlight source code with python pygments-based highlighter -source-filter=/usr/lib/cgit/filters/syntax-highlighting.py - -# Format markdown, restructuredtext, manpages, text files, and html files -# through the right converters -about-filter=/usr/lib/cgit/filters/about-formatting.sh - -## -## Search for these files in the root of the default branch of repositories -## for coming up with the about page: -## -readme=:README.md -readme=:readme.md -readme=:README.rst -readme=:readme.rst -readme=:README.txt -readme=:readme.txt -readme=:README -readme=:readme -readme=:INSTALL.md -readme=:install.md -readme=:INSTALL.mkd -readme=:install.mkd -readme=:INSTALL.rst -readme=:install.rst -readme=:INSTALL.html -readme=:install.html -readme=:INSTALL.htm -readme=:install.htm -readme=:INSTALL.txt -readme=:install.txt -readme=:INSTALL -readme=:install - -scan-path=/mnt/scf/git/repositories -``` - |