On Sun, Mar 27, 2016 at 01:52:18PM -0400, Eric Sunshine wrote: > On Fri, Mar 25, 2016 at 2:28 PM, Kazuki Yamaguchi <k@xxxxxx> wrote: > > When a branch is checked out by current working tree, deleting the > > branch is forbidden. However when the branch is checked out only by > > other working trees, deleting is allowed. > > Use find_shared_symref() to check if the branch is in use, not just > > comparing with the current working tree's HEAD. > > > > Signed-off-by: Kazuki Yamaguchi <k@xxxxxx> > > --- > > diff --git a/builtin/branch.c b/builtin/branch.c > > @@ -215,16 +216,17 @@ static int delete_branches(int argc, const char **argv, int force, int kinds, > > int flags = 0; > > > > strbuf_branchname(&bname, argv[i]); > > - if (kinds == FILTER_REFS_BRANCHES && !strcmp(head, bname.buf)) { > > + free(name); > > + name = mkpathdup(fmt, bname.buf); > > + > > + if (kinds == FILTER_REFS_BRANCHES && > > + find_shared_symref("HEAD", name)) { > > error(_("Cannot delete the branch '%s' " > > - "which you are currently on."), bname.buf); > > + "which is currently checked out."), bname.buf); > > Would it be possible to do a better job of letting the user know what > went wrong by stating in which worktree(s) the branch is checked out? > My concern is that someone seeing this message might respond "huh? I > have 'master' checked out, so why is this telling me that 'foo' is > checked out", and not realize that 'foo' is in fact checked out in a > different worktree. Yes, indeed. I'll do it. Thanks. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html