Subject: [bug#50274] [PATCH] guix: git: Adds feature to download git repository to the store.

From: Ludovic Courtès <[email-masked]>
Date: Thu, 30 Sep 2021 22:03:05 +0200

Hi,

Sarah Morgensen <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> writes:
>
>>> +(define* (download-git-to-store store url commit
>>> +				#:optional (name (basename url))
>>> +                                #:key (log (current-error-port)) recursive?)
>>> +  "Download Git repository from URL at COMMIT to STORE, either under NAME or
>>> +URL's basename if omitted.  Write progress reports to LOG.  RECURSIVE? has the
>>> +same effect as the same-named parameter of 'git-fetch'."
>>
>> Can we use ‘latest-repository-commit’ instead?  The difference is that
>> it’ll populate ~/.cache/guix/checkouts, but I think that’s fine.
>>
>> OTOH, if we want to make it easier to support other VCSes, we can choose
>> to not use (guix git) at all and instead use ‘git-fetch’ in (guix
>> git-download), ‘hg-fetch’ in (guix hg-download), etc.  This code would
>> go to (guix scripts hash).
>>
>> WDYT?
>
> Would using 'git-fetch' mean that it's already in the store (and
> therefore won't be redownloaded) when it's subsequently used in a
> source?  That would be even better than latest-repository-commit!

Yes, you’re right.

> (Presumably --with-commit and friends also use 'git-fetch'?)

No, they use ‘latest-repository-commit’ (via <git-checkout>) because
it’s a case where you can’t use an <origin> because the content hash is
not known in advance (and the commit is also unknown when you use
‘--with-branch’).

Ludo’.