Git development
 help / color / mirror / Atom feed
From: Jon Seymour <jon.seymour@gmail.com>
To: git@vger.kernel.org
Cc: jon.seymour@gmail.com
Subject: [PATCH 1/1] Add support for an optional .nextmsg file to git-commit-script
Date: Tue, 14 Jun 2005 21:42:43 +1000	[thread overview]
Message-ID: <20050614114243.12267.qmail@blackcubes.dyndns.org> (raw)


This change allows a commit message to be prepared prior to git-commit-script being
invoked. During git commit the user is then given an opportunity to edit the
existing message, if any, and must confirm the commit by deleting a sentinel
line from the top of the edit buffer.

If the user does not delete the sentinel line, the commit is aborted and the
text of the message is saved for future editing.

The purpose of this change is to enable undo/redo tools to repopulate a commit
message from a previous commit that has been undone and then allow the user to
make small edits to the previous commit message prior recommitting the change.

If the .nextmsg file does not exist, git-commit-script behaves as before.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
---

 git-commit-script |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/git-commit-script b/git-commit-script
--- a/git-commit-script
+++ b/git-commit-script
@@ -1,5 +1,12 @@
 #!/bin/sh
+SENTINEL="*** delete this line to confirm the commit ***"
 : ${GIT_DIR=.git}
+:> .editmsg
+
+if [ -f .nextmsg ]
+then
+    cat .nextmsg   >>.editmsg
+fi
 PARENTS="HEAD"
 if [ -f $GIT_DIR/MERGE_HEAD ]; then
 	echo "#"
@@ -9,17 +16,31 @@ if [ -f $GIT_DIR/MERGE_HEAD ]; then
 	echo "# and try again"
 	echo "#"
 	PARENTS="HEAD -p MERGE_HEAD"
-fi > .editmsg
+fi >> .editmsg
 git-status-script >> .editmsg
 if [ "$?" != "0" ]
 then
 	cat .editmsg
 	exit 1
 fi
+if [ -f .nextmsg ]
+then
+    echo "$SENTINEL" >>.editmsg
+fi
 ${VISUAL:-${EDITOR:-vi}} .editmsg
-grep -v '^#' < .editmsg | git-stripspace > .cmitmsg
+if [ -f .nextmsg ]
+then
+    egrep -v "(^#|\\$SENTINEL)" < .editmsg > .nextmsg
+    if grep "\\$SENTINEL" < .editmsg >/dev/null
+    then
+	:> .editmsg
+	echo "commit aborted - to confirm, delete the sentinel line in the message"
+    fi
+fi
+egrep -v "^#|$SENTINEL" < .editmsg | git-stripspace > .cmitmsg
 [ -s .cmitmsg ] || exit 1
 tree=$(git-write-tree) || exit 1
 commit=$(cat .cmitmsg | git-commit-tree $tree -p $PARENTS) || exit 1
 echo $commit > $GIT_DIR/HEAD
 rm -f -- $GIT_DIR/MERGE_HEAD
+[ -f .nextmsg ] && rm .nextmsg
------------

             reply	other threads:[~2005-06-14 11:37 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-14 11:42 Jon Seymour [this message]
2005-06-14 14:44 ` [PATCH 1/1] Add support for an optional .nextmsg file to git-commit-script Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050614114243.12267.qmail@blackcubes.dyndns.org \
    --to=jon.seymour@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox