Treat an empty list of refspecs the same as a NULL value.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
diff --git a/include/git2/remote.h b/include/git2/remote.h
index b714d34..422c93d 100644
--- a/include/git2/remote.h
+++ b/include/git2/remote.h
@@ -308,7 +308,7 @@ GIT_EXTERN(int) git_remote_ls(const git_remote_head ***out, size_t *size, git_r
*
* @param remote the remote
* @param refspecs the refspecs to use for this negotiation and
- * download. Use NULL to use the base refspecs
+ * download. Use NULL or an empty array to use the base refspecs
* @return 0 or an error code
*/
GIT_EXTERN(int) git_remote_download(git_remote *remote, const git_strarray *refspecs);
@@ -376,8 +376,8 @@ GIT_EXTERN(int) git_remote_update_tips(
* disconnect and update the remote-tracking branches.
*
* @param remote the remote to fetch from
- * @param refspecs the refspecs to use for this fetch. Pass NULL to
- * use the base refspecs.
+ * @param refspecs the refspecs to use for this fetch. Pass NULL or an
+ * empty array to use the base refspecs.
* @param signature The identity to use when updating reflogs
* @param reflog_message The message to insert into the reflogs. If NULL, the
* default is "fetch"
diff --git a/src/remote.c b/src/remote.c
index dc9cae1..c659c55 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -834,7 +834,7 @@ int git_remote_download(git_remote *remote, const git_strarray *refspecs)
goto on_error;
remote->passed_refspecs = 0;
- if (!refspecs) {
+ if (!refspecs || !refspecs->count) {
to_active = &remote->refspecs;
} else {
for (i = 0; i < refspecs->count; i++) {