builtin/branch: stop supporting the "--set-upstream" option

The '--set-upstream' option of branch was deprecated in b347d06b
("branch: deprecate --set-upstream and show help if we detect
possible mistaken use", 2012-08-30) and has been planned for removal
ever since.

In order to prevent "--set-upstream" on a command line from being taken as
an abbreviated form of "--set-upstream-to", explicitly catch "--set-upstream"
option and die, instead of just removing it from the list of options.

Before this change, an attempt to use "--set-upstream" resulted in:

    $ git branch
    * master

    $ git branch --set-upstream origin/master
    The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
    Branch origin/master set up to track local branch master.

    $ echo $?
    0

    $ git branch
    * master
      origin/master

With this change, the behaviour becomes like this:

    $ git branch
    * master

    $ git branch --set-upstream origin/master
    fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.

    $ echo $?
    128

    $ git branch
    * master

Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Kaartic Sivaraam
2017-08-17 08:24:24 +05:30
committed by Junio C Hamano
parent 93a6b3f234
commit 52668846ea
4 changed files with 14 additions and 84 deletions

View File

@@ -605,38 +605,8 @@ test_expect_success 'test --unset-upstream on a particular branch' '
test_must_fail git config branch.my14.merge
'
test_expect_success '--set-upstream shows message when creating a new branch that exists as remote-tracking' '
git update-ref refs/remotes/origin/master HEAD &&
git branch --set-upstream origin/master 2>actual &&
test_when_finished git update-ref -d refs/remotes/origin/master &&
test_when_finished git branch -d origin/master &&
cat >expected <<EOF &&
The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
If you wanted to make '"'master'"' track '"'origin/master'"', do this:
git branch -d origin/master
git branch --set-upstream-to origin/master
EOF
test_i18ncmp expected actual
'
test_expect_success '--set-upstream with two args only shows the deprecation message' '
git branch --set-upstream master my13 2>actual &&
test_when_finished git branch --unset-upstream master &&
cat >expected <<EOF &&
The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
EOF
test_i18ncmp expected actual
'
test_expect_success '--set-upstream with one arg only shows the deprecation message if the branch existed' '
git branch --set-upstream my13 2>actual &&
test_when_finished git branch --unset-upstream my13 &&
cat >expected <<EOF &&
The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
EOF
test_i18ncmp expected actual
test_expect_success '--set-upstream fails' '
test_must_fail git branch --set-upstream origin/master
'
test_expect_success '--set-upstream-to notices an error to set branch as own upstream' '
@@ -961,19 +931,6 @@ test_expect_success 'attempt to delete a branch merged to its base' '
test_must_fail git branch -d my10
'
test_expect_success 'use set-upstream on the current branch' '
git checkout master &&
git --bare init myupstream.git &&
git push myupstream.git master:refs/heads/frotz &&
git remote add origin myupstream.git &&
git fetch &&
git branch --set-upstream master origin/frotz &&
test "z$(git config branch.master.remote)" = "zorigin" &&
test "z$(git config branch.master.merge)" = "zrefs/heads/frotz"
'
test_expect_success 'use --edit-description' '
write_script editor <<-\EOF &&
echo "New contents" >"$1"

View File

@@ -188,35 +188,29 @@ test_expect_success 'fail to track annotated tags' '
test_must_fail git checkout heavytrack
'
test_expect_success 'setup tracking with branch --set-upstream on existing branch' '
test_expect_success '--set-upstream-to does not change branch' '
git branch from-master master &&
test_must_fail git config branch.from-master.merge > actual &&
git branch --set-upstream from-master master &&
git config branch.from-master.merge > actual &&
grep -q "^refs/heads/master$" actual
'
test_expect_success '--set-upstream does not change branch' '
git branch --set-upstream-to master from-master &&
git branch from-master2 master &&
test_must_fail git config branch.from-master2.merge > actual &&
git rev-list from-master2 &&
git update-ref refs/heads/from-master2 from-master2^ &&
git rev-parse from-master2 >expect2 &&
git branch --set-upstream from-master2 master &&
git branch --set-upstream-to master from-master2 &&
git config branch.from-master.merge > actual &&
git rev-parse from-master2 >actual2 &&
grep -q "^refs/heads/master$" actual &&
cmp expect2 actual2
'
test_expect_success '--set-upstream @{-1}' '
git checkout from-master &&
test_expect_success '--set-upstream-to @{-1}' '
git checkout follower &&
git checkout from-master2 &&
git config branch.from-master2.merge > expect2 &&
git branch --set-upstream @{-1} follower &&
git branch --set-upstream-to @{-1} from-master &&
git config branch.from-master.merge > actual &&
git config branch.from-master2.merge > actual2 &&
git branch --set-upstream from-master follower &&
git branch --set-upstream-to follower from-master &&
git config branch.from-master.merge > expect &&
test_cmp expect2 actual2 &&
test_cmp expect actual