1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-25 10:41:16 +02:00

fetchGit/fetchMercurial: Filter out directories with untracked files

This commit is contained in:
Eelco Dolstra 2017-11-03 13:48:02 +01:00
parent 4dee01da7c
commit ee6ac38848
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
4 changed files with 28 additions and 14 deletions

View file

@ -47,11 +47,15 @@ HgInfo exportMercurial(ref<Store> store, const std::string & uri,
PathFilter filter = [&](const Path & p) -> bool {
assert(hasPrefix(p, uri));
auto st = lstat(p);
std::string file(p, uri.size() + 1);
if (file == ".hg") return false;
// FIXME: filter out directories with no tracked files.
if (S_ISDIR(st.st_mode)) return true;
auto st = lstat(p);
if (S_ISDIR(st.st_mode)) {
auto i = files.lower_bound(file);
return i != files.end() && hasPrefix(*i, file);
}
return files.count(file);
};