Snapshot / Compare - how does it work (technically)?

I want to bring various revisions of writing I did long before I got Scrivener, into Scrivener, then take snapshots of each stage of revision and compare them. Because the writing was never done in Scrivener, I need to know the technicalities of how “snapshot compares” function.

There are two possibilities of how Scrivener makes this happen. One will work for what I want to do, the other probably will not. I will describe each:

  1. The Compare doesn’t occur in any form until you actually click the Compare button. At that point and not before, Scrivener’s Compare begins to compare the two versions, marking anything it finds as new, deleted or changed, and then presenting those differences. This means that a later version that has been imported, completely overwriting a snapshotted earlier version, can still be effectively compared with its earlier version.


  1. As soon as you’ve taken a snapshot, Scrivener begins to compile a “changes history” in the background, recording all your subsequent edits, be they adds, deletes or changes. Then when a second snapshot is taken and the Compare button clicked, Scrivener invokes its “changes history” in order to present the comparison between the earlier and later versions. This means that if both versions were NOT done in Scrivener, but simply imported and then snapshotted, Scrivener’s “Compare” will at best present the entire earlier version as a single deletion, followed by the entire later version as a single addition, even though there will be much in common between the two.

[i][size=85]Scrivener is a very flexible, powerful and useful piece of software. There must be many writers who have imported partly-worked projects then carried on working on them in Scrivener. But there may not be many who have multiple edits of a project that were written pre-Scrivener, and wish to bring the whole history of the project into Scrivener not only to continue work on them, but also to snapshot and compare the earlier revisions. I am one of those, and I need to know if I can do this in Scrivener - is (1) above the correct assumption, or (2)? Or maybe even a third way I haven't thought of?[/size][/i]

Basically your point 1 is the closest to what Scrivener does. As far as I understand snapshot makes physical copy of the RTF file (look in your Scrivener project and you’ll see them nested in numbered folders). The snapshot panel simply keeps a list of these snapshot documents. When you hit compare it takes the current document, and the selected full previous version, removes all the RTF formatting and does a word-level compare so it should pick up differences irrespective of how it was imported.

Now of course Scrivener’s compare algorithm may not be the most advanced (you can buy software costing several hundred dollars for this kind of thing), and some wishlist requests have asked for Scrivener to open the diff in an external app. But overall I’ve never had any real trouble with the way Scrivener captured the differences.

That sounds excellent!

So just to recap -

~ I can import an early document and snapshot it
~ then I can import a later version completely overwriting the first and snapshot that

Then when I compare the two snapshots it will work exactly the same way as it would if both had been written in Scrivener?

Depends on what you mean by “import”, but the answer is ‘yes’ if you do it the right way.

Just to be clear: A snapshot you take is associated with a particular doc in Scriv. So, you do not want to “overwrite” that document, what you want is to successively overwrite that documents textual contents and snapshot between times. To do what you want, you have to keep modifying the contents of the very same doc in Scriv.

If you can just get your text from outside into a Scriv doc by copy-paste, this is maximally simple.

If you actually require Scriv’s file Import function, you would want to first import all n source files as separate docs into Scriv. Then create a new doc in scriv and use it as the target doc to, one at a time, copySource-pasteIntoTarget-snapshotTarget each of the other doc contents.

I hadn’t committed to the actual Import function. What I’d thought to do was:

  1. copy the Chapter 1 record from an original FileMaker database into a new Scrivener document, then snapshot it
  2. copy/paste from the (later) Chapter 1 AppleWorks document, completely overwrite the document contents, then snapshot it
  3. copy the record from a later FileMaker database, completely overwrite the document contents, then snapshot it
    I’d then have 3 levels of edit to compare, and could then edit further in Scrivener (if necessary…!) in the future.

Then I’d create another new document for the second chapter, and repeat the above process, and so on. A long slow process, but considering I wrote the first draft in 2000, that puts it in perspective. :smiley:

Comparison is done in real time, so you do not have to prepare for it in any way (short of having snapshots to compare with in the first place of course). It simply works by taking two sources, typically what is in the editor and what you have selected in the snapshot pane, and right then and there comparing the differences between the two, using the level of granularity selected for comparison in the dropdown arrow button alongside the Compare button.

As soon as you do anything to leave that view, the comparison is discarded, it only ever “exists” while you are looking at it—and can thus be better thought of as a way of viewing a snapshot.

As noted, Import as a feature creates a whole new item in the binder, unbound to any existing items and thus any of their snapshot lists. So to basically “import” the history of a file you would want to use copy and paste. Import would work fine for the initial phase of course.

Here are a few other tips:

  • You can compare snapshots themselves rather than simply comparing the selected snapshot with the current text. This way you can get a view of what has changed between the original FileMaker source and the later AppleWorks source, even if there is a newer FileMaker snapshot, or an even newer Scrivener edit in the main editor. To do so, simply Cmd-click to select multiple snapshots in the pane, then click Compare.

  • Comparison doesn’t have to be done in the inspector; it’s convenient, but sometimes making use of the split editor feature is a better interface for reviewing many changes. To do that, hold down Option and drag the snapshot to a split editor’s header bar (if you don’t hold down Option it just loads the snapshot in the editor normally). Note the Documents/Snapshots/Show Changes/ submenu contains keyboard shortcuts for jumping between changes—something you might find handy since the editor won’t have those next/prev buttons.

  • If you do want to preserve the comparison for whatever reason, you can do so. The text comparison view is comprised of formatting that you can copy and paste anywhere, such as the Notes panel for that document or even a new item in the binder entirely. This might be handy if you are working with a comparison extensively, and find having to recreate the comparison session over and over a bit awkward.
    You can combine the above trick with this one by selecting two snapshots in the list and Option-dragging them to a header bar.

Thanks Amber. I’d already tested from previous answers that what I want to do, I can do. But there’s some extra information in yours I will also find very useful.