Sync to Scrivener

You’ve already included the well welcomed sync to folder and simplenote sync (thank you!)

I’d like to see this taken one step further with a sync to Scrivener option. Basically, if I have Scrivener running on the desktop and the laptop, I’d like them to find each other on bonjour and sync up the project between them, using snapshots to resolve conflicts.

That’d be a darn slick extension of the syncing functions already added to 2.0

In most cases, only one side of the project will have changed, but having it automagically sync with a button click could be a nice way for Scrivener to double check that there aren’t changes in the target project that would be lost by a one way sync.

It’d also be a very mac-like solution to the problem of writing on a laptop and a desktop for absent minded types like yours truly.


This would be very, very difficult to achieve (hence it hasn’t been done already :slight_smile: ). Two projects on different computers - even if they started as they same project but have been edited and changed since - are almost irreconcilable. Imagine two Draft folder with completely different structures - how could Scrivener merge them? (Imagine that in one, a document has become the parent of a document of which it was the child in the other, for instance.) Or, what if the same text has been duplicated several times in one project, and none of the duplications have the same internal ID as a matching text in the other project? If all had changed, Scrivener would have no way of knowing if any are supposed to be the same document or completely different.

Scrivener would essentially need to be as intelligent as the user to pull this off satisfactorily. It would need an advanced internal AI that could examine each document, and each element of the structure, and try to make judgements based on what it thinks the user would want.

Now, I have “complete consciousness and self-awareness, with a cheeky sense of humour” slated for version 4.0, but I’m afraid there’s no way 2.0 could cope with something like this. :slight_smile:

Hope that makes sense.

Thanks and all the best,

Gosh, I guess version control systems just can’t work. And here I’ve been using them for twenty years.

Yes, there are conflicts that can’t be resolved automatically. But most changes are simple, single project modifications that don’t conflict with changes in the other, and all that’s needed is to make each project look like the other. When both versions have changes to the same text, flag it and let the user sort it out.

The perfect is the enemy of the good.
– Voltaire

To be fair, though, version control systems typically need help with structural changes. They’re good at managing changes to the content of a set of files.

Well gosh back at you, I stand corrected - your having used them must obviously prove that version control systems are trivial to implement then. Presumably they have all been implemented by single programmers in a matter of days, too, and didn’t take years of effort from many programmers to perfect. I clearly have no excuse. :unamused:

I tell you what, you write the pseudo-code that would ensure everything syncs correctly - after all, “all that’s needed” is to make two projects look like one another (forget issues of defining what the “same text” actually means in terms of different projects) - and I’ll write up the actual code.* Deal? :slight_smile:

  • Not really.

“I hate quotations.”
– Emerson

now, let me think about that one for a moment… I’m pretty sure that Scrivener has me trumped at times! :open_mouth: :laughing: Not to mention that my dog definitely has me trumped!

But wait, Lion improves grand central and all of that can be done by the graphics cards, right?

What if the location of documents just became two different collections? If a user specified which of the machines held the master project. The master has the structure, location, and ID of all the documents. The slave machine became a collection. That way the contents could all sync by snapshot but the other stuff that requires intelligence can be synced by my dog visually comparing the collections?

In other news, I now actually have all I need though, having seen your unsupported comment made in the laptop thread about opening from dropbox. In everything I had read prior, I only saw instructions to the effect of “pull the file from the network drive and then open it or you’ll mess it up.” I didn’t like that system because I know that I’ll flub it up. It’s only a matter of time before I wrote the wrong file over the newest version and lost some good stuff.

That fear of eventually crossing files (as I had done before in similar situations) is what made me reluctant to use that solution.

But seeing that I can have one file on the network and I open that one file (less error prone for me) and combined with making an automatic backup on open/close, I’m happy. I assume I can do that from iDisk and that’s all I need.

Now, I wish it wouldn’t have taken me three weeks to figure out that this is possible. :slight_smile:. (see what I mean about the relative intelligence?)


It’s still fun to think about the one button sync, though.
(edited numerous times to remove typos and then to remove typos caused during edit and then to edit those edits.)

Actually I wouldn’t recommend following the same process with iDisk - that is much more risky than using Dropbox. Nearly all of the problems we’ve heard about have come from iDisk users, whereas there have been practically none with Dropbox (and the problems there have been have not usually led to any data-loss, just minor project opening problems that we’ve been able to resolve).

The trouble is, what happens if you go to open a project and it doesn’t have access to the master project, because there’s no internet connection or whatever? Would you then be locked out of your project? If not, Scrivener would still have to make the syncing decisions when you were back online. Any project-syncing solution would be leaving us open to a lot of support issues caused by syncs-gone-wrong (which sounds like a Channel 4 program).

Syncing two plain text documents is a very different kettle of fish to syncing many rich text documents held in a structure that can be manipulated in any iteration of the project…

All the best,

Sigh. I didn’t say that everything should sync correctly, nor that implementing merging of textual differences is trivial (although it’s a well understood problem). Again: what version control systems do is sync what they can, and leave the rest unchanged, possibly with notes to the user about where the unmanageable conflicts were. For example:

original: “The quick brown fox jumps over the lazy dog.”
revision 1: “The quick brown fox jumps over the sleeping dog.”
revision 2: “The sly brown fox jumps over the lazy dog.”
revision 3: “The quick brown fox jumps over the energetic dog.”

merging revisions 1 and 2 produces “The sly brown fox jumps over the sleeping dog.”

merging revisions 1 and 3 produces a conflict, since both make different changes to the same group of characters.

Gotcha on the iDisk. Thanks!

I wasn’t thinking that the slave project would be live connected during use, but that it would b a replicant of the slave collection in the master computer’s project. Then, on sync, content would sync just like the simplenote procedure and the rest of the information (outline, subdocs, etc) would one-way push between that collection in the master project and the slave.

That way the user would expect that structural changes made on the slave computer will not change the master project, but would appear as a collection and that collection is a mirror of the other computer.

Eh. Let’s just delegate this mess to the version control expert and I’ll use dropbox for now. :slight_smile:

Ioa had suggested I use a repository, but my experience with those in the past created a situation that a grad student in the comp sci department was able to parlay into a dissertation topic. Thus, I’m reluctant to go back to vaults and stuff. I think my problem has been that I know I need one file location to go to in order to open a project or else I’ll put new work in old files and old work in new. Dropbox will solve that for nonsensitive projects. For sensitive projects, I’ll have to sneakernet.

Ah, so now it seems that you agree with my original reply after all:


True merging version control is “very, very difficult”, even if it is a “well understood” problem. (I note the passive construction: do you “well understand” the problems? I know I don’t, as they are deep and numerous!) Besides, as you’ve already acknowledged, merging structure gets very problematic - we are not talking about a simple plain text merge here, which is something else altogether. (Your example also assumes that Scrivener will be able to recognise whether two texts are intended to be the same; I already mentioned a problem with that in my first reply.)

So the sighing should be my side really: I explained that this would be difficult (and thus not implemented), and some of the problems inherent in trying to implement something like this, and your unnecessarily sarcastic reply was, “Gosh, I guess version control systems just can’t work”, as though I was being wilfully ignorant about such systems rather than explaining the technical reasons I won’t be implementing full project syncing in Scrivener any time soon. Which I won’t be. Because it’s technically very problematic. :slight_smile:

Cjmiltko - The trouble is that as soon as you start down that route, the door gets opened. Users would then start asking for structural syncs and would consider the one-way non-structural sync broken. It would also be a very limited approach, as it would mean you couldn’t move documents around in the sub-project but would have to wait until you were back at the master project. This would render it pretty much useless - much better just to share the same project between two computers, via Dropbox, as you are planning to do.


Ok. I’ll come back from dream land. A nice diversion from organizing my notes this has been. :smiley:

Dream land may be possible in the future when we have a bigger team (and have achieved world domination). :slight_smile:


Remember me for all your secret base needs when the time comes. I deal with underground, submountain, and specialize in undocumented islands.

Unlike the other brokers, I can usually guarantee clear title and passport privileges, too.

Plus, I know a guy who can handle henchmen uniforms and black submarines and helicopters.

Henchmen! I want henchmen! (Other than David…)

I love how, if you haven’t read a single bit of this thread and click on the “last post” link, you get a fresh page with “Sync to Scrivener: Henchmen! I want henchmen!” as the content.

Syncable Henchmen. That way they always know what’s going on and are up-to-date with your latest directive.

One button sync over bonjour henchmen no less! But then we need to group them in packs less than 50 per airport extreme so that the airport network keeps them all connected.

No, I didn’t and don’t agree with your original reply. There is a vast difference between “is not trivial” and “is very, very difficult”. But since this discussion has turned from technical merit to word games, I’m not going to continue with it.