DORMANTno replies

[PATCH] builtin-branch - allow deleting a fully specified branch-name

From: Mark Levedahl <hidden>
Date: 2016-06-15 22:46:35
Subsystem: the rest · Maintainer: Linus Torvalds

This change allows, for instance
	git branch -d refs/heads/foo
to succeed. Without this patch, the code just assumes that the
given branch name should be appended to "refs/heads" or
"refs/remotes", thus attempting (and failing) in the above case
to delete "refs/heads/refs/heads/foo"

Signed-off-by: Mark Levedahl <redacted>
---
 builtin-branch.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/builtin-branch.c b/builtin-branch.c
index ca81d72..f433bc5 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -131,7 +131,11 @@ static int delete_branches(int argc, const char **argv, int force, int kinds)
 
 		free(name);
 
-		name = xstrdup(mkpath(fmt, bname.buf));
+		if (bname.len < 5 || memcmp("refs/", bname.buf, 5))
+			name = xstrdup(mkpath(fmt, bname.buf));
+		else
+			name = xstrdup(bname.buf);
+
 		if (!resolve_ref(name, sha1, 1, NULL)) {
 			error("%sbranch '%s' not found.",
 					remote, bname.buf);
-- 
1.6.2.2.27.g034b
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help