From: "Ludovic Courtès" <ludo@gnu.org>
To: Tomas Volf <~@wolfsden.cz>
Cc: 69780@debbugs.gnu.org
Subject: [bug#69780] [PATCH 1/4] git authenticate: Record introduction and keyring in ‘.git/config’.
Date: Tue, 19 Mar 2024 14:32:47 +0100 [thread overview]
Message-ID: <87sf0m4a9s.fsf@gnu.org> (raw)
In-Reply-To: <ZfYIVJRAq3-8VG-N@ws> (Tomas Volf's message of "Sat, 16 Mar 2024 22:00:04 +0100")
Hi Tomas!
Tomas Volf <~@wolfsden.cz> skribis:
>> +(define* (record-configuration repository
>> + #:key commit signer keyring-reference)
>> + "Record COMMIT, SIGNER, and KEYRING-REFERENCE in the 'config' file of
>> +REPOSITORY."
>> + (define directory
>> + (repository-directory repository))
>> +
>> + (define config-file
>> + (in-vicinity directory "config"))
>
> I do not think this will work with worktrees. It will create the config file in
> the worktree's git directory, but that file will be ignored by git.
>
> scheme@(guile-user)> (repository-discover "/home/xx/src/guix-wt/patch-1")
> $7 = "/home/xx/src/guix/.git/worktrees/orig/"
> scheme@(guile-user)> (repository-open $7)
> $8 = #<git-repository 128cbe0>
> scheme@(guile-user)> (repository-directory $8)
> $9 = "/home/xx/src/guix/.git/worktrees/orig/"
> scheme@(guile-user)> (in-vicinity $9 "config")
> $10 = "/home/xx/src/guix/.git/worktrees/orig/config"
>
> The $10 should be "/home/xx/src/guix/.git/config" instead.
Damn it. So hmm, I can see two options:
1. Add more bindings to (git config) in Guile-Git so we can populate
that file “the right way”. But then we’ll have to require that
newer version of Guile-Git.
2. Bail out when the ‘.git/config’ isn’t found, as in the case of
worktrees; we can change that to use the proper (git config)
eventually.
Maybe we should go straight to #1 though. Thoughts?
>> + (call-with-port (open-file config-file "a")
>> + (lambda (port)
>> + (format port "
>> +# Added by 'guix git authenticate'.
>> +[guix \"authentication\"]
>> + introduction-commit = ~a
>> + introduction-signer = ~a
>> + keyring = ~a~%"
>> + commit signer keyring-reference)))
>
> I guess these specific values might not need any escaping? But the escaping
> (and the previous problem) would be solved by just shelling out to the `git
> config --local ...' to set the value. Something to consider.
No escaping is needed in this case. Things will be even clearer if/when
we switch to (git config).
>> + (unless (configured? repository)
>> + (record-configuration repository
>> + #:commit commit #:signer signer
>> + #:keyring-reference keyring))
>
> Hm, so this records the information only on the very first successful
> authentication?
Right.
> So if I re-run with different values (e.g. I am creating a new channel
> and `git commit --amend'-ed after checking the authorization), I am
> stuck with the (now) invalid values forever until I edit the
> .git/config by hand?
You mean if you change the introduction? Yes.
> Also (as Skyler Ferris already mentioned) this ignores the case of multiple
> branches with different authentication origins (I actually do have such use
> case), so the suggested option of storing it per-branch might be nice. Not sure
> how to deal with pruning of old values though (if at all?).
Oh right. Needs some thought.
Thanks for your feedback!
Ludo’.
next prev parent reply other threads:[~2024-03-19 13:33 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-13 17:40 [bug#69780] [PATCH 0/4] Simplify 'guix git authenticate' usage Ludovic Courtès
2024-03-13 17:42 ` [bug#69780] [PATCH 1/4] git authenticate: Record introduction and keyring in ‘.git/config’ Ludovic Courtès
2024-03-16 21:00 ` Tomas Volf
2024-03-19 13:32 ` Ludovic Courtès [this message]
2024-03-20 16:03 ` Ludovic Courtès
2024-03-20 22:13 ` Tomas Volf
2024-03-29 10:34 ` Ludovic Courtès
2024-03-31 12:24 ` Tomas Volf
2024-04-07 20:38 ` [bug#69780] [PATCH v2 0/5] Simplify 'guix git authenticate' usage Ludovic Courtès
2024-04-12 14:52 ` Ludovic Courtès
2024-05-01 15:52 ` bug#69780: " Ludovic Courtès
2024-04-07 20:38 ` [bug#69780] [PATCH v2 1/5] git authenticate: Record introduction and keyring in ‘.git/config’ Ludovic Courtès
2024-04-07 20:38 ` [bug#69780] [PATCH v2 2/5] git authenticate: Discover the repository Ludovic Courtès
2024-04-07 20:38 ` [bug#69780] [PATCH v2 3/5] git authenticate: Print something upon success Ludovic Courtès
2024-04-07 20:38 ` [bug#69780] [PATCH v2 4/5] git authenticate: Install pre-push and post-checkout hooks Ludovic Courtès
2024-04-07 20:38 ` [bug#69780] [PATCH v2 5/5] DRAFT news: Add entry for ‘guix git authenticate’ changes Ludovic Courtès
2024-03-13 17:42 ` [bug#69780] [PATCH 2/4] git authenticate: Discover the repository Ludovic Courtès
2024-03-13 17:42 ` [bug#69780] [PATCH 3/4] git authenticate: Install pre-push and post-checkout hooks Ludovic Courtès
2024-03-16 21:09 ` Tomas Volf
2024-03-19 14:02 ` Ludovic Courtès
2024-03-13 17:42 ` [bug#69780] [PATCH 4/4] DRAFT news: Add entry for ‘guix git authenticate’ changes Ludovic Courtès
2024-03-14 14:51 ` pelzflorian (Florian Pelz)
2024-03-19 14:02 ` Ludovic Courtès
2024-03-15 0:58 ` Skyler Ferris via Guix-patches via
2024-03-19 14:12 ` Ludovic Courtès
2024-03-21 1:43 ` Skyler Ferris via Guix-patches via
2024-03-21 2:14 ` Skyler Ferris via Guix-patches via
2024-03-21 14:13 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87sf0m4a9s.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=69780@debbugs.gnu.org \
--cc=~@wolfsden.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.