Previously, the working tree state was modified with `patch', which
was a fragile operation. Do everything with `git-apply --cached
--index' instead.
---
cg-commit | 33 +++++++++++++++++----------------
1 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/cg-commit b/cg-commit
index 360d5e6..f676e1f 100755
--- a/cg-commit
+++ b/cg-commit
@@ -575,22 +575,6 @@ else
fi
rm "$LOGMSG2"
-if [ "$review" ]; then
- if ! cmp -s "$PATCH" "$PATCH2"; then
- echo "Reverting the original patch..."
- if ! cg-patch -R < "$PATCH"; then
- die "unable to revert the original patch; the original patch is available in $PATCH, your edited patch is available in $PATCH2, your log message is in $LOGMSG, your working copy is in undefined state now and the world is about to end in ten minutes, have a nice day"
- fi
- echo "Applying the edited patch..."
- if ! cg-patch < "$PATCH2"; then
- # FIXME: Do something better to alleviate this situation.
- # At least restore the tree to the original state.
- die "unable to apply the edited patch; the original patch is available in $PATCH, your edited patch is available in $PATCH2, your log message is in $LOGMSG, your working copy is in undefined state now and the world is about to end in five minutes, have a nice day"
- fi
- fi
-fi
-
-
precommit_update()
{
queueN=(); queueD=(); queueM=();
@@ -620,6 +604,23 @@ if [ ! "$ignorecache" ]; then
precommit_update "${commitfiles[@]}" || die "update-cache failed"
fi
+if [ "$review" ]; then
+ if ! cmp -s "$PATCH" "$PATCH2"; then
+ git-read-tree HEAD
+ while ! git-apply --check --cached --index "$PATCH2"
+ do
+ echo "patch tried was:"
+ cat $PATCH2
+ echo "your patch does not apply cleanly, re-edit it!"
+ echo -n "sleeping 5s..."
+ sleep 4
+ echo "get it right this time OK?"
+ sleep 1
+ ${EDITOR:-vi} "$PATCH2"
+ done
+ git-apply --cached --index "$PATCH2"
+ fi
+fi
oldhead=
oldheadname="$(git-symbolic-ref HEAD)"
-- ...