使用 .rooignore 控制文件访问
.rooignore
文件是管理 itBuilder 与项目文件交互的关键功能。它允许您指定 Roo 不应访问或修改的文件和目录,类似于 .gitignore
对 Git 的工作方式。
什么是 .rooignore
?
- 目的:保护敏感信息,防止意外更改构建产物或大型资源,并通常定义 Roo 在工作空间内的操作范围。
- 使用方法:在 VS Code 工作空间的根目录中创建一个名为
.rooignore
的文件。在此文件中列出模式,告诉 Roo 要忽略哪些文件和目录。 - 范围:
.rooignore
影响 Roo 的工具和上下文提及(如@directory
附件)。
Roo 主动监控 .rooignore
文件。您所做的任何更改都会自动重新加载,确保 Roo 始终使用最新的规则。.rooignore
文件本身总是被隐式忽略,因此 Roo 无法更改自己的访问规则。
模式语法
.rooignore
的语法与 .gitignore
完全相同。以下是一些常见示例:
node_modules/
:忽略整个node_modules
目录。*.log
:忽略所有以.log
结尾的文件。config/secrets.json
:忽略特定文件。!important.log
:例外;即使存在更广泛的模式如*.log
,Roo 也不会忽略这个特定文件。build/
:忽略build
目录。docs/**/*.md
:忽略docs
目录及其子目录中的所有 Markdown 文件。
有关语法的完整指南,请参考 Git 官方文档中的 .gitignore。
Roo 工具如何与 .rooignore
交互
.rooignore
规则在各种 Roo 工具中强制执行:
严格强制执行(读取和写入)
这些工具在文件操作之前直接检查 .rooignore
。如果文件被忽略,操作将被阻止:
read_file
:不会读取被忽略的文件。write_to_file
:不会写入或创建新的被忽略文件。apply_diff
:不会对被忽略的文件应用差异。insert_content
:不会写入被忽略的文件。search_and_replace
:不会在被忽略的文件中搜索和替换。list_code_definition_names
:不会解析被忽略的文件以获取代码符号。
文件发现和列表
list_files
工具和@directory
附件:当 Roo 列出文件或您使用@directory
附件时,被忽略的文件会被省略或标记为 🔒 符号(见下面的"用户体验")。两者都使用相同的过滤逻辑。- 环境详情:提供给 Roo 的工作空间信息(如打开的标签页和项目结构)会被过滤以排除或标记被忽略的项目。
上下文提及
@directory
附件:目录内容遵循.rooignore
模式。被忽略的文件会被过滤掉或根据showRooIgnoredFiles
设置标记为[🔒]
前缀。- 单文件提及:被忽略的文件返回"(File is ignored by .rooignore)"而不是内容。
命令执行
execute_command
工具:此工具检查命令(来自预定义列表如cat
或grep
)是否针对被忽略的文件。如果是,执行将被阻止。
关键限制和范围
- 工作空间中心:
.rooignore
规则仅适用于当前 VS Code 工作空间根目录内的文件和目录。此范围之外的文件不受影响。 execute_command
特异性:对execute_command
的保护仅限于预定义的文件读取命令列表。自定义脚本或不常见的实用程序可能不会被捕获。- 不是完整的沙盒:
.rooignore
是控制 Roo 通过其工具进行文件访问的强大工具,但它不会创建系统级沙盒。
用户体验和通知
- 视觉提示 (🔒):在文件列表和
@directory
附件中,被.rooignore
忽略的文件可能会被标记为锁定符号 (🔒),具体取决于showRooIgnoredFiles
设置(默认为true
)。 - 忽略消息:单文件提及返回"(File is ignored by .rooignore)"而不是内容。
- 错误消息:如果工具操作被阻止,Roo 会收到错误:
"Access to [file_path] is blocked by the .rooignore file settings. You must try to continue in the task without using this file, or ask the user to update the .rooignore file."
- 聊天通知:当操作因
.rooignore
而被阻止时,您通常会在 Roo 聊天界面中看到通知。
本指南帮助您了解 .rooignore
功能、其功能和当前限制,以便您可以有效管理 Roo 与代码库的交互。