Merge branch 'jc/branch-desc-typoavoidance'
* jc/branch-desc-typoavoidance: branch --edit-description: protect against mistyped branch name
This commit is contained in:
commit
d88698ec0b
@ -768,6 +768,8 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
|||||||
with_commit, argv);
|
with_commit, argv);
|
||||||
else if (edit_description) {
|
else if (edit_description) {
|
||||||
const char *branch_name;
|
const char *branch_name;
|
||||||
|
struct strbuf branch_ref = STRBUF_INIT;
|
||||||
|
|
||||||
if (detached)
|
if (detached)
|
||||||
die("Cannot give description to detached HEAD");
|
die("Cannot give description to detached HEAD");
|
||||||
if (!argc)
|
if (!argc)
|
||||||
@ -776,6 +778,19 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
|||||||
branch_name = argv[0];
|
branch_name = argv[0];
|
||||||
else
|
else
|
||||||
usage_with_options(builtin_branch_usage, options);
|
usage_with_options(builtin_branch_usage, options);
|
||||||
|
|
||||||
|
strbuf_addf(&branch_ref, "refs/heads/%s", branch_name);
|
||||||
|
if (!ref_exists(branch_ref.buf)) {
|
||||||
|
strbuf_release(&branch_ref);
|
||||||
|
|
||||||
|
if (!argc)
|
||||||
|
return error("No commit on branch '%s' yet.",
|
||||||
|
branch_name);
|
||||||
|
else
|
||||||
|
return error("No such branch '%s'.", branch_name);
|
||||||
|
}
|
||||||
|
strbuf_release(&branch_ref);
|
||||||
|
|
||||||
if (edit_branch_description(branch_name))
|
if (edit_branch_description(branch_name))
|
||||||
return 1;
|
return 1;
|
||||||
} else if (rename) {
|
} else if (rename) {
|
||||||
|
@ -3,11 +3,8 @@
|
|||||||
# Copyright (c) 2005 Amos Waterland
|
# Copyright (c) 2005 Amos Waterland
|
||||||
#
|
#
|
||||||
|
|
||||||
test_description='git branch --foo should not create bogus branch
|
test_description='git branch assorted tests'
|
||||||
|
|
||||||
This test runs git branch --help and checks that the argument is properly
|
|
||||||
handled. Specifically, that a bogus branch is not created.
|
|
||||||
'
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
@ -620,4 +617,40 @@ test_expect_success 'use set-upstream on the current branch' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'use --edit-description' '
|
||||||
|
write_script editor <<-\EOF &&
|
||||||
|
echo "New contents" >"$1"
|
||||||
|
EOF
|
||||||
|
EDITOR=./editor git branch --edit-description &&
|
||||||
|
write_script editor <<-\EOF &&
|
||||||
|
git stripspace -s <"$1" >"EDITOR_OUTPUT"
|
||||||
|
EOF
|
||||||
|
EDITOR=./editor git branch --edit-description &&
|
||||||
|
echo "New contents" >expect &&
|
||||||
|
test_cmp EDITOR_OUTPUT expect
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'detect typo in branch name when using --edit-description' '
|
||||||
|
write_script editor <<-\EOF &&
|
||||||
|
echo "New contents" >"$1"
|
||||||
|
EOF
|
||||||
|
(
|
||||||
|
EDITOR=./editor &&
|
||||||
|
export EDITOR &&
|
||||||
|
test_must_fail git branch --edit-description no-such-branch
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'refuse --edit-description on unborn branch for now' '
|
||||||
|
write_script editor <<-\EOF &&
|
||||||
|
echo "New contents" >"$1"
|
||||||
|
EOF
|
||||||
|
git checkout --orphan unborn &&
|
||||||
|
(
|
||||||
|
EDITOR=./editor &&
|
||||||
|
export EDITOR &&
|
||||||
|
test_must_fail git branch --edit-description
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user