contrib/rerere-train: optionally overwrite existing resolutions

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>
This commit is contained in:
Raman Gupta 2017-07-26 15:08:38 -04:00 committed by Junio C Hamano
parent 5800c63717
commit ad53bf79aa

View File

@ -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"