@@ -1517,35 +1517,30 @@ static void add_rev_cmdline_list(struct rev_info *revs,
1517
1517
}
1518
1518
}
1519
1519
1520
- int ref_excluded (struct string_list * ref_excludes , const char * path )
1520
+ int ref_excluded (const struct ref_exclusions * exclusions , const char * path )
1521
1521
{
1522
1522
struct string_list_item * item ;
1523
-
1524
- if (!ref_excludes )
1525
- return 0 ;
1526
- for_each_string_list_item (item , ref_excludes ) {
1523
+ for_each_string_list_item (item , & exclusions -> excluded_refs ) {
1527
1524
if (!wildmatch (item -> string , path , 0 ))
1528
1525
return 1 ;
1529
1526
}
1530
1527
return 0 ;
1531
1528
}
1532
1529
1533
- void clear_ref_exclusion (struct string_list * * ref_excludes_p )
1530
+ void init_ref_exclusions (struct ref_exclusions * exclusions )
1534
1531
{
1535
- if (* ref_excludes_p ) {
1536
- string_list_clear (* ref_excludes_p , 0 );
1537
- free (* ref_excludes_p );
1538
- }
1539
- * ref_excludes_p = NULL ;
1532
+ struct ref_exclusions blank = REF_EXCLUSIONS_INIT ;
1533
+ memcpy (exclusions , & blank , sizeof (* exclusions ));
1540
1534
}
1541
1535
1542
- void add_ref_exclusion (struct string_list * * ref_excludes_p , const char * exclude )
1536
+ void clear_ref_exclusions (struct ref_exclusions * exclusions )
1543
1537
{
1544
- if (!* ref_excludes_p ) {
1545
- CALLOC_ARRAY (* ref_excludes_p , 1 );
1546
- (* ref_excludes_p )-> strdup_strings = 1 ;
1547
- }
1548
- string_list_append (* ref_excludes_p , exclude );
1538
+ string_list_clear (& exclusions -> excluded_refs , 0 );
1539
+ }
1540
+
1541
+ void add_ref_exclusion (struct ref_exclusions * exclusions , const char * exclude )
1542
+ {
1543
+ string_list_append (& exclusions -> excluded_refs , exclude );
1549
1544
}
1550
1545
1551
1546
struct all_refs_cb {
@@ -1563,7 +1558,7 @@ static int handle_one_ref(const char *path, const struct object_id *oid,
1563
1558
struct all_refs_cb * cb = cb_data ;
1564
1559
struct object * object ;
1565
1560
1566
- if (ref_excluded (cb -> all_revs -> ref_excludes , path ))
1561
+ if (ref_excluded (& cb -> all_revs -> ref_excludes , path ))
1567
1562
return 0 ;
1568
1563
1569
1564
object = get_reference (cb -> all_revs , path , oid , cb -> all_flags );
@@ -1901,6 +1896,7 @@ void repo_init_revisions(struct repository *r,
1901
1896
1902
1897
init_display_notes (& revs -> notes_opt );
1903
1898
list_objects_filter_init (& revs -> filter );
1899
+ init_ref_exclusions (& revs -> ref_excludes );
1904
1900
}
1905
1901
1906
1902
static void add_pending_commit_list (struct rev_info * revs ,
@@ -2689,10 +2685,10 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,
2689
2685
init_all_refs_cb (& cb , revs , * flags );
2690
2686
other_head_refs (handle_one_ref , & cb );
2691
2687
}
2692
- clear_ref_exclusion (& revs -> ref_excludes );
2688
+ clear_ref_exclusions (& revs -> ref_excludes );
2693
2689
} else if (!strcmp (arg , "--branches" )) {
2694
2690
handle_refs (refs , revs , * flags , refs_for_each_branch_ref );
2695
- clear_ref_exclusion (& revs -> ref_excludes );
2691
+ clear_ref_exclusions (& revs -> ref_excludes );
2696
2692
} else if (!strcmp (arg , "--bisect" )) {
2697
2693
read_bisect_terms (& term_bad , & term_good );
2698
2694
handle_refs (refs , revs , * flags , for_each_bad_bisect_ref );
@@ -2701,15 +2697,15 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,
2701
2697
revs -> bisect = 1 ;
2702
2698
} else if (!strcmp (arg , "--tags" )) {
2703
2699
handle_refs (refs , revs , * flags , refs_for_each_tag_ref );
2704
- clear_ref_exclusion (& revs -> ref_excludes );
2700
+ clear_ref_exclusions (& revs -> ref_excludes );
2705
2701
} else if (!strcmp (arg , "--remotes" )) {
2706
2702
handle_refs (refs , revs , * flags , refs_for_each_remote_ref );
2707
- clear_ref_exclusion (& revs -> ref_excludes );
2703
+ clear_ref_exclusions (& revs -> ref_excludes );
2708
2704
} else if ((argcount = parse_long_opt ("glob" , argv , & optarg ))) {
2709
2705
struct all_refs_cb cb ;
2710
2706
init_all_refs_cb (& cb , revs , * flags );
2711
2707
for_each_glob_ref (handle_one_ref , optarg , & cb );
2712
- clear_ref_exclusion (& revs -> ref_excludes );
2708
+ clear_ref_exclusions (& revs -> ref_excludes );
2713
2709
return argcount ;
2714
2710
} else if ((argcount = parse_long_opt ("exclude" , argv , & optarg ))) {
2715
2711
add_ref_exclusion (& revs -> ref_excludes , optarg );
@@ -2718,17 +2714,17 @@ static int handle_revision_pseudo_opt(struct rev_info *revs,
2718
2714
struct all_refs_cb cb ;
2719
2715
init_all_refs_cb (& cb , revs , * flags );
2720
2716
for_each_glob_ref_in (handle_one_ref , optarg , "refs/heads/" , & cb );
2721
- clear_ref_exclusion (& revs -> ref_excludes );
2717
+ clear_ref_exclusions (& revs -> ref_excludes );
2722
2718
} else if (skip_prefix (arg , "--tags=" , & optarg )) {
2723
2719
struct all_refs_cb cb ;
2724
2720
init_all_refs_cb (& cb , revs , * flags );
2725
2721
for_each_glob_ref_in (handle_one_ref , optarg , "refs/tags/" , & cb );
2726
- clear_ref_exclusion (& revs -> ref_excludes );
2722
+ clear_ref_exclusions (& revs -> ref_excludes );
2727
2723
} else if (skip_prefix (arg , "--remotes=" , & optarg )) {
2728
2724
struct all_refs_cb cb ;
2729
2725
init_all_refs_cb (& cb , revs , * flags );
2730
2726
for_each_glob_ref_in (handle_one_ref , optarg , "refs/remotes/" , & cb );
2731
- clear_ref_exclusion (& revs -> ref_excludes );
2727
+ clear_ref_exclusions (& revs -> ref_excludes );
2732
2728
} else if (!strcmp (arg , "--reflog" )) {
2733
2729
add_reflogs_to_pending (revs , * flags );
2734
2730
} else if (!strcmp (arg , "--indexed-objects" )) {
0 commit comments