.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
In the active panel, open a folder, e.g. your project folder.
Select the files and folders to skip (e.g.
node_modules,build). You can also leave nothing selected.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
| Operation | How |
|---|---|
| Copy F5 | the Copy dialog has a Use .ffignore rules checkbox when the source or destination folder has rules; its initial state comes from .ffconfig.txt |
| Move F6 | the 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
| Pattern | What it skips |
|---|---|
node_modules/ | every item named node_modules at any depth, with all its contents |
*.log | .log files in every folder |
build | a file or folder named build at any depth |
/dist/ | only the item dist directly inside the folder with the rules |
docs/drafts | a 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.log | exception: don't skip important.log, even though it matches an earlier pattern |
# comment | a 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 (
*.JPGdoesn't matchphoto.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.