'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 <dpotapov@xxxxxxxxx> --- I have corrected my previous patch to allow "heads" or "tags" in the name of a branch or tag, i.e. to write it like this: git filter-branch heads/master 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..5de8b12 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 - 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