@@ -1188,12 +1188,19 @@ void add_ref_exclusion(struct string_list **ref_excludes_p, const char *exclude)
11881188 string_list_append (* ref_excludes_p , exclude );
11891189}
11901190
1191- static void handle_refs (const char * submodule , struct rev_info * revs , unsigned flags ,
1192- int (* for_each )(const char * , each_ref_fn , void * ))
1191+ static void handle_refs (struct ref_store * refs ,
1192+ struct rev_info * revs , unsigned flags ,
1193+ int (* for_each )(struct ref_store * , each_ref_fn , void * ))
11931194{
11941195 struct all_refs_cb cb ;
1196+
1197+ if (!refs ) {
1198+ /* this could happen with uninitialized submodules */
1199+ return ;
1200+ }
1201+
11951202 init_all_refs_cb (& cb , revs , flags );
1196- for_each (submodule , handle_one_ref , & cb );
1203+ for_each (refs , handle_one_ref , & cb );
11971204}
11981205
11991206static void handle_one_reflog_commit (struct object_id * oid , void * cb_data )
@@ -2095,23 +2102,25 @@ void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
20952102 ctx -> argc -= n ;
20962103}
20972104
2098- static int for_each_bisect_ref (const char * submodule , each_ref_fn fn , void * cb_data , const char * term ) {
2105+ static int for_each_bisect_ref (struct ref_store * refs , each_ref_fn fn ,
2106+ void * cb_data , const char * term )
2107+ {
20992108 struct strbuf bisect_refs = STRBUF_INIT ;
21002109 int status ;
21012110 strbuf_addf (& bisect_refs , "refs/bisect/%s" , term );
2102- status = for_each_fullref_in_submodule ( submodule , bisect_refs .buf , fn , cb_data , 0 );
2111+ status = refs_for_each_fullref_in ( refs , bisect_refs .buf , fn , cb_data , 0 );
21032112 strbuf_release (& bisect_refs );
21042113 return status ;
21052114}
21062115
2107- static int for_each_bad_bisect_ref (const char * submodule , each_ref_fn fn , void * cb_data )
2116+ static int for_each_bad_bisect_ref (struct ref_store * refs , each_ref_fn fn , void * cb_data )
21082117{
2109- return for_each_bisect_ref (submodule , fn , cb_data , term_bad );
2118+ return for_each_bisect_ref (refs , fn , cb_data , term_bad );
21102119}
21112120
2112- static int for_each_good_bisect_ref (const char * submodule , each_ref_fn fn , void * cb_data )
2121+ static int for_each_good_bisect_ref (struct ref_store * refs , each_ref_fn fn , void * cb_data )
21132122{
2114- return for_each_bisect_ref (submodule , fn , cb_data , term_good );
2123+ return for_each_bisect_ref (refs , fn , cb_data , term_good );
21152124}
21162125
21172126static int handle_revision_pseudo_opt (const char * submodule ,
@@ -2120,8 +2129,14 @@ static int handle_revision_pseudo_opt(const char *submodule,
21202129{
21212130 const char * arg = argv [0 ];
21222131 const char * optarg ;
2132+ struct ref_store * refs ;
21232133 int argcount ;
21242134
2135+ if (submodule ) {
2136+ refs = get_submodule_ref_store (submodule );
2137+ } else
2138+ refs = get_main_ref_store ();
2139+
21252140 /*
21262141 * NOTE!
21272142 *
@@ -2133,22 +2148,23 @@ static int handle_revision_pseudo_opt(const char *submodule,
21332148 * register it in the list at the top of handle_revision_opt.
21342149 */
21352150 if (!strcmp (arg , "--all" )) {
2136- handle_refs (submodule , revs , * flags , for_each_ref_submodule );
2137- handle_refs (submodule , revs , * flags , head_ref_submodule );
2151+ handle_refs (refs , revs , * flags , refs_for_each_ref );
2152+ handle_refs (refs , revs , * flags , refs_head_ref );
21382153 clear_ref_exclusion (& revs -> ref_excludes );
21392154 } else if (!strcmp (arg , "--branches" )) {
2140- handle_refs (submodule , revs , * flags , for_each_branch_ref_submodule );
2155+ handle_refs (refs , revs , * flags , refs_for_each_branch_ref );
21412156 clear_ref_exclusion (& revs -> ref_excludes );
21422157 } else if (!strcmp (arg , "--bisect" )) {
21432158 read_bisect_terms (& term_bad , & term_good );
2144- handle_refs (submodule , revs , * flags , for_each_bad_bisect_ref );
2145- handle_refs (submodule , revs , * flags ^ (UNINTERESTING | BOTTOM ), for_each_good_bisect_ref );
2159+ handle_refs (refs , revs , * flags , for_each_bad_bisect_ref );
2160+ handle_refs (refs , revs , * flags ^ (UNINTERESTING | BOTTOM ),
2161+ for_each_good_bisect_ref );
21462162 revs -> bisect = 1 ;
21472163 } else if (!strcmp (arg , "--tags" )) {
2148- handle_refs (submodule , revs , * flags , for_each_tag_ref_submodule );
2164+ handle_refs (refs , revs , * flags , refs_for_each_tag_ref );
21492165 clear_ref_exclusion (& revs -> ref_excludes );
21502166 } else if (!strcmp (arg , "--remotes" )) {
2151- handle_refs (submodule , revs , * flags , for_each_remote_ref_submodule );
2167+ handle_refs (refs , revs , * flags , refs_for_each_remote_ref );
21522168 clear_ref_exclusion (& revs -> ref_excludes );
21532169 } else if ((argcount = parse_long_opt ("glob" , argv , & optarg ))) {
21542170 struct all_refs_cb cb ;
0 commit comments