summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Witten <mfwitten@gmail.com>2011-08-07 02:44:43 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-08-08 19:09:38 (GMT)
commit0906f6e14e6e9df0c4ea4edb08ebe9f5d16c2391 (patch)
tree3fa834f36f0f2ce1c330247ee1dfd8060f642dc0
parentae8044a2f542f5803c161ee510ac14492bc468d8 (diff)
downloadgit-0906f6e14e6e9df0c4ea4edb08ebe9f5d16c2391.zip
git-0906f6e14e6e9df0c4ea4edb08ebe9f5d16c2391.tar.gz
git-0906f6e14e6e9df0c4ea4edb08ebe9f5d16c2391.tar.bz2
filter-branch: Export variable `workdir' for --commit-filter
According to `git help filter-branch': --commit-filter <command> ... You can use the _map_ convenience function in this filter, and other convenience functions, too... ... However, it turns out that `map' hasn't been usable because it depends on the variable `workdir', which is not propogated to the environment of the shell that runs the commit-filter <command> because the shell is created via a simple-command rather than a compound-command subshell: @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \ $(git write-tree) $parentstr < ../message > ../map/$commit || die "could not write rewritten commit" One solution is simply to export `workdir'. However, it seems rather heavy-handed to export `workdir' to the environments of all commands, so instead this commit exports `workdir' for only the duration of the shell command in question: workdir=$workdir @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \ $(git write-tree) $parentstr < ../message > ../map/$commit || die "could not write rewritten commit" Signed-off-by: Michael Witten <mfwitten@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-filter-branch.sh2
1 files changed, 1 insertions, 1 deletions
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 962a93b..6b5f225 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -363,7 +363,7 @@ while read commit parents; do
sed -e '1,/^$/d' <../commit | \
eval "$filter_msg" > ../message ||
die "msg filter failed: $filter_msg"
- @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \
+ workdir=$workdir @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \
$(git write-tree) $parentstr < ../message > ../map/$commit ||
die "could not write rewritten commit"
done <../revs