Ignore

Ignore rules exclude noisy files and folders from workspace scanning and snapshots. Use them to skip build outputs, caches, and temporary files so history stays clean and enumeration stays fast.

Quick start

  • On init, Rinne creates rinneignore.json in the workspace root (the same level as .rinne/).
  • Rules are applied to workspace-relative paths using / separators.
  • Includes override excludes. Use include* lists or prefix an exclude entry with ! to create exceptions.
  • If a selected save --file or save --dir target is ignored by rinneignore.json, the scoped save fails with an error.

File location

./rinneignore.json
./.rinne/

The default starter file excludes .rinne/**, so workspace metadata stays out of snapshots.

JSON format

The ignore file is JSON. Comments and trailing commas are allowed, so you can keep it readable.

Rule types

exclude / include
Path patterns matched against the logical path (workspace-relative), using / as separator. Example: Assets/texture.png, bin/app.exe
excludeFiles / includeFiles
File name only (not the full path). Example: *.tmp, *.log
excludeDirs / includeDirs
Directory segment only. Example: temp/, .vs/ (a trailing / is optional)

Pattern syntax

Patterns are glob-like and match the entire string (anchored).

  • * matches any characters except /
  • ** matches across / (any depth)
  • ? matches a single character except /
Examples
bin/**     // everything under bin/
**/*.tmp   // any .tmp file anywhere
cache/     // (excludeDirs) any directory segment named "cache"

Include wins

Includes override excludes. If a path matches an include rule, it is not ignored even if it also matches an exclude rule. You can write includes in two ways: use include* arrays, or prefix an exclude entry with !.

{
  "exclude": [
    "bin/**",
    "!bin/keep/**"
  ]
}

Traversal behavior (important)

When a directory is ignored, Rinne normally won’t descend into it. However, if your config contains include rules that might match files inside ignored directories, Rinne may still traverse ignored directories to find those included files. This keeps includes reliable, but can increase scan work on very large trees.

Default template

The starter file created by init contains the full structure below (edit it freely):

{
  "exclude": [
    ".rinne/**",
    ".git/**",
    "bin/**",
    "obj/**"
  ],
  "excludeFiles": [
    "*.tmp",
    "*.log",
    "*.user"
  ],
  "excludeDirs": [
    "cache/",
    "temp/",
    ".vs/"
  ],
  "include": [],
  "includeFiles": [],
  "includeDirs": []
}

Behavior notes

Ignore rules affect workspace scanning during save. They help keep new snapshots focused on the files you actually want.

Changing rinneignore.json does not rewrite existing snapshots. It only changes how future workspace scans behave.

Early Access note: ignore behavior may evolve. Keep rules minimal and explicit.