= Contents = - [[#Git Server|Git Server]] - [[#Git Server#Autentisering|Autentisering]] - [[#Git Server#Autentisering#Autentisering HTTP|Autentisering HTTP]] - [[#Git Server#Autentisering#Autentisering HTTP#Framtiden|Framtiden]] - [[#Git Server#Autentisering#Autentisering SSH|Autentisering SSH]] - [[#Git Server#Autentisering#Autentisering SSH#Problem|Problem]] - [[#Git Server#Autentisering#Autentisering SSH#HTTP access|HTTP access]] - [[#Git Server#Autentisering#Autentisering SSH#gitweb.owner|gitweb.owner]] - [[#Git Server#Pull Requests|Pull Requests]] - [[#Taggning|Taggning]] - [[#Taggning#Cleanup|Cleanup]] - [[#Hooks|Hooks]] - [[#Hooks#Sample run of post-receive|Sample run of post-receive]] - [[#Hooks#Sample run of post-receive#COMMAND LINE|COMMAND LINE]] - [[#Hooks#Sample run of post-receive#ENVIRONMENT|ENVIRONMENT]] - [[#Hooks#Sample run of post-receive#STDIN|STDIN]] - [[#Hooks#Sample run of post-receive#Framtida förbättringar|Framtida förbättringar]] - [[#Hooks#Sample run of post-receive#Default config|Default config]] - [[#Hooks#Sample run of post-receive#Default config#cclite|cclite]] - [[#Hooks#Sample run of post-receive#Default config#VVVVVV|VVVVVV]] - [[#Hooks#Sample run of post-receive#Default config#password-store|password-store]] - [[#Hooks#Sample run of post-receive#Default config#reddit-parenthesis-bot|reddit-parenthesis-bot]] - [[#Hooks#Sample run of post-receive#Default config#cgit|cgit]] - [[#Hooks#Sample run of post-receive#Default config#guile-cairo|guile-cairo]] - [[#Hooks#Publish|Publish]] - [[#Hooks#Publish#in repo, for `/.githooks/${hookname}.d}/*.publish`|in repo, for `/.githooks/${hookname}.d}/*.publish`]] - [[#Hooks#Publish#config|config]] - [[#Hooks#Publish#publish|publish]] = Git Server = https://git.hornquist.se [[wn.private:git-hooks]] == Autentisering == === Autentisering HTTP === ==== Framtiden ==== Det jag vill ha är ett grupp-baserat system där jag enkelt kan lägga till användare. Varje användare är med i ett antal gruppen, och varje repo har en användare och en grupp. Autentiseringssystemet ska gärna vara skillt från Unix's system (men fungera ungefär lika dant). === Autentisering SSH === Gitolite används för authentisering på serversidan. Dock har det vissa problem: - [[#HTTP access]] - [[#gitweb.owner]] ==== Problem ==== :TODO: 2018-12-28 Jag satte upp gitolite, och pull fungerade bra. Dock med vissa autentiseringsskavanker enligt nedan. Dock gick repon:a sönder när jag drog från dem via HTTP. Tror det hade att göra med filrättigheter. Om nginx låter en sätta användare per sub-sida skulle det lösa problemen. ==== HTTP access ==== För nuvarande är HTTP-access allt eller inget på repo:na markerade daemon. Förhoppningen är att det ska gå att sätta upp HTTP konton, vilkas rättigheter sedan administreras genom gitolite. Även vilka konton som finns får gärna administreras genom gitolite. ==== gitweb.owner ==== Då (planen är att) cgit ska autentisera användare mot fälten `gitweb.{owner,group}` behöver dem propageras ut från gitolite. Alternativt att någon form av gemensamm config sätts, som trycker till dem båda. == Pull Requests == Taget från [[Vimwiki]]: Jag bör från varje wiki sida länka till motsvarande git sida. (http://wiki.hornquist.se & http://git.hornquist.se/vimwiki ). Sen bör servern tillåta smidiga pull-requests för att andra ska kunna förbättra. En lösning är att ha fyra access-nivåer till servern (eller åtminstånde repo): - Enbart läsning - Push skapar ny gren (pull request) - Kan jobba på existerande grenar (som de inte skapat) - Full access = Taggning = {{{ find -type d -name \*.git -execdir env GIT_DIR={} git config gitweb.category Liu \; }}} == Cleanup == :TODO: - [ ] `gitweb.category` should be set automaticly = Hooks = - [[gitserver-documentation]] == Sample run of post-receive == Repo stored in `~git/git/test.git`, pushed over SSH. === COMMAND LINE === {{{ argv ['/dev/fd/4'] cwd '/home/git/git/test.git' }}} === ENVIRONMENT === {{{ DBUS_SESSION_BUS_ADDRESS 'unix:path=/run/user/1001/bus' GIT_DIR '.' GIT_EXEC_PATH '/usr/lib/git-core' GIT_PUSH_OPTION_COUNT '0' HOME '/home/git' LANG 'en_US.UTF-8' LANGUAGE 'en_US:en' LOGNAME 'git' MOTD_SHOWN 'pam' PATH '/usr/lib/git-core:/home/git/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin' PWD '/home/git' SHELL '/bin/bash' SHLVL '0' SSH_CLIENT '46.59.41.54 60166 22' SSH_CONNECTION '46.59.41.54 60166 90.143.207.193 22' USER 'git' XDG_RUNTIME_DIR '/run/user/1001' XDG_SESSION_CLASS 'user' XDG_SESSION_ID '59490' XDG_SESSION_TYPE 'tty' _ '/usr/bin/git-receive-pack' GITHOOKS '1' }}} === STDIN === {{{ 7aaa112c7563e535f71f99e79fc3bf008f45750d 432ef726ac54c0acecc9c9728129413510e518b4 refs/heads/master }}} === Framtida förbättringar === - `enable-remote-branches` ([[man:cgitrc#5]]) - Vad händer om ett repo har både subdir och kattegori - Vad händer om de inte stämmer överrens? - Delade repositories - gitolite? === Default config === {{{ [core] repositoryformatversion = 0 filemode = true bare = true }}} 41adefcd1f91e91d473275a100d31a2c ===== cclite ===== [remote "origin"] url = https://github.com/Sorroko/cclite ===== VVVVVV ===== [remote "origin"] url = https://github.com/TerryCavanagh/VVVVVV fetch = `+refs/heads/*:refs/remotes/origin/*` ===== password-store ===== [remote "upstream"] url = https://git.zx2c4.com/password-store fetch = `+refs/heads/*:refs/remotes/upstream` ===== reddit-parenthesis-bot ===== [gitweb] category = fork [remote "origin"] url = https://github.com/HugoNikanor/reddit-parenthesis-bot ===== cgit ===== [gitweb] group = cgit category = fork [remote "upstream"] url = git://git.zx2c4.com/cgit fetch = `+refs/heads/*:refs/remotes/upstream/*` ===== guile-cairo ===== [gitweb] category = fork [remote "upstream"] url = git://git.savannah.nongnu.org/guile-cairo.git fetch = `+refs/heads/*:refs/remotes/upstream/*` == Publish == githooks.hornquist.se? https://git.hornquist.se/githooks/ ⇒ https://githooks.hornquist.se/githooks/ /githooks/commit/?id= /calp/tag/?h=v0.5.9 === in repo, for `/.githooks/${hookname}.d}/*.publish` === Setup containerized environment? === config === if `githooks.checkout = true` end env GIT_SOURCE_URL=https://git.hornquist.se/githooks/tree/${filename} GIT_REPO_DIR=${repo_dir} TARGET_DIRECTORY=${target_directory} PUBLISH=${target_directory}/file-to-publish === publish === {{{ find -t file ?