.ffignore rules

.ffignore rules tell FlyingFiles which files and folders not to copy, not to move and not to show in search results. A typical example: uploading a project to a server without node_modules/, .git/ and *.log files.

The syntax is the same as in the .gitignore file you may know from Git.

Where the rules live

Rules belong to a specific folder and live in its .flyingfiles/ subfolder:

Project/
  .flyingfiles/
    .ffignore.txt     patterns, one per line
    .ffconfig.txt     setting: whether the rules are on by default
  src/
  node_modules/

.ffconfig.txt contains JSON, e.g. { "ffignore_default": true }. The value true means the rules are on by default.

Warning: When copying and moving, the app reads rules from the folder where the selected items are and, on the destination side, from the destination folder and from the copied folders if they already exist at the destination. When searching, it reads them from the folder you search in. Rules from folders higher up the tree are not inherited, and a selected folder's own rules don't apply when you copy it from its parent folder.

Creating rules

  1. In the active panel, open a folder, e.g. your project folder.

  2. Select the files and folders to skip (e.g. node_modules, build). You can also leave nothing selected.

  3. Choose Functions → Add .ffignore File.

The app creates .flyingfiles/.ffignore.txt (with .flyingfiles as the first rule, so the rules folder itself isn't copied) and .ffconfig.txt with the rules on by default. It adds the selected items as patterns: a folder as name/, a file as name. The window title shows the paths of both files, and the cursor lands on the .flyingfiles folder.

You can edit .ffignore.txt later with F4, like any text file. You can also add rules from the Search changes window.

Where they apply

OperationHow
Copy F5the Copy dialog has a Use .ffignore rules checkbox when the source or destination folder has rules; its initial state comes from .ffconfig.txt
Move F6the rules are applied automatically when .ffconfig.txt turns them on
Search...the Include .ffignore file checkbox
Search changes...the Include .ffignore file checkbox and buttons that add rules

Rules work in both directions:

  • the source folder's rules skip matching items when copying;

  • the destination folder's rules protect matching locations at the destination — an item that would land on a protected path is skipped.

If the rules filter out everything, the app says: “Nothing was copied. Check whether rules in .ffignore.txt blocked the transfer.”

Syntax

PatternWhat it skips
node_modules/every item named node_modules at any depth, with all its contents
*.log.log files in every folder
builda file or folder named build at any depth
/dist/only the item dist directly inside the folder with the rules
docs/draftsa path counted from the folder with the rules (a slash in the middle anchors the pattern)
cache/*the contents of the cache folder directly inside the folder with the rules, but not the folder itself
**/tmp/**the tmp folder at any depth, together with its contents
? / [abc]any single character / one of the listed characters
!important.logexception: don't skip important.log, even though it matches an earlier pattern
# commenta line with no effect
  • The last matching pattern wins.

  • Unlike in Git, a slash at the end of a pattern (build/) doesn't restrict it to folders — it also matches a file with that name.

  • Case matters on every system (*.JPG doesn't match photo.jpg).

  • Blank lines do nothing; trailing spaces are trimmed; \ turns off a character's special meaning (\#file).

Example

.flyingfiles/.ffignore.txt for a website project:

.flyingfiles
.git/
node_modules/
*.log
.DS_Store
/config/local.php

Enter the project folder, select everything (+) and press F5 with Use .ffignore rules checked: the project contents go to the server without the repository, dependencies, logs, Finder files and local configuration — and Search changes shows only the files you really need to upload.

FlyingFiles 1.0.0 · Features added after 1.0.0 are marked in the text.