branch: drop non-commit error reporting
authorKarthik Nayak <karthik.188@gmail.com>
Thu, 24 Sep 2015 18:09:08 +0000 (23:39 +0530)
committerJunio C Hamano <gitster@pobox.com>
Fri, 25 Sep 2015 15:52:16 +0000 (08:52 -0700)
Remove the error "branch '%s' does not point at a commit" in
append_ref(), which reports branch refs which do not point to
commits. Also remove the error "some refs could not be read" in
print_ref_list() which is triggered as a consequence of the first
error.

The purpose of these codepaths is not to diagnose and report a
repository corruption. If we care about such a corruption, we
should report it from fsck instead, which we already do.

This also helps in a smooth port of branch.c to use ref-filter APIs
over the following patches. On the other hand, ref-filter ignores refs
which do not point at commits silently.

Based-on-patch-by: Jeff King <peff@peff.net>
Helped-by: Junio C Hamano <gitster@pobox.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/branch.c
index 1a664ed315bc9a0b5b4cc653c4d70caf31a86d0b..ebc37423abb0fdccef84e1a373ed100455bbc32d 100644 (file)
@@ -313,7 +313,6 @@ static char *resolve_symref(const char *src, const char *prefix)
 struct append_ref_cb {
        struct ref_list *ref_list;
        const char **pattern;
-       int ret;
 };
 
 static int match_patterns(const char **pattern, const char *refname)
@@ -370,10 +369,8 @@ static int append_ref(const char *refname, const struct object_id *oid, int flag
        commit = NULL;
        if (ref_list->verbose || ref_list->with_commit || merge_filter != NO_FILTER) {
                commit = lookup_commit_reference_gently(oid->hash, 1);
-               if (!commit) {
-                       cb->ret = error(_("branch '%s' does not point at a commit"), refname);
+               if (!commit)
                        return 0;
-               }
 
                /* Filter with with_commit if specified */
                if (!is_descendant_of(commit, ref_list->with_commit))
@@ -617,7 +614,7 @@ static int calc_maxwidth(struct ref_list *refs, int remote_bonus)
        return max;
 }
 
-static int print_ref_list(int kinds, int detached, int verbose, int abbrev, struct commit_list *with_commit, const char **pattern)
+static void print_ref_list(int kinds, int detached, int verbose, int abbrev, struct commit_list *with_commit, const char **pattern)
 {
        int i;
        struct append_ref_cb cb;
@@ -642,7 +639,6 @@ static int print_ref_list(int kinds, int detached, int verbose, int abbrev, stru
                init_revisions(&ref_list.revs, NULL);
        cb.ref_list = &ref_list;
        cb.pattern = pattern;
-       cb.ret = 0;
        /*
         * First we obtain all regular branch refs and if the HEAD is
         * detached then we insert that ref to the end of the ref_fist
@@ -693,11 +689,6 @@ static int print_ref_list(int kinds, int detached, int verbose, int abbrev, stru
                               abbrev, detached, remote_prefix);
 
        free_ref_list(&ref_list);
-
-       if (cb.ret)
-               error(_("some refs could not be read"));
-
-       return cb.ret;
 }
 
 static void rename_branch(const char *oldname, const char *newname, int force)
@@ -913,15 +904,14 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                        die(_("branch name required"));
                return delete_branches(argc, argv, delete > 1, kinds, quiet);
        } else if (list) {
-               int ret;
                /*  git branch --local also shows HEAD when it is detached */
                if (kinds & REF_LOCAL_BRANCH)
                        kinds |= REF_DETACHED_HEAD;
-               ret = print_ref_list(kinds, detached, verbose, abbrev,
+               print_ref_list(kinds, detached, verbose, abbrev,
                                         with_commit, argv);
                print_columns(&output, colopts, NULL);
                string_list_clear(&output, 0);
-               return ret;
+               return 0;
        }
        else if (edit_description) {
                const char *branch_name;