Subject: Re: [bug#77186] [PATCH v2 04/13] services: gitolite-rc-file: Add extra-content field.

From: Tomas Volf <[email-masked]>
Date: Thu, 27 Mar 2025 18:43:23 +0100

Maxim Cournoyer <[email-masked]> writes:

> Hi,
>
> Tomas Volf <[email-masked]> writes:
>
>> * gnu/services/version-control.scm (<gitolite-rc-file>): Add extra-content
>> field.
>> (gitolite-rc-file-compiler): Handle it during configuration file generation.
>> * doc/guix.texi (Version Control Services): Document it.
>>
>> Change-Id: I5082e1d7a27cc746641ba9ec8ae07c703da5f279
>> ---
>>  doc/guix.texi                    | 3 +++
>>  gnu/services/version-control.scm | 8 ++++++--
>>  2 files changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/doc/guix.texi b/doc/guix.texi
>> index 2c7ddb2f55..e60fef9673 100644
>> --- a/doc/guix.texi
>> +++ b/doc/guix.texi
>> @@ -41164,6 +41164,9 @@ Version Control Services
>>  @item @code{enable} (default: @code{'("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb")})
>>  This setting controls the commands and features to enable within Gitolite.
>>  
>> +@item @code{extra-content} (default: @code{""})
>> +Extra content to add verbatim into the @code{%RC} hash.
>
> What is the %RC hash?

It is the hash containing the configuration.  Gitolite's configuration
file is just a piece of perl source code, in the form of:

--8<---------------cut here---------------start------------->8---
%RC = (

    # ------------------------------------------------------------------

    # default umask gives you perms of '0700'; see the rc file docs for
    # how/why you might change this
    UMASK                           =>  0077,

    # look for "git-config" in the documentation
    GIT_CONFIG_KEYS                 =>  '',

    [...]
);

# ------------------------------------------------------------------------------
# per perl rules, this should be the last line in such a file:
1;
--8<---------------cut here---------------end--------------->8---

So this field is verbatim added at the end of the hash, serving as an
escape hatch to configure properties not yet supported by the
gitolite-rc-file.

I realize the description of the field requires some knowledge of how
gitolite is configured, and I am open to suggestions on how to improve
it, if you have any. :)

Tomas

-- 
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.