Skip to content

Commit

Permalink
worktree: factor out dwim_branch function
Browse files Browse the repository at this point in the history
Factor out a dwim_branch function, which takes care of the dwim'ery in
'git worktree add <path>'.  It's not too much code currently, but we're
adding a new kind of dwim in a subsequent patch, at which point it makes
more sense to have it as a separate function.

Factor it out now to reduce the patch noise in the next patch.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
tgummerer authored and gitster committed Apr 30, 2018
1 parent 2c27002 commit 6427f87
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions builtin/worktree.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,21 @@ static void print_preparing_worktree_line(int detach,
}
}

static const char *dwim_branch(const char *path, const char **new_branch)
{
int n;
const char *s = worktree_basename(path, &n);
*new_branch = xstrndup(s, n);
UNLEAK(*new_branch);
if (guess_remote) {
struct object_id oid;
const char *remote =
unique_tracking_name(*new_branch, &oid);
return remote;
}
return NULL;
}

static int add(int ac, const char **av, const char *prefix)
{
struct add_opts opts;
Expand Down Expand Up @@ -439,17 +454,9 @@ static int add(int ac, const char **av, const char *prefix)
}

if (ac < 2 && !new_branch && !opts.detach) {
int n;
const char *s = worktree_basename(path, &n);
new_branch = xstrndup(s, n);
UNLEAK(new_branch);
if (guess_remote) {
struct object_id oid;
const char *remote =
unique_tracking_name(new_branch, &oid);
if (remote)
branch = remote;
}
const char *s = dwim_branch(path, &new_branch);
if (s)
branch = s;
}

if (ac == 2 && !new_branch && !opts.detach) {
Expand Down

0 comments on commit 6427f87

Please sign in to comment.