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)" -- 1.5.0.rc2.g84cf66-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html