From b7a3ad2922cb407b18fb6c3489158dcbe533c6d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Gia=20Phong?= Date: Fri, 10 Oct 2025 00:22:15 +0900 Subject: [PATCH] services: gitile: Add git-owner-validation? configuration. * gnu/services/version-control.scm (gitile-configuration): Add git-owner-validation? field. * doc/guix.text (Version Control Services): Document it. Change-Id: I7d35e66e512fcaae25a5eac138b0fb2437a7c70c --- doc/guix.texi | 4 ++++ gnu/services/version-control.scm | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index c7ac849cccf4c996e76d16f5450cf451f53742dc..aeecf81061338011a75a3d4ae828d9aeaaa22264 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -42781,6 +42781,10 @@ The location of the repositories. Note that only public repositories will be shown by Gitile. To make a repository public, add an empty @file{git-daemon-export-ok} file at the root of that repository. +@item @code{git-owner-validation?} (default: @code{#t}) +Whether to check for the service user's ownership of repositories. +By default, Git will refuse to process a repository owned by another user. + @item @code{base-git-url} The base git url that will be used to show clone commands. diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm index 93038c8286b20fb08f2e43f112a78747724077ca..a7f40812a6cce6498b7d0785aed5e9fcad916054 100644 --- a/gnu/services/version-control.scm +++ b/gnu/services/version-control.scm @@ -86,7 +86,8 @@ gitile-configuration-port gitile-configuration-database gitile-configuration-repositories - gitile-configuration-git-base-url + gitile-configuration-git-owner-validation? + gitile-configuration-base-git-url gitile-configuration-index-title gitile-configuration-intro gitile-configuration-footer @@ -503,6 +504,8 @@ provide a web interface to view selected repositories."))) (default "/var/lib/gitile/gitile-db.sql")) (repositories gitile-configuration-repositories (default "/var/lib/gitolite/repositories")) + (git-owner-validation? gitile-configuration-git-owner-validation? + (default #t)) (base-git-url gitile-configuration-base-git-url) (index-title gitile-configuration-index-title (default "Index")) @@ -512,7 +515,8 @@ provide a web interface to view selected repositories."))) (default '())) (nginx gitile-configuration-nginx)) -(define (gitile-config-file host port database repositories base-git-url +(define (gitile-config-file host port database repositories + git-owner-validation? base-git-url index-title intro footer) (define build #~(write `(config @@ -520,6 +524,7 @@ provide a web interface to view selected repositories."))) (host #$host) (database #$database) (repositories #$repositories) + (git-owner-validation? #$git-owner-validation?) (base-git-url #$base-git-url) (index-title #$index-title) (intro #$intro) @@ -531,7 +536,7 @@ provide a web interface to view selected repositories."))) (define gitile-nginx-server-block (match-lambda (($ package host port database repositories - base-git-url index-title intro footer nginx) + git-owner-validation? base-git-url index-title intro footer nginx) (list (nginx-server-configuration (inherit nginx) (locations @@ -557,7 +562,7 @@ provide a web interface to view selected repositories."))) (define gitile-shepherd-service (match-lambda (($ package host port database repositories - base-git-url index-title intro footer nginx) + git-owner-validation? base-git-url index-title intro footer nginx) (list (shepherd-service (provision '(gitile)) (requirement '(loopback)) @@ -567,6 +572,7 @@ provide a web interface to view selected repositories."))) `(,#$gitile "-c" #$(gitile-config-file host port database repositories + git-owner-validation? base-git-url index-title intro footer)) #:user "gitile"