diff --git a/fetch-pack.c b/fetch-pack.c
index cb2171523c6f30911b1d80d622d709b7f39fdb97..58ba2094dc6eda7e0429cf83730f8c4c84e4c084 100644 (file)
--- a/fetch-pack.c
+++ b/fetch-pack.c
int fd[2];
pid_t pid;
+ setup_git_directory();
+
nr_heads = 0;
heads = NULL;
for (i = 1; i < argc; i++) {
close(fd[0]);
close(fd[1]);
finish_connect(pid);
+
+ if (!ret && nr_heads) {
+ /* If the heads to pull were given, we should have
+ * consumed all of them by matching the remote.
+ * Otherwise, 'git-fetch remote no-such-ref' would
+ * silently succeed without issuing an error.
+ */
+ for (i = 0; i < nr_heads; i++)
+ if (heads[i] && heads[i][0]) {
+ error("no such remote ref %s", heads[i]);
+ ret = 1;
+ }
+ }
+
return ret;
}