refactor skip_prefix to return a boolean
[gitweb.git] / branch.c
index 723a36bc540e41fe30b7b4fc2c8e893c4744ef3a..46e8aa86df1811ff19899869a33ecb48cacb107f 100644 (file)
--- a/branch.c
+++ b/branch.c
@@ -1,3 +1,4 @@
+#include "git-compat-util.h"
 #include "cache.h"
 #include "branch.h"
 #include "refs.h"
@@ -49,12 +50,11 @@ static int should_setup_rebase(const char *origin)
 
 void install_branch_config(int flag, const char *local, const char *origin, const char *remote)
 {
-       const char *shortname = remote + 11;
-       int remote_is_branch = starts_with(remote, "refs/heads/");
+       const char *shortname = NULL;
        struct strbuf key = STRBUF_INIT;
        int rebasing = should_setup_rebase(origin);
 
-       if (remote_is_branch
+       if (skip_prefix(remote, "refs/heads/", &shortname)
            && !strcmp(local, shortname)
            && !origin) {
                warning(_("Not setting branch %s as its own upstream."),
@@ -77,29 +77,29 @@ void install_branch_config(int flag, const char *local, const char *origin, cons
        strbuf_release(&key);
 
        if (flag & BRANCH_CONFIG_VERBOSE) {
-               if (remote_is_branch && origin)
-                       printf_ln(rebasing ?
-                                 _("Branch %s set up to track remote branch %s from %s by rebasing.") :
-                                 _("Branch %s set up to track remote branch %s from %s."),
-                                 local, shortname, origin);
-               else if (remote_is_branch && !origin)
-                       printf_ln(rebasing ?
-                                 _("Branch %s set up to track local branch %s by rebasing.") :
-                                 _("Branch %s set up to track local branch %s."),
-                                 local, shortname);
-               else if (!remote_is_branch && origin)
-                       printf_ln(rebasing ?
-                                 _("Branch %s set up to track remote ref %s by rebasing.") :
-                                 _("Branch %s set up to track remote ref %s."),
-                                 local, remote);
-               else if (!remote_is_branch && !origin)
-                       printf_ln(rebasing ?
-                                 _("Branch %s set up to track local ref %s by rebasing.") :
-                                 _("Branch %s set up to track local ref %s."),
-                                 local, remote);
-               else
-                       die("BUG: impossible combination of %d and %p",
-                           remote_is_branch, origin);
+               if (shortname) {
+                       if (origin)
+                               printf_ln(rebasing ?
+                                         _("Branch %s set up to track remote branch %s from %s by rebasing.") :
+                                         _("Branch %s set up to track remote branch %s from %s."),
+                                         local, shortname, origin);
+                       else
+                               printf_ln(rebasing ?
+                                         _("Branch %s set up to track local branch %s by rebasing.") :
+                                         _("Branch %s set up to track local branch %s."),
+                                         local, shortname);
+               } else {
+                       if (origin)
+                               printf_ln(rebasing ?
+                                         _("Branch %s set up to track remote ref %s by rebasing.") :
+                                         _("Branch %s set up to track remote ref %s."),
+                                         local, remote);
+                       else
+                               printf_ln(rebasing ?
+                                         _("Branch %s set up to track local ref %s by rebasing.") :
+                                         _("Branch %s set up to track local ref %s."),
+                                         local, remote);
+               }
        }
 }
 
@@ -114,10 +114,6 @@ static int setup_tracking(const char *new_ref, const char *orig_ref,
        struct tracking tracking;
        int config_flags = quiet ? 0 : BRANCH_CONFIG_VERBOSE;
 
-       if (strlen(new_ref) > 1024 - 7 - 7 - 1)
-               return error(_("Tracking not set up: name too long: %s"),
-                               new_ref);
-
        memset(&tracking, 0, sizeof(tracking));
        tracking.spec.dst = (char *)orig_ref;
        if (for_each_remote(find_tracked_branch, &tracking))