Regex-like shell glob patterns for gitignore

后端 未结 5 833
温柔的废话
温柔的废话 2020-12-19 03:00

When I compile my C++ project, many shared object files are created with extensions such as

.so
.so.0
.so.7
.so.0.7

I need to add all those

5条回答
  •  佛祖请我去吃肉
    2020-12-19 03:43

    While the answer by @SpeakEasy can ignore .so files in a single step using *.so*, for your use case of ignoring files in formats specified, you can use two entries in your .gitignore for more specific ignore rule

    *.so
    *.so.[0-9]*
    

    From gitignore man page

    Each line in a gitignore file specifies a pattern.

    Git treats the pattern as a shell glob suitable for consumption by fnmatch

    The important thing to note is that the pattern is not the same as regular expressions.

    Python has a module named fnmatch, you can use that to verify whether a particular filename matches the pattern or not.

    Sample example:

    import fnmatch
    pattern = "*.so.[0-9]*"
    filenames = ["a.so", "b.so.0", "b.so.11", "b.so.1.0", "b.so.1.0.12"]
    
    for filename in filenames:
        print filename, fnmatch.fnmatch(filename, pattern)
    
    >>> a.so False
        b.so.0 True
        b.so.11 True
        b.so.1.0 True
        b.so.1.0.12 True
    

提交回复
热议问题