Keeping related files in Scrivener

Is there any benefit or detriment to keeping related files in your Scrivener project, as opposed to an external folder?

I currently limit it to just a few image files needed to compile, and even those are all flat PNGs, some of which have source PSDs with lots of layers and stuff, which I keep outside of Scrivener. I also have some PDFs, Excel spreadsheets and fonts, all living happily outside of Scrivener.

On the one hand, while it’s easy enough to keep related files in a folder alongside my Scrivener file, I do wonder if it would be tidier to keep them all in Scrivener, or if there might be other benefits to doing so.

On the other hand, I wonder if importing too many large files and/or binary files into Scrivener would create unnecessary bloat, increase the risk of data corruption, or lead to other issues.

I also keep my project in a Git repository so I can retain working history and restore old work if needed. So on a more technical level, I wonder if a larger Scrivener file full of additional files, some in binary formats, would make my Git repository balloon in size or otherwise become unwieldy or unstable.

I would be inclined to say it is almost entirely a matter of personal choice. There are those that work with projects that are hundreds of gigabytes in size, some even larger than that. You have to work differently when a project is that large—backups become more of a thing you manage yourself with dedicated tools, for example, as waiting an hour or two every time you close the software would be ridiculous (never mind the terrabytes of fully redundant duplicates you’d end up with).

As for myself, I like having all of Scrivener’s built-in safety nets fully available on top of external backup procedures. Being able to fire off several full-project date stamped backups per day to a folder that automatically uploads to an off-site secure storage facility is peace of mind. So for me, that I means I tend to keep projects fairly trim and “text only”. I make use of the following features toward that end:

  • All images in the text areas are brought in as Insert ▸ Image Linked to File... or linked to a Binder image for cases where I won’t need bulk access to images (for the sake of batch processing, etc.).
  • Bulky files in the binder are brought in via File ▸ Import ▸ Research Files as Shortcuts|Aliases.... The project stays small, but I get all of the benefits of the resource being fully imported. In short, you do not need to sacrifice split-view accessibility and Scrivener’s organisation tools.

On the other hand, I wonder if importing too many large files and/or binary files into Scrivener would create unnecessary bloat, increase the risk of data corruption, or lead to other issues.

I’ve spoken almost entirely on the problem of bloat, and for a reason. Scrivener’s storage format is designed to scale to these sizes. As you know it uses native files and folder hierarchies, so it’s no more risky to have a bunch of PDFs in a project than it is to have photographs in your iPhoto library, or PDFs in any folder hierarchy anywhere in your user folder or on external disks for that matter. We may speak of risks, but they are the same risks you have with any spinning platter drive or thumbdrive that gets forgotten in a pocket and run through the wash.

I also keep my project in a Git repository so I can retain working history and restore old work if needed. So on a more technical level, I wonder if a larger Scrivener file full of additional files, some in binary formats, would make my Git repository balloon in size or otherwise become unwieldy or unstable.

I shouldn’t think so. Would that not be the same as any coding project that has binary dependencies, such as graphics, blackbox libraries and so forth?

Thanks for giving such a thorough answer! This is really helpful.

One benefit for inclusion in the project (vs. links to an external file) is if you’re going to be syncing your project to multiple machines, especially if they’re different platforms. I don’t import a ton of files into my projects (which at this point are all fiction) but when I do, I definitely import them, because I use two different Windows machines as well as an iPad (and in the past also had a Mac and may some day have a Mac again.) Trying to manage external file references and keep them relative paths (so they would work on Windows and MacOS) would be more hassle than I’m willing to cope with.

Now, if I was working on non-fiction projects – especially technical writing projects where I might have a pool of related resource files that get used across multiple projects – I would take the time to figure it out, as it would help keep file sizes down and make updating the resource files much easier to have them be in an external folder.

Your GIT repository size isn’t going to be severely impacted by Scrivener itself. But I’d imagine that your photoshop files, if included into the project and therefore into your GIT repository, could be an issue.

Depending on how you work in PS, such as creating, merging and deleting layers constantly, you might end up with a great deal of bloat from files that are being added and removed, and therefore not diff-able with any non-existent revision. I don’t know anything about the inner workings of PS files, or how well GIT can find small differences to commit to a revision, but I’d advise experimenting with the bare PS file in a separate GIT repository before folding it into your mainline Scrivener GIT rep.

Thanks for the responses!