On Thu, Jan 2, 2020 at 9:18 PM Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > > On Wed, Jan 1, 2020 at 9:50 PM Heba Waly via GitGitGadget > <gitgitgadget@xxxxxxxxx> wrote: > > Display a hint to the user when attempting to delete a checked out > > branch saying "Checkout another branch before deleting this one: > > git checkout <branch_name>". > > > > Currently the user gets an error message saying: "error: Cannot delete > > branch <branch_name> checked out at <path>". The hint will be displayed > > after the error message. > > > > Signed-off-by: Heba Waly <heba.waly@xxxxxxxxx> > > --- > > diff --git a/builtin/branch.c b/builtin/branch.c > > @@ -240,6 +240,8 @@ static int delete_branches(int argc, const char **argv, int force, int kinds, > > error(_("Cannot delete branch '%s' " > > "checked out at '%s'"), > > bname.buf, wt->path); > > + advise(_("Checkout another branch before deleting this " > > + "one: git checkout <branch_name>")); > > s/another/a different/ would make the meaning clearer. > Ok. > Let's try to avoid underscores in placeholders. <branch-name> would be > better, however, git-checkout documentation just calls this <branch>, > so that's probably a good choice. > Yes. > However, these days, I think we're promoting git-switch rather than > git-checkout, so perhaps this advice should follow suit. > I didn't know that, will change it. > Finally, is this advice sufficient for newcomers when the branch the > user is trying to delete is in fact checked out in a worktree other > than the worktree in which the git-branch command is being invoked? > That is: > > $ pwd > /home/me/foo > $ git branch -D bip > Cannot delete branch 'bip' checked out at '/home/me/bar' > hint: Checkout another branch before deleting this one: > hint: git checkout <branch> > $ git checkout master # user follows advice > $ git branch -D bip > Cannot delete branch 'bip' checked out at '/home/me/foo' > hint: Checkout another branch before deleting this one: > hint: git checkout <branch> > $ > > And the user is left scratching his or her head wondering why > git-branch is still showing the error despite following the > instructions in the hint. > Understood. > > diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh > > @@ -808,7 +808,8 @@ test_expect_success 'test deleting branch without config' ' > > test_expect_success 'deleting currently checked out branch fails' ' > > git worktree add -b my7 my7 && > > test_must_fail git -C my7 branch -d my7 && > > - test_must_fail git branch -d my7 && > > + test_must_fail git branch -d my7 >actual.out 2>actual.err && > > + test_i18ngrep "hint: Checkout another branch" actual.err && > > Why does this capture standard output into 'actual.out' if that file > is never consulted? > Correct, I missed this one. > > rm -r my7 && > > git worktree prune > > ' Thanks Eric, will submit an updated version soon. Heba