X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-filter-branch.sh;h=182822a24e214fe7e93a2df68fdda3dd40b5896d;hb=2c47789d817aaf745a5ce5d5f79619c634cc8566;hp=80e99e539477cbd7266b19c1bd90d424cf1341ee;hpb=adf59ec127f447aa83c84f9dbe2ae4e6417f3760;p=git.git diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 80e99e539..182822a24 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -97,9 +97,11 @@ USAGE="[--env-filter ] [--tree-filter ] \ OPTIONS_SPEC= . git-sh-setup -git diff-files --quiet && +if [ "$(is_bare_repository)" = false ]; then + git diff-files --quiet && git diff-index --cached --quiet HEAD -- || die "Cannot rewrite branch(es) with a dirty working directory." +fi tempdir=.git-rewrite filter_env= @@ -234,7 +236,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 " ") @@ -434,18 +436,20 @@ 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" && - export GIT_WORK_TREE -} -test -z "$ORIG_GIT_INDEX_FILE" || { - GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && - export GIT_INDEX_FILE -} -git read-tree -u -m HEAD +if [ "$(is_bare_repository)" = false ]; then + 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" && + export GIT_WORK_TREE + } + test -z "$ORIG_GIT_INDEX_FILE" || { + GIT_INDEX_FILE="$ORIG_GIT_INDEX_FILE" && + export GIT_INDEX_FILE + } + git read-tree -u -m HEAD +fi exit $ret