[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re-evaluating the practice of automating user configuration
From: |
Tomas Volf |
Subject: |
Re: Re-evaluating the practice of automating user configuration |
Date: |
Thu, 19 Oct 2023 17:04:34 +0200 |
On 2023-10-19 16:36:32 +0200, Liliana Marie Prikler wrote:
> Hi Guix,
>
> as we all are more or less aware of, Guix automates quite much of the
> user's configuration for comfortably hacking on our codebase. As has
> been argued elsewhere, both by myself and fellow Guix, this is not
> always a good thing.
>
> Let's start with the cleanest example of how to do things the right
> way: Our Emacs configuration is split across two files (one of which is
> a directory, but let's get back to that). One of them are the
> directory-local variables stored in .dir-locals.el, the other the
> snippets in etc/snippets–if you're using YASnippet, the former loads
> the latter. I have no qualms with this being automated, as Emacs
> itself gives me plenty opportunity of opting out of it. I could
> declare any of the included variables or forms unsafe and ignore them
> in future sessions. Likewise, I can mark them as safe to affirm my
> consent that these variables be changed in /path/to/guix/checkout.
>
> None of this holds for the git config, which we install unasked in the
> working tree with a DATA target that we want neither distributed nor
> installed otherwise. This has led to confusion both in the mailing
> lists and the IRC on multiple occasions, so I'd propose we instead use
> PHONY targets for:
> 1. git-hooks to install the git hooks that committers need.
> 2. git-config to install all of the git config
> a. git-config-diff to just install the diff xfuncs
> b. git-config-format to just install the format block
> c. git-config-pull to just install the pull block
> d. git-config-sendemail to just install the sendemail block
> 3. git-fullconfig for both 1 and 2.
>
> Internally, these would still be based on the actual file names to get
> time-stamps to work. Thus, on a fresh pull or if you haven't pulled in
> a while, you can run either `git fullconfig` or any of the above to set
> things up.
>
> Incidentally, my .git/config currently reads the following:
>
> [include]
> path = ../etc/git/gitconfig
> path = ../etc/git/gitconfig
> path = ../etc/git/gitconfig
> path = ../etc/git/gitconfig
>
> So clearly, automatically hooking up these configurations could be done
> more cleanly :)
>
> WDYT?
>
I have to admit I was surprised, and not in a pleasant way. When I started
playing with Guix, I went over the etc/git/gitconfig and copied the parts I
liked into the .git/config. For some reason I do not like tools automatically
touching the .git directory, and now I have the include there (5 times).
I think turning it into a manual step, with the granularity proposed above, is a
good and welcomed solution. At least in my opinion.
Have a nice day,
Tomas Volf
--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
signature.asc
Description: PGP signature