From d92af6b20b69fffc784a586c520cc728e1f7f61f Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 19 Dec 2013 20:54:54 -0600 Subject: [PATCH] shears.sh: delete existing rewritten refs with --force Signed-off-by: Johannes Schindelin --- share/msysGit/shears.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/share/msysGit/shears.sh b/share/msysGit/shears.sh index 96853495..f577c5f5 100755 --- a/share/msysGit/shears.sh +++ b/share/msysGit/shears.sh @@ -157,6 +157,7 @@ merging= base_message= onto= recreate= +force= while test $# -gt 0 do case "$1" in @@ -182,6 +183,9 @@ do --recreate=*) recreate="$recreate ${1#--recreate=}" ;; + --force|-f) + force=t + ;; -h|--help) help ;; @@ -454,12 +458,25 @@ merge refs/rewritten/$mark -C $merge")" this="$(cd "$(dirname "$0")" && pwd)/$(basename "$0")" setup () { - test -z "$(git for-each-ref refs/rewritten/)" || - die "There are still rewritten revisions" + existing=$(git for-each-ref --format='%(refname)' refs/rewritten/) + test -z "$existing" || + if test -n "$force" + then + for ref in $existing + do + git update-ref -d $ref + done + else + die "$(printf '%s %s:\n%s\n' \ + 'There are still rewritten revisions' \ + '(use --force to delete)' \ + "$existing")" + fi alias="$(git config --get alias..r)" test -z "$alias" || test "a$alias" = "a!sh \"$this\"" || + test -n "$force" || die "There is already an '.r' alias!" git config alias..r "!sh \"$this\"" && -- 2.11.4.GIT