GitFileSystemObjectSink: Add path context to some messages

This commit is contained in:
Robert Hensing 2024-07-01 17:13:48 +02:00
parent 992912f3b4
commit 1fac22b16e

View file

@ -927,7 +927,7 @@ struct GitFileSystemObjectSinkImpl : GitFileSystemObjectSink
std::string_view relTargetLeft(relTarget); std::string_view relTargetLeft(relTarget);
while (hasPrefix(relTargetLeft, "../")) { while (hasPrefix(relTargetLeft, "../")) {
if (dir == pendingDirs.rend()) if (dir == pendingDirs.rend())
throw Error("invalid hard link target '%s'", target); throw Error("invalid hard link target '%s' for path '%s'", target, path);
++dir; ++dir;
relTargetLeft = relTargetLeft.substr(3); relTargetLeft = relTargetLeft.substr(3);
} }
@ -940,13 +940,14 @@ struct GitFileSystemObjectSinkImpl : GitFileSystemObjectSink
for (auto & c : CanonPath(relTargetLeft)) { for (auto & c : CanonPath(relTargetLeft)) {
if (auto builder = std::get_if<git_treebuilder *>(&curDir)) { if (auto builder = std::get_if<git_treebuilder *>(&curDir)) {
assert(*builder);
if (!(entry = git_treebuilder_get(*builder, std::string(c).c_str()))) if (!(entry = git_treebuilder_get(*builder, std::string(c).c_str())))
throw Error("cannot find hard link target '%s'", target); throw Error("cannot find hard link target '%s' for path '%s'", target, path);
curDir = *git_tree_entry_id(entry); curDir = *git_tree_entry_id(entry);
} else if (auto oid = std::get_if<git_oid>(&curDir)) { } else if (auto oid = std::get_if<git_oid>(&curDir)) {
tree = lookupObject(*repo, *oid, GIT_OBJECT_TREE); tree = lookupObject(*repo, *oid, GIT_OBJECT_TREE);
if (!(entry = git_tree_entry_byname((const git_tree *) &*tree, std::string(c).c_str()))) if (!(entry = git_tree_entry_byname((const git_tree *) &*tree, std::string(c).c_str())))
throw Error("cannot find hard link target '%s'", target); throw Error("cannot find hard link target '%s' for path '%s'", target, path);
curDir = *git_tree_entry_id(entry); curDir = *git_tree_entry_id(entry);
} }
} }