zoukankan      html  css  js  c++  java
  • ctags的--exclude选项

    起因

    tags --exclude=./src/isa/riscv32, 发现加了./就不起作用(也就是说目录下文件还是会被tag).
    man ctags, 看到是pattern.

    试验

    /Users/quebec/Playground/play/a/b/c目录下有main.c
    内容:

    #include <stdio>
    
    int main() {
    }
    

    现在在play下. 用比如ctags -R --exclude=c这样的命令测试. 结果如下. 起作用的意思就是没有被tag, 不起作用就是能找到main tag.

    c, 起作用
    b/c, 不起作用
    b, 起作用
    *b/c, 起作用
    c/*, 不起作用
    /Users/quebec/Playground/play/a/b/c/*, 不起作用
    a/b/c/*, 起作用
    b, 起作用
    

    推测

    据此结果, 猜测其机制为:

    1. 必须是完整匹配, 可以有通配符*, ?之类的. 和gitignore不同的是, *也能匹配..
    2. 会匹配的路径是要么是这个节点(目录或者文件, 由于inode所以把它称为节点)的name, 要么是它相对于当前目录的路径, 相对路径中不包括..

    比如, 递归进入目录a后, 发现有目录b, 那么要匹配的目标字符串为a, a/b(而不是绝对路径), 如果匹配成功, 此目录不再进入.

    解释结论

    1, 3. c, c与目录c的节点名匹配, 不再进入, 起作用, 3和1的道理相同
    2, 4, 5. b/c, 根据1必须是完整匹配, 如果加上*, 就像4那样, 起作用
    6. 前面说了, 目标字符串不是绝对路径, 因此匹配不上不起作用
    7. 根据2, 起作用
    8, 根据2, 起作用

  • 相关阅读:
    Linux内核源码分析方法
    OVS处理upcall流程分析
    Linux内核源码目录结构分析
    理解OpenStack中的OpenvSwitch的几个要点
    OVS源码connmgr_run分析
    ovs-appctl 命令合集
    云计算底层技术-使用openvswitch
    OVS架构
    Open vSwitch Datapath浅析
    Openvswitch原理与代码分析(4):网络包的处理过程
  • 原文地址:https://www.cnblogs.com/Tokubara/p/15213969.html
Copyright © 2011-2022 走看看