diff options
author | Domen Kožar <domen@dev.si> | 2023-10-16 11:12:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-16 11:12:11 +0100 |
commit | 3c6cf394353a0a34fb6318173f7903f9bad25db7 (patch) | |
tree | 8b203ae65d0302d820ec50360e45bb2cc0820379 /pkgs/build-support | |
parent | 493c4e6a0cfb9b05cdc870cbd94b10a0528aff4a (diff) | |
parent | 981754aba87cb66ed37485632e39235e7f6fe381 (diff) | |
download | nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.tar nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.tar.gz nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.tar.bz2 nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.tar.lz nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.tar.xz nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.tar.zst nixpkgs-3c6cf394353a0a34fb6318173f7903f9bad25db7.zip |
Merge pull request #249733 from Aleksanaa/nix-prefetch-git
nix-prefetch-git: fix make_deterministic_repo in submodules
Diffstat (limited to 'pkgs/build-support')
-rwxr-xr-x | pkgs/build-support/fetchgit/nix-prefetch-git | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git index 018cf692b88..feb6c9e3053 100755 --- a/pkgs/build-support/fetchgit/nix-prefetch-git +++ b/pkgs/build-support/fetchgit/nix-prefetch-git @@ -257,9 +257,15 @@ make_deterministic_repo(){ cd "$repo" # Remove files that contain timestamps or otherwise have non-deterministic # properties. - rm -rf .git/logs/ .git/hooks/ .git/index .git/FETCH_HEAD .git/ORIG_HEAD \ - .git/refs/remotes/origin/HEAD .git/config - + if [ -f .git ]; then + local dotgit_content=$(<.git) + local dotgit_dir="${dotgit_content#gitdir: }" + else + local dotgit_dir=".git" + fi + pushd "$dotgit_dir" + rm -rf logs/ hooks/ index FETCH_HEAD ORIG_HEAD refs/remotes/origin/HEAD config + popd # Remove all remote branches. git branch -r | while read -r branch; do clean_git branch -rD "$branch" @@ -277,7 +283,7 @@ make_deterministic_repo(){ # Do a full repack. Must run single-threaded, or else we lose determinism. clean_git config pack.threads 1 clean_git repack -A -d -f - rm -f .git/config + rm -f "$dotgit_dir/config" # Garbage collect unreferenced objects. # Note: --keep-largest-pack prevents non-deterministic ordering of packs @@ -323,7 +329,7 @@ clone_user_rev() { find "$dir" -name .git -print0 | xargs -0 rm -rf else find "$dir" -name .git | while read -r gitdir; do - make_deterministic_repo "$(readlink -f "$gitdir/..")" + make_deterministic_repo "$(readlink -f "$(dirname "$gitdir")")" done fi } |