From: Junio C Hamano Date: Tue, 21 Mar 2017 22:03:28 +0000 (-0700) Subject: Merge branch 'rl/remote-allow-missing-branch-name-merge' into maint X-Git-Tag: v2.12.2~16 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/0d9f9424ad12c8e9e71db45776f6bf4a143b90f3?ds=inline;hp=-c Merge branch 'rl/remote-allow-missing-branch-name-merge' into maint "git remote rm X", when a branch has remote X configured as the value of its branch.*.remote, tried to remove branch.*.remote and branch.*.merge and failed if either is unset. * rl/remote-allow-missing-branch-name-merge: remote: ignore failure to remove missing branch..merge --- 0d9f9424ad12c8e9e71db45776f6bf4a143b90f3 diff --combined builtin/remote.c index 5339ed6ad1,01055b7272..7682206c1e --- a/builtin/remote.c +++ b/builtin/remote.c @@@ -186,7 -186,7 +186,7 @@@ static int add(int argc, const char **a url = argv[1]; remote = remote_get(name); - if (remote_is_configured(remote)) + if (remote_is_configured(remote, 1)) die(_("remote %s already exists."), name); strbuf_addf(&buf2, "refs/heads/test:refs/remotes/%s/test", name); @@@ -618,14 -618,14 +618,14 @@@ static int mv(int argc, const char **ar rename.remote_branches = &remote_branches; oldremote = remote_get(rename.old); - if (!remote_is_configured(oldremote)) + if (!remote_is_configured(oldremote, 1)) die(_("No such remote: %s"), rename.old); if (!strcmp(rename.old, rename.new) && oldremote->origin != REMOTE_CONFIG) return migrate_file(oldremote); newremote = remote_get(rename.new); - if (remote_is_configured(newremote)) + if (remote_is_configured(newremote, 1)) die(_("remote %s already exists."), rename.new); strbuf_addf(&buf, "refs/heads/test:refs/remotes/%s/test", rename.new); @@@ -753,7 -753,7 +753,7 @@@ static int rm(int argc, const char **ar usage_with_options(builtin_remote_rm_usage, options); remote = remote_get(argv[1]); - if (!remote_is_configured(remote)) + if (!remote_is_configured(remote, 1)) die(_("No such remote: %s"), argv[1]); known_remotes.to_delete = remote; @@@ -769,7 -769,9 +769,9 @@@ strbuf_reset(&buf); strbuf_addf(&buf, "branch.%s.%s", item->string, *k); - git_config_set(buf.buf, NULL); + result = git_config_set_gently(buf.buf, NULL); + if (result && result != CONFIG_NOTHING_SET) + die(_("could not unset '%s'"), buf.buf); } } } @@@ -1415,7 -1417,7 +1417,7 @@@ static int set_remote_branches(const ch strbuf_addf(&key, "remote.%s.fetch", remotename); remote = remote_get(remotename); - if (!remote_is_configured(remote)) + if (!remote_is_configured(remote, 1)) die(_("No such remote '%s'"), remotename); if (!add_mode && remove_all_fetch_refspecs(remotename, key.buf)) { @@@ -1469,7 -1471,7 +1471,7 @@@ static int get_url(int argc, const cha remotename = argv[0]; remote = remote_get(remotename); - if (!remote_is_configured(remote)) + if (!remote_is_configured(remote, 1)) die(_("No such remote '%s'"), remotename); url_nr = 0; @@@ -1537,7 -1539,7 +1539,7 @@@ static int set_url(int argc, const cha oldurl = newurl; remote = remote_get(remotename); - if (!remote_is_configured(remote)) + if (!remote_is_configured(remote, 1)) die(_("No such remote '%s'"), remotename); if (push_mode) { diff --combined t/t5505-remote.sh index ba46e86de0,f558ad0b39..3ea27107c2 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@@ -153,6 -153,25 +153,25 @@@ test_expect_success 'remove errors out ) ' + test_expect_success 'remove remote with a branch without configured merge' ' + test_when_finished "( + git -C test checkout master; + git -C test branch -D two; + git -C test config --remove-section remote.two; + git -C test config --remove-section branch.second; + true + )" && + ( + cd test && + git remote add two ../two && + git fetch two && + git checkout -b second two/master^0 && + git config branch.second.remote two && + git checkout master && + git remote rm two + ) + ' + test_expect_success 'rename errors out early when deleting non-existent branch' ' ( cd test && @@@ -764,13 -783,6 +783,13 @@@ test_expect_success 'rename a remote wi ) ' +test_expect_success 'rename succeeds with existing remote..prune' ' + git clone one four.four && + test_when_finished git config --global --unset remote.upstream.prune && + git config --global remote.upstream.prune true && + git -C four.four remote rename origin upstream +' + cat >remotes_origin <