On Sun, Feb 04, 2018 at 10:13:05PM +0000, Thomas Gummerer wrote:
> -     if (opts->new_branch)
> +     if (opts->checkout_existing_branch)
> +             fprintf(stderr, _(", checking out existing branch '%s'"),
> +                     refname);
> +     else if (opts->new_branch)
>               fprintf(stderr, _(", creating new branch '%s'"), 
> opts->new_branch);

I wonder if "creating branch" and "checkout out branch" are enough.

> @@ -423,14 +427,25 @@ static int add(int ac, const char **av, const char 
> *prefix)
>       if (ac < 2 && !opts.new_branch && !opts.detach) {
>               int n;
>               const char *s = worktree_basename(path, &n);
> -             opts.new_branch = xstrndup(s, n);
> -             if (guess_remote) {
> -                     struct object_id oid;
> -                     const char *remote =
> -                             unique_tracking_name(opts.new_branch, &oid);
> -                     if (remote)
> -                             branch = remote;
> +             const char *branchname = xstrndup(s, n);
> +             struct strbuf ref = STRBUF_INIT;
> +
> +             if (!strbuf_check_branch_ref(&ref, branchname) &&
> +                 ref_exists(ref.buf)) {
> +                     branch = branchname;
> +                     opts.checkout_existing_branch = 1;
> +                     UNLEAK(branch);
> +             } else {
> +                     opts.new_branch = branchname;
> +                     if (guess_remote) {
> +                             struct object_id oid;
> +                             const char *remote =
> +                                     unique_tracking_name(opts.new_branch, 
> &oid);

Deep indentation may be a sign that it's time to move all this code to
a separate function, maybe dwim_branch() or something.

> +                             if (remote)
> +                                     branch = remote;
> +                     }
>               }
> +             strbuf_release(&ref);
>       }
>  
>       if (ac == 2 && !opts.new_branch && !opts.detach) {

Reply via email to