]> git.proxmox.com Git - libgit2.git/commitdiff
A missing refspec is not an error
authorCarlos Martín Nieto <carlos@cmartin.tk>
Mon, 3 Oct 2011 20:26:06 +0000 (22:26 +0200)
committerCarlos Martín Nieto <carlos@cmartin.tk>
Sat, 8 Oct 2011 00:12:26 +0000 (02:12 +0200)
It's rare for a configured remote, but for one given as an URL on the
command line, it's more often than not the case.

Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
src/fetch.c
src/refspec.c

index 1bb89687043b514affdc91b44a4877a538d3dc82..e8809d0cc04a6220b7d34248b48af419b659c8c2 100644 (file)
@@ -36,11 +36,13 @@ static int filter_wants(git_remote *remote)
                goto cleanup;
        }
 
+       /*
+        * The fetch refspec can be NULL, and what this means is that the
+        * user didn't specify one. This is fine, as it means that we're
+        * not interested in any particular branch but just the remote's
+        * HEAD, which will be stored in FETCH_HEAD after the fetch.
+        */
        spec = git_remote_fetchspec(remote);
-       if (spec == NULL) {
-               error = git__throw(GIT_ERROR, "The remote has no fetchspec");
-               goto cleanup;
-       }
 
        for (i = 0; i < refs.len; ++i) {
                git_remote_head *head = refs.heads[i];
index 9de2730716ca8ff5ae737a2b7db18fa2e4944ad3..ed4b5e6b84a8f6bfbae9ad024e35e23eb66d9470 100644 (file)
@@ -42,17 +42,17 @@ int git_refspec_parse(git_refspec *refspec, const char *str)
 
 const char *git_refspec_src(const git_refspec *refspec)
 {
-       return refspec->src;
+       return refspec == NULL ? NULL : refspec->src;
 }
 
 const char *git_refspec_dst(const git_refspec *refspec)
 {
-       return refspec->dst;
+       return refspec == NULL ? NULL : refspec->dst;
 }
 
 int git_refspec_src_match(const git_refspec *refspec, const char *refname)
 {
-       return git__fnmatch(refspec->src, refname, 0);
+       return refspec == NULL ? GIT_ENOMATCH : git__fnmatch(refspec->src, refname, 0);
 }
 
 int git_refspec_transform(char *out, size_t outlen, const git_refspec *spec, const char *name)