Johannes Schindelin [off-list ref] writes:
+this_script="$(cd "$(dirname "$0")"; pwd)"/$(basename "$0")
...
+ filter_commit="SOURCE_FUNCTIONS=1 . \"$this_script\"; $OPTARG"
Hmmmmmm.
Care to enlighten why this is not just:
filter_commit="SOURCE_FUNCTIONS=1 . \"$0\"; $OPTARG"
Is it because you cd(1) around in the script, and it can be
relative to where you started?
In either case, are you quoting potential funnies (such as '"'
or '\\') in "$0" sufficiently? Exporting this_script variable,
and changing the above to
filter_commit='SOURCE_FUNCTIONS=1 . "$this_script";'" $OPTARG"
to arrange the shell that is invoked with 'sh -c' to expand its
value would make it smaller problem, I suspect.
Hi,
On Wed, 18 Jul 2007, Junio C Hamano wrote:
Johannes Schindelin [off-list ref] writes:
quoted
+this_script="$(cd "$(dirname "$0")"; pwd)"/$(basename "$0")
...
+ filter_commit="SOURCE_FUNCTIONS=1 . \"$this_script\"; $OPTARG"
Hmmmmmm.
Care to enlighten why this is not just:
filter_commit="SOURCE_FUNCTIONS=1 . \"$0\"; $OPTARG"
Is it because you cd(1) around in the script, and it can be
relative to where you started?
Yes.
In either case, are you quoting potential funnies (such as '"'
or '\\') in "$0" sufficiently? Exporting this_script variable,
and changing the above to
filter_commit='SOURCE_FUNCTIONS=1 . "$this_script";'" $OPTARG"
to arrange the shell that is invoked with 'sh -c' to expand its
value would make it smaller problem, I suspect.
Will do. You know, I do have my problems with correct quoting, and the
way I did it in this patch was always good enough for me. Which does not
mean much...
Ciao,
Dscho
By sourcing git-filter-branch and stopping after the function definitions,
the commit filter can now access the convenience functions like "map".
Signed-off-by: Johannes Schindelin <redacted>
---
On Wed, 18 Jul 2007, Junio C Hamano wrote:
> Exporting this_script variable, and changing the above to
>
> filter_commit='SOURCE_FUNCTIONS=1 . "$this_script";'" $OPTARG"
>
> to arrange the shell that is invoked with 'sh -c' to expand its
> value would make it smaller problem, I suspect.
Hereby done.
<shameless plug>rebase -i rocks</shameless>
git-filter-branch.sh | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 0d000ed..3113937 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -8,9 +8,6 @@
# a new branch. You can specify a number of filters to modify the commits,
# files and trees.
-USAGE="git-filter-branch [-d TEMPDIR] [FILTERS] DESTBRANCH [REV-RANGE]"
-. git-sh-setup
-
warn () {
echo "$*" >&2
}@@ -69,6 +66,14 @@ set_ident () {
echo "[ -n \"\$GIT_${uid}_NAME\" ] || export GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\""
}
+# This script can be sourced by the commit filter to get the functions
+test "a$SOURCE_FUNCTIONS" = a1 && return
+this_script="$(cd "$(dirname "$0")"; pwd)"/$(basename "$0")
+export this_script
+
+USAGE="git-filter-branch [-d TEMPDIR] [FILTERS] DESTBRANCH [REV-RANGE]"
+. git-sh-setup
+
tempdir=.git-rewrite
filter_env=
filter_tree=@@ -118,7 +123,7 @@ do
filter_msg="$OPTARG"
;;
--commit-filter)
- filter_commit="$OPTARG"
+ filter_commit='SOURCE_FUNCTIONS=1 . "$this_script";'" $OPTARG"
;;
--tag-name-filter)
filter_tag_name="$OPTARG"
--
1.5.3.rc1.16.g9d6f-dirty