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

Re: Two problems on alias of git

From
Jakub Narebski <jnareb@gmail.com>
Date
May 5, 2009, 17:01 UTC
Message-ID
<200905051901.38151.jnareb@gmail.com>
In-Reply-To
<op.utgs86ta6f2obg@i220-99-253-139.s27.a098.ap.plala.or.jp>
On Wed, 5 May 2009 (yes, different timezones), Kana Natsuno wrote:
> On Wed, 06 May 2009 00:42:49 +0900, Jakub Narebski <jnareb@gmail.com> wrote:
Show 18 quoted lines
> > By the way, you can use continuation-of-line character (end line
> > with '\') and/or can embed newlines using C escape sequence, i.e. "\n".
> >
> > So your code can look like this (although I am not sure it is worth it):
> >
> >   [alias]
> >         lr = "!$SHELL -c '                               \n\
> >                 n=10;                                    \n\
> >                 1=\"${1:-$n}\";                          \n\
> >                 if ! [ \"${1##[0-9]*}\" = \"\" ]; then   \n\
> >                   t=\"$1\";                              \n\
> >                   1=\"${2:-$n}\";                        \n\
> >                   2=\"$t\";                              \n\
> >                 fi;                                      \n\
> >                 git --no-pager l1 --reverse -\"$1\" \"${2:-HEAD}\" \n\
> >               ' __dummy__"
> 
> Thank you again, I didn't know that.  It is better than what I wrote.
By the way, "\n" is there only for nice looking output of git-config
for this variable.  For config file you need only to escape end of line. 
 
Show 10 quoted lines
> > BTW. you need to quote value because it contains comment character '#'
> > in 4th line of script.
> 
> Really?  As far as I read the code of git, especially parse_value() in config.c,
> it is not necessary to escape '#'s because they are inside of the outermost
> doublequotes and they should not be escaped, because \# is an unknown escape
> sequence and git rejects them.  If #s are escaped, it causes an error as follows:
> 
> $ git config --get alias.lr
> fatal: bad config file line 29 in /Users/kana/.gitconfig

Errrr... what I meant is that you have to _quote_ value if it contains comment character, compare

  [string]
  	unquoted =  a # b
  	quoted   = "a # b"

not that you have to escape comment character '#'. But I forgot about the fact that ## in your example is inside quotes anyway.

-- 
Jakub Narebski
Poland
Previous: Kana NatsunoNext: Jeff King
Message 6 of 7 in “Two problems on alias of git”
  1. Kana NatsunoMay 5, 2009
  2. Jakub NarebskiMay 5, 2009
  3. Kana NatsunoMay 5, 2009
  4. Jakub NarebskiMay 5, 2009
  5. Kana NatsunoMay 5, 2009
  6. Jakub NarebskiMay 5, 2009
  7. Jeff KingMay 8, 2009

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.