attr: Do not walk path if we're at the root
diff --git a/src/attr.c b/src/attr.c
index fd0ab92..e4bd5f6 100644
--- a/src/attr.c
+++ b/src/attr.c
@@ -422,10 +422,8 @@ static int collect_attr_files(
/* Resolve path in a non-bare repo */
if (workdir != NULL)
error = git_path_find_dir(&dir, path, workdir);
- /* when in a bare repo, find the containing folder if the given
- * path is a subfolder (if not, the containing folder is the root) */
- else if (strchr(path, '/') != NULL)
- error = git_path_dirname_r(&dir, path);
+ else
+ error = git_path_dirname_r(&dir, path);
if (error < 0)
goto cleanup;
@@ -449,7 +447,12 @@ static int collect_attr_files(
giterr_clear(); /* no error even if there is no index */
info.files = files;
- error = git_path_walk_up(&dir, workdir, push_one_attr, &info);
+ if (!strcmp(dir.ptr, ".")) {
+ error = push_one_attr(&info, "");
+ } else {
+ error = git_path_walk_up(&dir, workdir, push_one_attr, &info);
+ }
+
if (error < 0)
goto cleanup;