Download raw body.
fix argument error handling in got fetch
Reported on the IRC channel:
<M-jrick> stsp: 'got fetch -b branch remote' appears to pick a wrong remote instead of erroring if the remote doesn't exist
Properly handle nonexistent remote repository names given to 'got fetch'.
ok?
diff 59ae71607ad9127113965097ca3401601a03e2c2 37148ab272827818d1b17698ec0cee5bca650444
blob - 9ff54863f6b41daa7b9bf2b9cb46bf28b42ffe52
blob + 138291e3421f28ca4a7541d072a13b359720b717
--- got/got.c
+++ got/got.c
@@ -2119,9 +2119,10 @@ cmd_fetch(int argc, char *argv[])
got_gotconfig_get_remotes(&nremotes, &remotes,
worktree_conf);
for (i = 0; i < nremotes; i++) {
- remote = &remotes[i];
- if (strcmp(remote->name, remote_name) == 0)
+ if (strcmp(remotes[i].name, remote_name) == 0) {
+ remote = &remotes[i];
break;
+ }
}
}
}
@@ -2131,18 +2132,20 @@ cmd_fetch(int argc, char *argv[])
got_gotconfig_get_remotes(&nremotes, &remotes,
repo_conf);
for (i = 0; i < nremotes; i++) {
- remote = &remotes[i];
- if (strcmp(remote->name, remote_name) == 0)
+ if (strcmp(remotes[i].name, remote_name) == 0) {
+ remote = &remotes[i];
break;
+ }
}
}
}
if (remote == NULL) {
got_repo_get_gitconfig_remotes(&nremotes, &remotes, repo);
for (i = 0; i < nremotes; i++) {
- remote = &remotes[i];
- if (strcmp(remote->name, remote_name) == 0)
+ if (strcmp(remotes[i].name, remote_name) == 0) {
+ remote = &remotes[i];
break;
+ }
}
}
if (remote == NULL) {
blob - 059c1dc9b29d8efbb092fcd4eaf3bbccc36da1c3
blob + 3f5693ec2c5a3685f79649772017c3e4db3e9779
--- regress/cmdline/fetch.sh
+++ regress/cmdline/fetch.sh
@@ -978,6 +978,18 @@ remote "barbaz" {
repository "$testroot/does-not-exist"
}
EOF
+ echo "got: nonexistent: remote repository not found" \
+ > $testroot/stderr.expected
+ (cd $testroot/repo-clone && got fetch nonexistent \
+ > $testroot/stdout 2> $testroot/stderr)
+ ret="$?"
+ if [ "$ret" == "0" ]; then
+ echo "got fetch command succeeded unexpectedly" >&2
+ diff -u $testroot/stderr.expected $testroot/stderr
+ test_done "$testroot" "1"
+ return 1
+ fi
+
(cd $testroot/repo-clone && got fetch -l foobar \
> $testroot/stdout)
ret="$?"
fix argument error handling in got fetch