X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-filter-branch.sh;h=d04c346e12fb73539e9910951744e9d5558ad4d3;hb=efb98b44536300f5daed25da3650033a1ce7fdef;hp=ea59015baa2507fdc8fe77d1c77ebdb2d5db2fa7;hpb=3e08f5db65bcfe3ad238ee0de1cac2da84953cf3;p=git.git diff --git a/git-filter-branch.sh b/git-filter-branch.sh index ea59015ba..d04c346e1 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -234,7 +234,7 @@ case "$filter_subdir" in ;; *) git rev-list --reverse --topo-order --default HEAD \ - --parents --full-history "$@" -- "$filter_subdir" + --parents "$@" -- "$filter_subdir" esac > ../revs || die "Could not get the commits" commits=$(wc -l <../revs | tr -d " ") @@ -406,8 +406,22 @@ if [ "$filter_tag_name" ]; then echo "$ref -> $new_ref ($sha1 -> $new_sha1)" if [ "$type" = "tag" ]; then - # Warn that we are not rewriting the tag object itself. - warn "unreferencing tag object $sha1t" + new_sha1=$(git cat-file tag "$ref" | + sed -n \ + -e "1,/^$/{ + s/^object .*/object $new_sha1/ + s/^type .*/type commit/ + s/^tag .*/tag $new_ref/ + }" \ + -e '/^-----BEGIN PGP SIGNATURE-----/q' \ + -e 'p' | + git mktag) || + die "Could not create new tag object for $ref" + if git cat-file tag "$ref" | \ + grep '^-----BEGIN PGP SIGNATURE-----' >/dev/null 2>&1 + then + warn "gpg signature stripped from tag object $sha1t" + fi fi git update-ref "refs/tags/$new_ref" "$new_sha1" || @@ -421,11 +435,17 @@ rm -rf "$tempdir" trap - 0 unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE -test -z "$ORIG_GIT_DIR" || GIT_DIR="$ORIG_GIT_DIR" && export GIT_DIR -test -z "$ORIG_GIT_WORK_TREE" || GIT_WORK_TREE="$ORIG_GIT_WORK_TREE" && +test -z "$ORIG_GIT_DIR" || { + GIT_DIR="$ORIG_GIT_DIR" && export GIT_DIR +} +test -z "$ORIG_GIT_WORK_TREE" || { + GIT_WORK_TREE="$ORIG_GIT_WORK_TREE" && export GIT_WORK_TREE -test -z "$ORIG_GIT_INDEX_FILE" || GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && +} +test -z "$ORIG_GIT_INDEX_FILE" || { + GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && export GIT_INDEX_FILE +} git read-tree -u -m HEAD exit $ret