git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: bug "$message" literal in commit message

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 3, 2015, 18:16 UTC
Message-ID
<xmqqzj4gwtbr.fsf@gitster.dls.corp.google.com>
In-Reply-To
<CAF-5DQ+WGhHq0OZZh+90iuD1qrffcYyuprzW9m7XC6NGXPZzSQ@mail.gmail.com>
Yauheni Zablotski <e.zablotski@gmail.com> writes:
Show 22 quoted lines
> Hello,
>
> I think I found a bug(or strange behavior) in the git.
> If commit message contains literal "$message" than that literal
> disappears from commit message.
>
> For example:
> -------------
> user@comp ~/cc $ git commit -am "1$message1"
> [master (root-commit) d36a841] 1
>  1 file changed, 0 insertions(+), 0 deletions(-)
>  create mode 100644 1
>
> user@comp ~/cc $ git log
> commit d36a841ae25510ada80246a78225446083fcb3e1
> Author: user <e.zablotski@gmail.com>
> Date:   Wed Jun 3 18:21:45 2015 +0200
>
>     file
> ----------------
>
> Sorry for having disturbed you
Learn shell ;-)

Instead of "git commit -am", try "echo" and repeat your exercise, and you would see:

	$ echo "1$message1"
        1
If you prepare a shell variable message1 beforehand, e.g.
	$ message1='This is the contents of message1 variable'
        $ echo "1$message1"
        1This is the contents of message1 variable

Your shell interpolates the value of message1 variable if you write "$message1" on your command line, way before individual commands (e.g. echo and git above) that receive the string as its parameter sees them.

Contrast the above with this invocation after understanding the above.

	$ git commit -a -m '1$message1'
	$ git log
Previous: Yauheni ZablotskiNext: Matthieu Moy
Message 2 of 3 in “bug "$message" literal in commit message”
  1. Yauheni ZablotskiJun 3, 2015
  2. Junio C HamanoJun 3, 2015
  3. Matthieu MoyJun 3, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.