Merge branch 'jk/filter-branch-come-back-to-original'

When used with "-d temporary-directory" option, "git filter-branch"
failed to come back to the original working tree to perform the
final clean-up procedure.

* jk/filter-branch-come-back-to-original:
  filter-branch: return to original dir after filtering
maint
Junio C Hamano 2013-04-07 14:29:34 -07:00
commit 9a11f13d9e
2 changed files with 17 additions and 2 deletions

View File

@ -199,6 +199,7 @@ t)
test -d "$tempdir" && test -d "$tempdir" &&
die "$tempdir already exists, please remove it" die "$tempdir already exists, please remove it"
esac esac
orig_dir=$(pwd)
mkdir -p "$tempdir/t" && mkdir -p "$tempdir/t" &&
tempdir="$(cd "$tempdir"; pwd)" && tempdir="$(cd "$tempdir"; pwd)" &&
cd "$tempdir/t" && cd "$tempdir/t" &&
@ -206,7 +207,7 @@ workdir="$(pwd)" ||
die "" die ""


# Remove tempdir on exit # Remove tempdir on exit
trap 'cd ../..; rm -rf "$tempdir"' 0 trap 'cd "$orig_dir"; rm -rf "$tempdir"' 0


ORIG_GIT_DIR="$GIT_DIR" ORIG_GIT_DIR="$GIT_DIR"
ORIG_GIT_WORK_TREE="$GIT_WORK_TREE" ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"
@ -469,7 +470,7 @@ if [ "$filter_tag_name" ]; then
done done
fi fi


cd ../.. cd "$orig_dir"
rm -rf "$tempdir" rm -rf "$tempdir"


trap - 0 trap - 0

View File

@ -64,6 +64,20 @@ test_expect_success 'correct GIT_DIR while using -d' '
grep drepo "$TRASHDIR/backup-refs" grep drepo "$TRASHDIR/backup-refs"
' '


test_expect_success 'tree-filter works with -d' '
git init drepo-tree &&
(
cd drepo-tree &&
test_commit one &&
git filter-branch -d "$TRASHDIR/dfoo" \
--tree-filter "echo changed >one.t" &&
echo changed >expect &&
git cat-file blob HEAD:one.t >actual &&
test_cmp expect actual &&
test_cmp one.t actual
)
'

test_expect_success 'Fail if commit filter fails' ' test_expect_success 'Fail if commit filter fails' '
test_must_fail git filter-branch -f --commit-filter "exit 1" HEAD test_must_fail git filter-branch -f --commit-filter "exit 1" HEAD
' '