使用rbtools发起代码评审时如何排除指定目录?
rbt post
-X/--exclude 参数排除目录的用法示例 参数核心规则
-X(长选项写法--exclude)用于在执行rbt post生成diff时,剔除匹配指定模式的文件,支持多次传入该参数配置多条过滤规则,模式匹配采用UNIX glob语法,兼容Bazaar、CVS、Git、Mercurial、Perforce、SOS、Subversion版本控制系统。
路径匹配逻辑:
- 规则以路径分隔符开头(macOS/Linux为
/,Windows为\)时,匹配路径相对于仓库根目录计算 - 其余不以路径分隔符开头的规则,匹配路径相对于执行命令时的当前工作目录计算
官方参考示例:排除仓库内所有
.txt文件的写法为rbt post -X /'*.txt'
排除目录及目录下所有内容的实操示例
glob语法中**代表递归匹配任意层级的子目录和文件,要完整排除某个目录的全部内容,必须搭配这个通配符使用,以下是不同场景可直接复用的写法:
1. 排除仓库根目录下的指定目录
比如要排除仓库根目录下的dist目录及其所有嵌套内容:
# macOS / Linux 环境 rbt post -X /dist/**
# Windows 环境 rbt post -X \dist\**
如果遇到shell提前展开通配符导致规则失效的情况,可以给匹配规则加单引号包裹,写成rbt post -X '/dist/**'即可。
2. 排除当前工作目录下的子目录
如果你执行rbt post时所在的路径是仓库内的src/utils/,要排除当前路径下的__pycache__子目录及全部内容,不需要加开头的路径分隔符,直接写相对路径规则:
# macOS / Linux 环境 rbt post -X __pycache__/**
# Windows 环境 rbt post -X __pycache__\**
这个写法只会匹配当前工作目录下的目标目录,不会误排除仓库其他位置同名的目录。
3. 同时排除多个目录
重复传入-X参数即可,比如同时排除根目录的build、node_modules目录,以及当前目录下的temp目录:
# macOS / Linux 环境 rbt post -X /build/** -X /node_modules/** -X temp/**
避坑提示
- 不要漏写
**递归通配符:如果只写-X /dist/,仅会匹配路径上名字为dist的单个文件,不会匹配dist目录下的子文件和嵌套子目录 - Windows环境不要混用正斜杠作为路径分隔符,否则会导致规则匹配失败
- 规则里包含特殊字符时,建议用单引号把匹配模式包裹起来,避免shell提前解析通配符导致参数失效
内容的提问来源于stack exchange,提问作者mesh
相关产品推荐
相关产品推荐

