diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 80e99e539477cbd7266b19c1bd90d424cf1341ee..182822a24e214fe7e93a2df68fdda3dd40b5896d 100755 (executable)
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
OPTIONS_SPEC=
. git-sh-setup
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."
git diff-index --cached --quiet HEAD -- ||
die "Cannot rewrite branch(es) with a dirty working directory."
+fi
tempdir=.git-rewrite
filter_env=
tempdir=.git-rewrite
filter_env=
;;
*)
git rev-list --reverse --topo-order --default HEAD \
;;
*)
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 " ")
esac > ../revs || die "Could not get the commits"
commits=$(wc -l <../revs | tr -d " ")
trap - 0
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
exit $ret