Re: [PATCH] filter-branch: Big syntax change; support rewriting multiplerefs
- From
Johannes Sixt <j.sixt@eudaptics.com>
- Date
- Jul 24, 2007, 09:27 UTC
- Message-ID
- <46A5C615.24C24F0F@eudaptics.com>
- In-Reply-To
- <Pine.LNX.4.64.0707231829210.14781@racer.site>
Johannes Schindelin wrote:
Show 19 quoted lines
> +# 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
This does not work as I'd expected it: I can't successfully say:
git-filter-branch master
It tells me:
Which ref do you want to rewrite?
Show 15 quoted lines
> +# NEEDSWORK: we should sort the unmapped refs topologically first > +while read ref > +do > + sha1=$(git rev-parse "$ref"^0) > + test -f "$workdir"/../map/$sha1 && continue > + # Assign the boundarie(s) in the set of rewritten commits > + # as the replacement commit(s). > + # (This would look a bit nicer if --not --stdin worked.) > + for p in $((cd "$workdir"/../map; ls | sed "s/^/^/") | > + git rev-list $ref --boundary --stdin | > + sed -n "s/^-//p") > + do > + map $p >> "$workdir"/../map/$sha1 > + done > +done < "$tempdir"/heads
This logic seems to be borked, and I don't grok it. I was trying this:
git-filter-branch -- --since=2007.01.10 \ refs/heads/topic refs/heads/master
where topic's last change is from before 2007.01.10, i.e. it is not among the rewritten commits. And I get this:
WARNING: Ref 'refs/heads/master' is unchanged WARNING: 'refs/heads/topic' was rewritten into multiple commits: 329325526647503382ae7dee41c12fe6b81bbe43 2bdf3349b76f72ceb71755c75a555d60bc7c73aa ce6c9dfeac5ddbd64da2d9360d6552717df81d1f
The first 2 of these 3 sha1s happen to be merge bases of topic and master, but none of them appear anywhere in
git rev-list --parents --boundary --since=2007.07.10 \ refs/heads/topic refs/heads/master
What's up?
-- Hannes