Skip to content

Commit

Permalink
nix-prefetch-git: fix make_deterministic_repo in submodules
Browse files Browse the repository at this point in the history
  • Loading branch information
Aleksanaa committed Aug 31, 2023
1 parent 85eb935 commit 981754a
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions pkgs/build-support/fetchgit/nix-prefetch-git
Original file line number Diff line number Diff line change
Expand Up @@ -256,9 +256,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"
Expand All @@ -276,7 +282,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
Expand Down Expand Up @@ -325,7 +331,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
}
Expand Down

0 comments on commit 981754a

Please sign in to comment.