Skip to content
  • Junio C Hamano's avatar
    magic pathspec: futureproof shorthand form · 2f6c9760
    Junio C Hamano authored
    
    
    The earlier design was to take whatever non-alnum that the short format
    parser happens to support, leaving the rest as part of the pattern, so a
    version of git that knows '*' magic and a version that does not would have
    behaved differently when given ":*Makefile".  The former would have
    applied the '*' magic to the pattern "Makefile", while the latter would
    used no magic to the pattern "*Makefile".
    
    Instead, just reserve all non-alnum ASCII letters that are neither glob
    nor regexp special as potential magic signature, and when we see a magic
    that is not supported, die with an error message, just like the longhand
    codepath does.
    
    With this, ":%#!*Makefile" will always mean "%#!" magic applied to the
    pattern "*Makefile", no matter what version of git is used (it is a
    different matter if the version of git supports all of these three magic
    matching rules).
    
    Also make ':' without anything else to mean "there is no pathspec".  This
    would allow differences between "git log" and "git log ." run from the top
    level of the working tree (the latter simplifies no-op commits away from
    the history) to be expressed from a subdirectory by saying "git log :".
    
    Helped-by: default avatarNguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    2f6c9760