worktree: factor out dwim_branch function
authorThomas Gummerer <t.gummerer@gmail.com>
Tue, 24 Apr 2018 21:56:34 +0000 (22:56 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Apr 2018 00:06:34 +0000 (09:06 +0900)
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>
builtin/worktree.c

index 39bf1ea..6bd32b6 100644 (file)
@@ -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;
@@ -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) {