]> git.proxmox.com Git - libgit2.git/commitdiff
attr: Cleanup the containing dir logic
authorThe rugged tests are fragile <tanoku@gmail.com>
Tue, 16 Sep 2014 11:20:58 +0000 (13:20 +0200)
committerThe rugged tests are fragile <tanoku@gmail.com>
Tue, 16 Sep 2014 11:20:58 +0000 (13:20 +0200)
src/attr.c

index 1decb5ba88e3cfa138e1b4c74fe9cb82fd0c9fad..dee84b0abed83e243c3abe5642d10de9a9ed4318 100644 (file)
@@ -411,7 +411,7 @@ static int collect_attr_files(
        const char *path,
        git_vector *files)
 {
-       int error;
+       int error = 0;
        git_buf dir = GIT_BUF_INIT;
        const char *workdir = git_repository_workdir(repo);
        attr_walk_up_info info = { NULL };
@@ -422,12 +422,12 @@ static int collect_attr_files(
        /* Resolve path in a non-bare repo */
        if (workdir != NULL)
                error = git_path_find_dir(&dir, path, workdir);
-       else
-               error = git_path_dirname_r(&dir, path);
+       /* 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);
        if (error < 0)
                goto cleanup;
-       if (dir.size == 1 && dir.ptr[0] == '.')
-               git_buf_clear(&dir);
 
        /* in precendence order highest to lowest:
         * - $GIT_DIR/info/attributes