[PATCH] make git-filter-branch use parse-options.
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
---
git-filter-branch.sh | 93 +++++++++++++++++++++-----------------------------
1 files changed, 39 insertions(+), 54 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 81392ad..8af3126 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -87,14 +87,26 @@ set_ident () {
echo "case \"\$GIT_${uid}_NAME\" in \"\") GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\" && export GIT_${uid}_NAME;; esac"
}
-USAGE="[--env-filter <command>] [--tree-filter <command>] \
-[--index-filter <command>] [--parent-filter <command>] \
-[--msg-filter <command>] [--commit-filter <command>] \
-[--tag-name-filter <command>] [--subdirectory-filter <directory>] \
-[--original <namespace>] [-d <directory>] [-f | --force] \
-[<rev-list options>...]"
-
-OPTIONS_SPEC=
+OPTIONS_KEEPDASHDASH=
+OPTIONS_SPEC="\
+git filter-branch [options] [<rev-list options>...]
+--
+d= temporary path to use for rewriting
+f,force force filter-branch to run
+subdirectory-filter= only look at the history touching that specific subdirectory
+original= namespace where the original commits will be stored (default: refs/original)
+
+ Filters that you can run:
+
+env-filter= environment filter to run
+tree-filter= tree rewriting filter to run
+index-filter= index rewriting filter to run
+parent-filter= parent rewriting filter to run
+msg-filter= commit message rewriting filter to run
+commit-filter= commit rewriting filter to run
+tag-name-filter= tag name rewriting filter to run
+"
+
. git-sh-setup
if [ "$(is_bare_repository)" = false ]; then
@@ -117,63 +129,36 @@ force=
while :
do
case "$1" in
- --)
- shift
- break
- ;;
--force|-f)
- shift
- force=t
- continue
- ;;
- -*)
- ;;
- *)
- break;
- esac
-
- # all switches take one argument
- ARG="$1"
- case "$#" in 1) usage ;; esac
- shift
- OPTARG="$1"
- shift
-
- case "$ARG" in
+ force=t;;
-d)
- tempdir="$OPTARG"
- ;;
+ tempdir="$2"; shift;;
+ --subdirectory-filter)
+ filter_subdir="$2"; shift;;
+ --original)
+ orig_namespace=$(expr "$2/" : '\(.*[^/]\)/*$')/
+ shift;;
+
--env-filter)
- filter_env="$OPTARG"
- ;;
+ filter_env="$2"; shift;;
--tree-filter)
- filter_tree="$OPTARG"
- ;;
+ filter_tree="$2"; shift;;
--index-filter)
- filter_index="$OPTARG"
- ;;
+ filter_index="$2"; shift;;
--parent-filter)
- filter_parent="$OPTARG"
- ;;
+ filter_parent="$2"; shift;;
--msg-filter)
- filter_msg="$OPTARG"
- ;;
+ filter_msg="$2"; shift;;
--commit-filter)
- filter_commit="$functions; $OPTARG"
- ;;
+ filter_commit="$functions; $2"; shift;;
--tag-name-filter)
- filter_tag_name="$OPTARG"
- ;;
- --subdirectory-filter)
- filter_subdir="$OPTARG"
- ;;
- --original)
- orig_namespace=$(expr "$OPTARG/" : '\(.*[^/]\)/*$')/
- ;;
+ filter_tag_name="$2"; shift;;
+ --)
+ shift; break;;
*)
- usage
- ;;
+ usage;;
esac
+ shift
done
case "$force" in
--
1.6.0.3.758.gc29b0