Reintegrate: allow update/diff
parent
7bbd09786d
commit
3ec0851d85
59
Reintegrate
59
Reintegrate
|
|
@ -1,10 +1,17 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
accept_rerere=t generate=no
|
accept_rerere=t generate=no update= diff=
|
||||||
while case "$#,$1" in 0,*) break;; *,-*) ;; esac
|
while case "$#,$1" in 0,*) break;; *,-*) ;; esac
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-n) accept_rerere= ;;
|
-n) accept_rerere= ;;
|
||||||
|
-d) update=${2?"diff with what?"}
|
||||||
|
diff=yes
|
||||||
|
generate=yes
|
||||||
|
shift ;;
|
||||||
|
-u) update=${2?"update what?"}
|
||||||
|
generate=yes
|
||||||
|
shift ;;
|
||||||
*) generate=yes
|
*) generate=yes
|
||||||
break ;;
|
break ;;
|
||||||
esac
|
esac
|
||||||
|
|
@ -34,9 +41,16 @@ no)
|
||||||
do
|
do
|
||||||
case "$eh" in
|
case "$eh" in
|
||||||
"")
|
"")
|
||||||
|
save=$(git rev-parse --verify HEAD)
|
||||||
|
|
||||||
echo >&2 "* $branch"
|
echo >&2 "* $branch"
|
||||||
git merge "$branch" || accept_rerere || exit
|
git merge "$branch" || accept_rerere || exit
|
||||||
if git show-ref -q --verify "refs/merge-fix/$branch"
|
|
||||||
|
this=$(git rev-parse --verify HEAD)
|
||||||
|
if test "$this" = "$save"
|
||||||
|
then
|
||||||
|
:
|
||||||
|
elif git show-ref -q --verify "refs/merge-fix/$branch"
|
||||||
then
|
then
|
||||||
git cherry-pick --no-commit "refs/merge-fix/$branch" &&
|
git cherry-pick --no-commit "refs/merge-fix/$branch" &&
|
||||||
EDITOR=: git commit --amend -a
|
EDITOR=: git commit --amend -a
|
||||||
|
|
@ -51,6 +65,14 @@ no)
|
||||||
exit
|
exit
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
if test -n "$update" && test $# = 0
|
||||||
|
then
|
||||||
|
set x $(sed -n -e '2s/^# //p' <"$update") &&
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generation (or updating)
|
||||||
|
|
||||||
x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
|
x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
|
||||||
x40="$x40$x40$x40$x40$x40$x40$x40$x40"
|
x40="$x40$x40$x40$x40$x40$x40$x40$x40"
|
||||||
LF='
|
LF='
|
||||||
|
|
@ -84,9 +106,12 @@ show_pick () {
|
||||||
merged="$(git rev-parse --verify "$commit") pick $msg"
|
merged="$(git rev-parse --verify "$commit") pick $msg"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generate () {
|
||||||
|
PROGRAM=$1
|
||||||
|
shift
|
||||||
echo '#!/bin/sh'
|
echo '#!/bin/sh'
|
||||||
echo "$0 <<\\EOF"
|
echo "# $1"
|
||||||
|
echo "$PROGRAM" '"$@" <<\EOF'
|
||||||
git log --pretty=oneline --first-parent "$1" |
|
git log --pretty=oneline --first-parent "$1" |
|
||||||
{
|
{
|
||||||
series=
|
series=
|
||||||
|
|
@ -108,5 +133,29 @@ git log --pretty=oneline --first-parent "$1" |
|
||||||
done
|
done
|
||||||
echo "$series"
|
echo "$series"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo EOF
|
echo EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
if test -z "$update"
|
||||||
|
then
|
||||||
|
generate "$0" "$@"
|
||||||
|
elif test -z "$diff"
|
||||||
|
then
|
||||||
|
generate "$0" "$@" | diff -u "$update" -
|
||||||
|
if test $? = 0
|
||||||
|
then
|
||||||
|
echo >&2 "No changes."
|
||||||
|
else
|
||||||
|
echo >&2 -n "Update [Y/n]? "
|
||||||
|
read yesno
|
||||||
|
case "$yesno" in
|
||||||
|
[Yy]*)
|
||||||
|
generate "$0" "$@" |
|
||||||
|
sed -e 's/ :rebased?.*//' >"$update" ;;
|
||||||
|
*)
|
||||||
|
echo >&2 "No update then." ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
generate "$0" "$@" | diff -u "$update" -
|
||||||
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue