refs.c: add repo_dwim_log()
[gitweb.git] / refs.c
diff --git a/refs.c b/refs.c
index bd0fec5776d011c33640fc41bfa64624c95a84be..edea0014467b0dd25000d35ec0aa858eaa0b58fc 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -603,9 +603,11 @@ int expand_ref(struct repository *repo, const char *str, int len,
        return refs_found;
 }
 
-int dwim_log(const char *str, int len, struct object_id *oid, char **log)
+int repo_dwim_log(struct repository *r, const char *str, int len,
+                 struct object_id *oid, char **log)
 {
-       char *last_branch = substitute_branch_name(the_repository, &str, &len);
+       struct ref_store *refs = get_main_ref_store(r);
+       char *last_branch = substitute_branch_name(r, &str, &len);
        const char **p;
        int logs_found = 0;
        struct strbuf path = STRBUF_INIT;
@@ -617,13 +619,15 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **log)
 
                strbuf_reset(&path);
                strbuf_addf(&path, *p, len, str);
-               ref = resolve_ref_unsafe(path.buf, RESOLVE_REF_READING,
-                                        &hash, NULL);
+               ref = refs_resolve_ref_unsafe(refs, path.buf,
+                                             RESOLVE_REF_READING,
+                                             &hash, NULL);
                if (!ref)
                        continue;
-               if (reflog_exists(path.buf))
+               if (refs_reflog_exists(refs, path.buf))
                        it = path.buf;
-               else if (strcmp(ref, path.buf) && reflog_exists(ref))
+               else if (strcmp(ref, path.buf) &&
+                        refs_reflog_exists(refs, ref))
                        it = ref;
                else
                        continue;
@@ -639,6 +643,11 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **log)
        return logs_found;
 }
 
+int dwim_log(const char *str, int len, struct object_id *oid, char **log)
+{
+       return repo_dwim_log(the_repository, str, len, oid, log);
+}
+
 static int is_per_worktree_ref(const char *refname)
 {
        return !strcmp(refname, "HEAD") ||