summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Yann Dirson <ydirson@altern.org>2006-06-24 00:04:05 +0200
committerLibravatar Junio C Hamano <junkio@cox.net>2006-06-25 00:35:52 -0700
commit29f4ad867cd15f4029c280c417f4a0866d5229a9 (patch)
tree5b714456a96bc2fd121452e8a1b77f47fada270c
parentRename safe_strncpy() to strlcpy(). (diff)
downloadtgif-29f4ad867cd15f4029c280c417f4a0866d5229a9.tar.xz
git-commit: filter out log message lines only when editor was run.
The current behaviour strips out lines starting with a # even when fed through stdin or -m. This is particularly bad when importing history from another SCM (tailor 0.9.23 uses git-commit). In the best cases all lines are stripped and the commit fails with a confusing "empty log message" error, but in many cases the commit is done, with loss of information. Note that it is quite peculiar to just have "#" handled as a leading comment char here. One commonly meet CVS: or CG: or STG: as prefixes, and using GIT: would be more robust as well as consistent with other commit tools. However, that would break any tool relying on the # (if any). Signed-off-by: Yann Dirson <ydirson@altern.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-xgit-commit.sh19
1 files changed, 12 insertions, 7 deletions
diff --git a/git-commit.sh b/git-commit.sh
index e74fe640b8..128db6c52a 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -693,13 +693,18 @@ t)
fi
esac
-sed -e '
- /^diff --git a\/.*/{
- s///
- q
- }
- /^#/d
-' "$GIT_DIR"/COMMIT_EDITMSG |
+if test -z "$no_edit"
+then
+ sed -e '
+ /^diff --git a\/.*/{
+ s///
+ q
+ }
+ /^#/d
+ ' "$GIT_DIR"/COMMIT_EDITMSG
+else
+ cat "$GIT_DIR"/COMMIT_EDITMSG
+fi |
git-stripspace >"$GIT_DIR"/COMMIT_MSG
if cnt=`grep -v -i '^Signed-off-by' "$GIT_DIR"/COMMIT_MSG |