diff options
author | alois31 <alois1@gmx-topmail.de> | 2024-06-19 07:08:19 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@localhost> | 2024-06-19 07:08:19 +0000 |
commit | fed34594d8d6783397a45359b509e05177efd5ab (patch) | |
tree | 2ec709aa53866f85e79573943c1b81adbc278322 | |
parent | 85f282ef572577899b3d80ba8def1b920a386218 (diff) | |
parent | aa00a5a8c9ba7b74c2102b8dc7fc4c3ed58606d8 (diff) |
Merge "libfetchers: represent unfetched submodules consistently" into main
-rw-r--r-- | src/libfetchers/git.cc | 2 | ||||
-rw-r--r-- | tests/functional/fetchGitSubmodules.sh | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/libfetchers/git.cc b/src/libfetchers/git.cc index 07cbc781c..2817fde23 100644 --- a/src/libfetchers/git.cc +++ b/src/libfetchers/git.cc @@ -232,7 +232,7 @@ std::pair<StorePath, Input> fetchFromWorkdir(ref<Store> store, Input & input, co if (S_ISDIR(st.st_mode)) { auto prefix = file + "/"; auto i = files.lower_bound(prefix); - return i != files.end() && (*i).starts_with(prefix); + return (i != files.end() && (*i).starts_with(prefix)) || files.count(file); } return files.count(file); diff --git a/tests/functional/fetchGitSubmodules.sh b/tests/functional/fetchGitSubmodules.sh index df81232e5..3ff6697fd 100644 --- a/tests/functional/fetchGitSubmodules.sh +++ b/tests/functional/fetchGitSubmodules.sh @@ -40,6 +40,7 @@ initGitRepo $rootRepo git -C $rootRepo submodule init git -C $rootRepo submodule add $subRepo sub git -C $rootRepo add sub +r0=$(nix eval --impure --raw --expr "(builtins.fetchGit { url = file://$rootRepo; }).outPath") git -C $rootRepo commit -m "Add submodule" rev=$(git -C $rootRepo rev-parse HEAD) @@ -48,6 +49,7 @@ r1=$(nix eval --raw --expr "(builtins.fetchGit { url = file://$rootRepo; rev = \ r2=$(nix eval --raw --expr "(builtins.fetchGit { url = file://$rootRepo; rev = \"$rev\"; submodules = false; }).outPath") r3=$(nix eval --raw --expr "(builtins.fetchGit { url = file://$rootRepo; rev = \"$rev\"; submodules = true; }).outPath") +[[ $r0 == $r1 ]] # verify that unfetched submodules result in empty directories in dirty mode too [[ $r1 == $r2 ]] [[ $r2 != $r3 ]] |