for-each-ref: skip and warn about broken ref names

Print a warning message for any bad ref names we find in the repo and skip them so callers don't have to deal with parsing them. It might be useful in the future to have a flag where we would not skip these refs for those callers that want to and are prepared (for example by using a --format argument with %0 as a delimiter after the ref name). Signed-off-by: Ronnie Sahlberg <sahlberg@google.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ronnie Sahlberg committed Sep 5, 2014 at 14:35 UTC 971c41c71728d057115b105f427202f98565f933
1 file changed +5
builtin/for-each-ref.c
+5
@@ -839,6 +839,11 @@ static int grab_single_ref(const char *refname, const unsigned char *sha1, int f
839 struct refinfo *ref;
840 int cnt;
841
842 + if (flag & REF_BAD_NAME) {
843 + warning("ignoring ref with broken name %s", refname);
844 + return 0;
845 + }
846 +
847 if (*cb->grab_pattern) {
848 const char **pattern;
849 int namelen = strlen(refname);