• Show log

    Commit

  • Hash : 0dea4299
    Author : Patrick Steinhardt
    Date : 2016-08-12T09:06:15

    ignore: allow unignoring basenames in subdirectories
    
    The .gitignore file allows for patterns which unignore previous
    ignore patterns. When unignoring a previous pattern, there are
    basically three cases how this is matched when no globbing is
    used:
    
    1. when a previous file has been ignored, it can be unignored by
       using its exact name, e.g.
    
       foo/bar
       !foo/bar
    
    2. when a file in a subdirectory has been ignored, it can be
       unignored by using its basename, e.g.
    
       foo/bar
       !bar
    
    3. when all files with a basename are ignored, a specific file
       can be unignored again by specifying its path in a
       subdirectory, e.g.
    
       bar
       !foo/bar
    
    The first problem in libgit2 is that we did not correctly treat
    the second case. While we verified that the negative pattern
    matches the tail of the positive one, we did not verify if it
    only matches the basename of the positive pattern. So e.g. we
    would have also negated a pattern like
    
        foo/fruz_bar
        !bar
    
    Furthermore, we did not check for the third case, where a
    basename is being unignored in a certain subdirectory again.
    
    Both issues are fixed with this commit.
    

  • README.md

  • Writing Clar tests for libgit2

    For information on the Clar testing framework and a detailed introduction please visit:

    https://github.com/vmg/clar

    • Write your modules and tests. Use good, meaningful names.

    • Make sure you actually build the tests by setting:

        cmake -DBUILD_CLAR=ON build/
    • Test:

        ./build/libgit2_clar
    • Make sure everything is fine.

    • Send your pull request. That’s it.