On Wed, Aug 05, 2015 at 12:41:27PM -0700, Junio C Hamano wrote: > Junio C Hamano writes: > > > For completeness, here is what I think the end result (together with > > Peff's series) of the test should look like. > > ... > > Note that ssh://user:passw@rd@host:1234/ and user:passw@rd@host:/ > > tests fail for the same reason (finding @ should be greedy, I think). > > And I think this should make it pass. Just remember the last > occurrence of '@' by moving the 'start' every time we see an '@' > sign. > > builtin/clone.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/builtin/clone.c b/builtin/clone.c > index cae288f..5d86439 100644 > --- a/builtin/clone.c > +++ b/builtin/clone.c > @@ -160,13 +160,12 @@ static char *guess_dir_name(const char *repo, int is_bundle, int is_bare) > start += 3; > > /* > - * Skip authentication data. > + * Skip authentication data, if exists. > */ > - ptr = start; > - while (ptr < end && !is_dir_sep(*ptr) && *ptr != '@') > - ptr++; > - if (*ptr == '@') > - start = ptr + 1; > + for (ptr = start; ptr < end && !is_dir_sep(*ptr); ptr++) { > + if (*ptr == '@') > + start = ptr + 1; > + } > > /* > * Strip trailing spaces, slashes and /.git I guess it makes sense to skip over @-signs greedily. Is there anything I need to do here or will you squash those changes in?