Dennis Kaarsemaker <den...@kaarsemaker.net> writes:

> +static int check_overlapping_remotes(struct remote *first, void *priv) {
> +     struct remote *second = priv;
> +     int i, j;
> +     if(!second)
> +             return for_each_remote(check_overlapping_remotes, first);
> +     if(first == second)
> +             return 0;
> +     for (i = 0; i < first->fetch_refspec_nr; i++) {
> +             for (j = 0; j < second->fetch_refspec_nr; j++) {
> +                     if(strcmp(first->fetch[i].dst, second->fetch[j].dst) &&
> +                        (!fnmatch(first->fetch[i].dst, second->fetch[j].dst, 
> 0) ||
> +                         !fnmatch(second->fetch[j].dst, first->fetch[i].dst, 
> 0))) {
> +                             warning(_("Overlapping refspecs detected: '%s' 
> and '%s', not pruning."),
> +                                     first->fetch[i].dst, 
> second->fetch[j].dst);
> +                             return 1;
> +                     }
> +             }
> +     }
> +     return 0;
> +}

This codepath essentially needs the same logic as 1/3, no?  Instead
of open code the inner loop here, can't you call the "check RHS of a
single fetch refspec for overlap with refspecs from a remote" helper
you introduced in 1/3?

The logic in the inner loop shares the same issue as the code in
1/3; it needs to be extended to cover non-wildcard respecs and
non-storing refspecs.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to