[PATCH] git-filter-branch could be confused by similar names
From: Dmitry Potapov <hidden>
Date: 2016-06-15 22:44:01
Subsystem:
the rest · Maintainer:
Linus Torvalds
'git-filter-branch branch' could fail producing the error: "Which ref do you want to rewrite?" if existed another branch or tag, which name was 'branch-something' or 'something/branch'. Signed-off-by: Dmitry Potapov <redacted> --- git-filter-branch.sh | 2 +- t/t7003-filter-branch.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index dbab1a9..b89a720 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh@@ -219,7 +219,7 @@ do ;; *) ref="$(git for-each-ref --format='%(refname)' | - grep /"$ref")" + grep '^refs/[^/]\+/'"$ref"'$')" esac git check-ref-format "$ref" && echo "$ref"
diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh
index 5f60b22..c3e5207 100755
--- a/t/t7003-filter-branch.sh
+++ b/t/t7003-filter-branch.sh@@ -36,6 +36,16 @@ test_expect_success 'result is really identical' ' test $H = $(git rev-parse HEAD) ' +test_expect_success 'rewrite branch with similar names' ' + git branch my && + git tag my/orig && + git tag my-orig && + git tag orig/my && + git tag orig-my && + git-filter-branch my && + test $H = $(git rev-parse HEAD) +' + test_expect_success 'rewrite, renaming a specific file' ' git-filter-branch -f --tree-filter "mv d doh || :" HEAD '
--
1.5.3.5