Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
filter-branch: work correctly with ambiguous refnames
'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'.

[jc: original report and fix were done between Dmitry Potapov
and Dscho; I rewrote it using "rev-parse --symbolic-full-name"]

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
gitster committed Jan 7, 2008
1 parent a6d97d4 commit 418fa3a
Showing 1 changed file with 3 additions and 19 deletions.
22 changes: 3 additions & 19 deletions git-filter-branch.sh
Expand Up @@ -209,25 +209,9 @@ ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"
GIT_WORK_TREE=.
export GIT_DIR GIT_WORK_TREE

# These refs should be updated if their heads were rewritten

git rev-parse --revs-only --symbolic "$@" |
while read ref
do
# normalize ref
case "$ref" in
HEAD)
ref="$(git symbolic-ref "$ref")"
;;
refs/*)
;;
*)
ref="$(git for-each-ref --format='%(refname)' |
grep /"$ref")"
esac

git check-ref-format "$ref" && echo "$ref"
done > "$tempdir"/heads
# The refs should be updated if their heads were rewritten
git rev-parse --no-flags --revs-only --symbolic-full-name "$@" |
sed -e '/^^/d' >"$tempdir"/heads

test -s "$tempdir"/heads ||
die "Which ref do you want to rewrite?"
Expand Down

0 comments on commit 418fa3a

Please sign in to comment.