summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaman Gupta <rocketraman@gmail.com>2017-07-26 15:08:38 -0400
committerJunio C Hamano <gitster@pobox.com>2017-07-26 13:38:48 -0700
commitad53bf79aa4ea20a8a94af9e2df5a8311ca1e55e (patch)
treea0b29cb75287cb3813c9d6e87d69377dede2c0f1
parent5800c63717ae35286a1441f14ffff753e01f7e2b (diff)
downloadgit-rg/rerere-train-overwrite.tar.gz
contrib/rerere-train: optionally overwrite existing resolutionsrg/rerere-train-overwrite
Provide the user an option to overwrite existing resolutions using an `--overwrite` flag. This might be used, for example, if the user knows that they already have an entry in their rerere cache for a conflict, but wish to drop it and retrain based on the merge commit(s) passed to the rerere-train script. Signed-off-by: Raman Gupta <rocketraman@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xcontrib/rerere-train.sh54
1 files changed, 52 insertions, 2 deletions
diff --git a/contrib/rerere-train.sh b/contrib/rerere-train.sh
index 52ad9e41fb..eeee45dd34 100755
--- a/contrib/rerere-train.sh
+++ b/contrib/rerere-train.sh
@@ -3,10 +3,56 @@
# Prime rerere database from existing merge commits
me=rerere-train
-USAGE="$me rev-list-args"
+USAGE=$(cat <<-EOF
+usage: $me [--overwrite] <rev-list-args>
+
+ -h, --help show the help
+ -o, --overwrite overwrite any existing rerere cache
+EOF
+)
SUBDIRECTORY_OK=Yes
-OPTIONS_SPEC=
+
+overwrite=0
+
+while test $# -gt 0
+do
+ opt="$1"
+ case "$opt" in
+ -h|--help)
+ echo "$USAGE"
+ exit 0
+ ;;
+ -o|--overwrite)
+ overwrite=1
+ shift
+ break
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+# Overwrite or help options are not valid except as first arg
+for opt in "$@"
+do
+ case "$opt" in
+ -h|--help)
+ echo "$USAGE"
+ exit 0
+ ;;
+ -o|--overwrite)
+ echo "$USAGE"
+ exit 0
+ ;;
+ esac
+done
+
. "$(git --exec-path)/git-sh-setup"
require_work_tree
cd_to_toplevel
@@ -34,6 +80,10 @@ do
# Cleanly merges
continue
fi
+ if test $overwrite = 1
+ then
+ git rerere forget .
+ fi
if test -s "$GIT_DIR/MERGE_RR"
then
git show -s --pretty=format:"Learning from %h %s" "$commit"