fetchgit: add preFetch hook (#404488)

This commit is contained in:
Philip Taron
2025-05-06 10:12:24 -07:00
committed by GitHub
3 changed files with 14 additions and 2 deletions

View File

@@ -773,9 +773,14 @@ Additionally, the following optional arguments can be given:
: Whether to fetch LFS objects.
*`preFetch`* (String)
: Shell code to be executed before the repository has been fetched, to allow
changing the environment the fetcher runs in.
*`postFetch`* (String)
: Shell code executed after the file has been fetched successfully.
: Shell code executed after the repository has been fetched successfully.
This can do things like check or transform the file.
*`leaveDotGit`* (Boolean)

View File

@@ -6,6 +6,8 @@
echo "exporting $url (rev $rev) into $out"
runHook preFetch
$SHELL $fetcher --builder --url "$url" --out "$out" --rev "$rev" --name "$name" \
${leaveDotGit:+--leave-dotGit} \
${fetchLFS:+--fetch-lfs} \

View File

@@ -38,6 +38,11 @@ lib.makeOverridable (
nonConeMode ? false,
name ? null,
nativeBuildInputs ? [ ],
# Shell code executed before the file has been fetched. This, in
# particular, can do things like set NIX_PREFETCH_GIT_CHECKOUT_HOOK to
# run operations between the checkout completing and deleting the .git
# directory.
preFetch ? "",
# Shell code executed after the file has been fetched
# successfully. This can do things like check or transform the file.
postFetch ? "",
@@ -75,7 +80,6 @@ lib.makeOverridable (
server admins start using the new version?
*/
assert deepClone -> leaveDotGit;
assert nonConeMode -> (sparseCheckout != [ ]);
let
@@ -130,6 +134,7 @@ lib.makeOverridable (
deepClone
branchName
nonConeMode
preFetch
postFetch
;
rev = revWithTag;