The .dvignore file is used by Diversion to specify files and directories that should be ignored when tracking changes. This helps keep the repository clean by excluding unnecessary or automatically generated files, such as build artifacts, temporary files, and cached data.

Purpose

Using a .dvignore file ensures that only relevant files are committed to the repository. This helps:
  • Prevent clutter from unnecessary files.
  • Improve performance by avoiding tracking large or frequently changing temporary files.
  • Avoid committing sensitive or auto-generated files.
While .dvignore decides what the repository tracks and stores, Selective Sync controls which of those already‑tracked files your workspace actually downloads.

File Structure

The .dvignore file consists of patterns defining which files or directories to exclude. It typically follows these rules:
  • A line starting with # serves as a comment. Put a backslash \ in front of the first hash for patterns that begin with a hash.
  • Don’t mix comments and patterns on the same line. Mixing them will cause the pattern to not have any effect.
  • Wildcard * matches any sequence of characters (but does not cross / boundaries, unlike **).
  • Directories ending with / ignore all contents inside.
  • Negations (!) explicitly include files that might otherwise be ignored.

Advanced rule semantics

  • Root‑anchored / – a leading slash matches from the repository root; without it, the pattern can match anywhere.
  • Double asterisk ** – matches across directory boundaries (e.g., Assets/**/config.ini).
  • Negation precedence – a !pattern only re‑includes a path if one of its ancestors was ignored by a prior rule.
Saved/*
!Content/**
Saved/Windows/Content/file.txt -> still ignored
  • Nested .dvignore files – rules in nested directories override rules from parent directories.
Git compatibility: Diversion implements the same pattern‑matching semantics as Git’s .gitignore—including support for nested ignore files—so a source tree copied from Git will behave identically out of the box.
For game‑engine projects Diversion ships a default .dvignore tailored to each engine. The snippets below are high‑level illustrations; check the actual .dvignore generated in your repo for the authoritative rules.

Unreal

# Unreal Engine build files
Build/*
# Saved game states and config files
Saved/*
# Compiled intermediate files
Intermediate/*
# Editor cache files
DerivedDataCache/*

Unity

# Unity Library
/[Ll]ibrary/
# Temporary files
/[Tt]emp/
# Object files
/[Oo]bj/
# Build directories
/[Bb]uild/
# User-specific settings
/[Uu]ser[Ss]ettings/

Godot

# Godot internal directory
.godot/
# Import cache folder
.import/
# Export settings
export.cfg
# Export presets
export_presets.cfg
# Auto-generated translation files
*.translation
You can modify the .dvignore file based on your project needs. If you work with additional tools or frameworks, consider adding their cache or temporary directories to improve repository management. For example, if you use a custom build system, you might add:
/build_output/
/temp_build_files/
IMPORTANT NOTE: Files and directories that are already committed, will NOT be ignored by .dvignore.
  1. If you wish to ignore a committed path, you need to first delete it and commit the deletion. If the content of that path can’t be auto-generated, you should back it up somewhere else and copy back after committing the deletion.
  2. Notify your collaborators to backup their copies before committing the deletion, because updating with that commit will delete their copies too.
  3. Example of auto-generated paths: build artifacts and intermediates, auto-generated code.
  4. Example of non-auto-generated paths: credentials files, local configuration files.
An empty directory will NOT be ignored if there is a negation rule for one of its descendants.When a directory has a negation rule for one of its descendants, Diversion keeps that directory tracked, even if the descendant file doesn’t exist yet.
Build/*
!Build/app.dll
Because !Build/app.dll re-includes a possible future file, the Build/ directory itself is tracked (and will show up empty until app.dll appears). If you really want to ignore Build/ altogether, remove the negation line (!Build/app.dll).