Skip to content
  • Brandon Williams's avatar
    pathspec: allow escaped query values · c5af19f9
    Brandon Williams authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    In our own .gitattributes file we have attributes such as:
    
        *.[ch] whitespace=indent,trail,space
    
    When querying for attributes we want to be able to ask for the exact
    value, i.e.
    
        git ls-files :(attr:whitespace=indent,trail,space)
    
    should work, but the commas are used in the attr magic to introduce
    the next attr, such that this query currently fails with
    
    fatal: Invalid pathspec magic 'trail' in ':(attr:whitespace=indent,trail,space)'
    
    This change allows escaping characters by a backslash, such that the query
    
        git ls-files :(attr:whitespace=indent\,trail\,space)
    
    will match all path that have the value "indent,trail,space" for the
    whitespace attribute. To accomplish this, we need to modify two places.
    First `parse_long_magic` needs to not stop early upon seeing a comma or
    closing paren that is escaped. As a second step we need to remove any
    escaping from the attr value.
    
    Based on a patch by Stefan Beller <sbeller@google.com>
    
    Signed-off-by: default avatarBrandon Williams <bmwill@google.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    c5af19f9