refs: consolidate remote name validation
authorSean Barag <redacted>
Thu, 1 Oct 2020 03:46:13 +0000 (03:46 +0000)
committerJunio C Hamano <redacted>
Thu, 1 Oct 2020 05:09:13 +0000 (22:09 -0700)
In preparation for a future patch, extract from remote.c a function that
validates possible remote names so that its rules can be used
consistently in other places.

Helped-by: Derrick Stolee <redacted>
Signed-off-by: Sean Barag <redacted>
Signed-off-by: Junio C Hamano <redacted>
builtin/remote.c
refspec.c
refspec.h

index 542f56e3878b6694e7da6c6141b5e249c511a51e..b2e0959746d797574e2e479ae040a11c3842b2b6 100644 (file)
@@ -194,8 +194,7 @@ static int add(int argc, const char **argv)
        if (remote_is_configured(remote, 1))
                die(_("remote %s already exists."), name);
 
-       strbuf_addf(&buf2, "refs/heads/test:refs/remotes/%s/test", name);
-       if (!valid_fetch_refspec(buf2.buf))
+       if (!valid_remote_name(name))
                die(_("'%s' is not a valid remote name"), name);
 
        strbuf_addf(&buf, "remote.%s.url", name);
@@ -696,11 +695,9 @@ static int mv(int argc, const char **argv)
        if (remote_is_configured(newremote, 1))
                die(_("remote %s already exists."), rename.new_name);
 
-       strbuf_addf(&buf, "refs/heads/test:refs/remotes/%s/test", rename.new_name);
-       if (!valid_fetch_refspec(buf.buf))
+       if (!valid_remote_name(rename.new_name))
                die(_("'%s' is not a valid remote name"), rename.new_name);
 
-       strbuf_reset(&buf);
        strbuf_addf(&buf, "remote.%s", rename.old_name);
        strbuf_addf(&buf2, "remote.%s", rename.new_name);
        if (git_config_rename_section(buf.buf, buf2.buf) < 1)
index f10ef284cef95aef60b8b485f5909ba9a8c76b50..98d1caaa0a9b37793e6ddf76959b448d7774d8ca 100644 (file)
--- a/refspec.c
+++ b/refspec.c
@@ -201,6 +201,16 @@ int valid_fetch_refspec(const char *fetch_refspec_str)
        return ret;
 }
 
+int valid_remote_name(const char *name)
+{
+       int result;
+       struct strbuf refspec = STRBUF_INIT;
+       strbuf_addf(&refspec, "refs/heads/test:refs/remotes/%s/test", name);
+       result = valid_fetch_refspec(refspec.buf);
+       strbuf_release(&refspec);
+       return result;
+}
+
 void refspec_ref_prefixes(const struct refspec *rs,
                          struct strvec *ref_prefixes)
 {
index 8d654e3a3ac40940c7d05f7ce671f538b7d250f2..ee93196e35bc2ec5b41cbfe0a4c942a72d6ab166 100644 (file)
--- a/refspec.h
+++ b/refspec.h
@@ -60,6 +60,7 @@ void refspec_appendn(struct refspec *rs, const char **refspecs, int nr);
 void refspec_clear(struct refspec *rs);
 
 int valid_fetch_refspec(const char *refspec);
+int valid_remote_name(const char *name);
 
 struct strvec;
 /*
git clone https://git.99rst.org/PROJECT