diff --git a/src/attr.c b/src/attr.c index fd0ab9274..e4bd5f669 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;