Junio C Hamano <gitster@xxxxxxxxx> writes: > Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> writes: > >> Actually, is there any reason why we do not allow a simple escaping like >> >> \# this is a line starting with # >> \\ this is a line starting with \ >> # this is a comment > > What are we trying to achieve? What I would like would be a simple way to: 1) Allow any commit message to be typed. If I want to talk about #include in my commit message, I should have an easy way to do so. 2) Allow commands that pop an editor on an existing message to preserve the original message, whatever it is. Well, actually Git even strips # lines even if it doesn't pop the editor. Currently, I can for example: $ git commit -m "#include" -a [detached HEAD 0f36ec9] #include 1 file changed, 1 insertion(+), 1 deletion(-) $ GIT_EDITOR=touch git commit --amend Aborting commit due to empty commit message. A simple escaping scheme like the above can solve both points: 1) If I want to talk about #include in my commit message, I can spell it \#include and Git would remove the \. The same way, if I want to tell my shell about a " inside a string, I can write "double-quote:\"." and get a litteral double-quote. 2) A command that pops an editor could add the escaping where needed, pop the editor, and then unescape. A command like "pick" in "rebase -i" could escape the message, and feed it to "git commit" which would unescape it. > Munging the original "# I want this line intact" to any other form > like " # I want this..." is as bad as losing it. It would modify it only when shown in the text editor. The object database would contain unescaped message, hence "git log" would show it unescaped for example. backslash-escaping special characters seems very natural to me, and I guess it would be for most computer-scientists. If I have problem with a special character, the first thing I would try would be to add a backslash in front of it. > If the user wants whatever she types in the resulting commit > literally, there is the "--cleanup=<choice>" option, no? $ GIT_EDITOR=touch git commit --cleanup=verbatim [detached HEAD 1b136a7] # Please enter the commit message for your changes. Lines starting # with '#' will be kept; you may remove them yourself if you want to. # An empty message aborts the commit. # HEAD detached from 5e70007 # Changes to be committed: # modified: foo.txt # # Changes not staged for commit : # modified: foo.txt # # Untracked files: # last-synchro.txt # 1 file changed, 1 insertion(+), 1 deletion(-) You really don't want that in day-to-day use. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- 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