I apologize because this is a hit-and-run post; I have been insanely busy with work and personal life (illness) so I’m just going to drop my info here.
What I have been noticing is that, even though I only work with Scrivener now on the iPad (the reason will be clear in a moment), I still get various sync errors. If I take a moment to look at the errors, they are always cases where something that I was quite sure had been synced did not get synced. But the unsynced content is still there on my iPad, so I get asked if I’m sure that Dropbox is synced. I say yes (it’s true!), and I wind up with some files in some folders that have changes of one kind or another that did not sync.
So my problem is NOT that I can’t keep my computer and my iPad synced. My problem is that, just using the iPad, syncs are failing. I update all apps automatically when there isa new version, so I am by definition using the latest version on the iPad. I do check for updates on the computer even though I do not use the computer at this point for lack of trust in syncing.
From the ‘feels’ side, syncing feels like it’s not something I can rely on at all, and I suppose I could make all projects on the iPad local, but at some point I want to be able to feel I can rely on sync. I would like to know if there is a page somewhere that might the information I need to improve my own habits (could there be things I’m doing that are edge cases?), are there some known problems that I could find workarounds for, and anything else that might help me make sync more reliable.
Again, I’m sorry to just drop this (I’ve been waiting a while for a time to document this somewhat better, but it hasn’t happened). I am trying to write haiku for my own mental health, and I love Scrivener, so please forgive me and help me out with this if you can. I appreciate it.
Yes you do need to! If you leave the app while it is syncing, you interrupt the process and will end up with differences between the iPad and Dropbox versions of the project, and next time you open the app, it will find the differences and ask for you to decide which version is the correct. In your case, while not using the desktop version, the iPad version will always be the correct version.
Personally I find the automatic syncing a bit impractical. I feel more comfortable if I decide myself when to sync.
I opened one of my projects on the desktop before I had synced changes from the iPad, but I immediately closed it. (Both iPad and Mac were using latest versions of Scrivener, BTW). So from my point of view, I made no changes.
When I went to the iPad and synced, and then opened the project, I got the warning I see so often: am i sure that the project is synced in dropbox? (Not that I would have any way whatsoever to be sure, mind you.) So I said yes, and it said there were conflicts, then it said that the conflicts have been resolved - perhaps the latter is part of the change in the new iPad version?) I haven’t looked yet for detritus from the warnings, it’s a busy day here.
FWIW, it would be much better if opening did not touch a project at all. I would strongly prefer to only have a project get touched when I do something concrete that I as a human see as a change.
Also, can’t a project set a bit that says “opened and edited” even if I have not synced it? Should the Mac version need to know that the project has been changed elsewhere, and not yet synced? Let’s say I have a project on my iPad, iPhone, and Mac 1 but not iPad 2 and not Mac 2. Shouldn’t there be bits for each of those devices (including the unused, if they are visible to Scrivener), indicating whether the project is “checked out” (in programmer parlance)? If the software cannot reach deterministic tracking on its own (and that does appear to be the problem now), shouldn’t it take steps to get there?
This is the equivalent of an “open” flag - which would not let me open a project on another device until its been synced after changes from another device. (OK, with overrides for unforeseen situations).
If sync doesn’t work, it’s because you don’t let things sync before you close, and it’s because you don’t close before changing device.
Syncing has been described numerous times in here and there is a detailed explanation on the support page. You have a copy on each device AND on the dropbox server. Everything must be given time to copy to/from each device and the dropbox server. If you do, everything works just fine.
Sorry, but no back: I have done all the right things, and still get sync conflicts even without ever running my desktop software. I’m going over the links provided by support, and will report when I’m done - but so far, I’ve done everything right, and still got sync conflicts.
Just to be clear: I never, ever, exit Scrivener on the iPad before it’s done syncing. Not even once. And I haven’t (until testing today) opened anything on the desktop. And I still got sync conflicts.
I do agree that if I don’t sync on a device and open on another (even without making changes on the other), I will get a sync error (that’s what the test was earlier today). That’s just not what I’ve done; I have problems when following procedure.
If you are getting persistent sync conflicts in spite of following good synchronization hygiene, one possibility is that there is pre-existing corruption in the project. This is especially likely if the versions of the project on various devices appear different.
I would recommend manually reviewing the project for conflict files, then using the resulting “good” version to replace all other versions. This will be easier to do on the Mac because Finder makes it easier to look at the internal structure of the project.
If you still have the issue after working through the troubleshooting guides I posted earlier, let me know and I’ll post a link to a cleanup procedure.
The nature of iOS is that the project is always checked out, whenever the iOS app is open. The nature of Scrivener is that simply opening the project can change the project “state,” and therefore cause a sync-able change to the project file.
How is the project supposed to set an “open and edited” bit without syncing? That is, if there is no communication between the device and the Dropbox server (because if there were it would sync), how is the Dropbox server supposed to receive this information?
Bad on iOS, I guess. That’s quite an unpleasant obstacle. Simple fact: the app is always ‘open’ on my iPad in that I never close it. Or does ‘open’ in this case refer to ‘actively in front of the user’?
I also get that it’s hard if the nature of Scrivener that opening a project can change it’s state. As I say to my friends who must lower their telescopes to close the roof: fail safe would be better, but if you are diligent, you will have catastrophic failures only occasionally.
I don’t follow your second paragraph. A bit can be set without performing a complete sync - a mini sync, if you will, but not in any way connected to content syncs. My hope would be that the state could be stored without all these described constraints, the way you’d store something in a database (and of course one solution is to use a database for state bits). But the information does have to be in Dropbox so that any given device can recognize the ‘already open’ condition. (but it’s severely complicated for most use cases by the fact that Scrivener has a need to write to a project that the user has no desire to write to. I don’t know why this exists; I routinely wish to look at files I routinely do not want to modify. Maybe a way to open in read-only mode, so that it’s guaranteed that nothing will be changed?
I say all of this blissfully ignorant of how and why all these things exist; I assume that some important functionality is behind these choices. But they are difficult things for reliable sync. Sometimes the baby has to go to save the bathwater.
Sigh. Any corruption would of course have occurred at either Scrivener’s hand, or if I had some something bad unknowingly. (Finding out today that opening a file changes it is important, for example, and I will be a lot more careful now that I know I can’t open something to check its state without…changing its state. But this is not, to my knowledge, the cause of any of my problems because I’ve stopped using the desktop app until I gain confidence in syncing, or knowledge of how to sync)
Cleaning would be hard. We are talking about multiple versions of works of fiction; I honestly can’t tell which is the old and which is the new in all cases, even right after it happens because the old may be very old, and the new may be something I don’t recall much about because that’s how I am; I don’t really think about my writing; I write gut-wise, and need to have 100% trust in the software to capture that stuff. Plus, looking at the stuff that winds up in the conflicts folder, I really can’t make much sense of tens of thousands of words in large chapters. Hence why I stopped relying on sync, hence my problem now. Literally, I’ve just left those conflicts there with the idea that maybe someday I can make sense of them, but I don’t really expect to. The IP is gone for me when it gets that far…it’s a thing that I’ve dealt with my whole life, FWIW. So I have left the rubble where it is, and tried to find a way of working that avoids sync conflicts.
But I plan to write a very ambitious technical book with scrivener in the near future, so I’d like to get rock solid on sync before that starts.
But if there is some detection that can be done, or a built-in diff machine somewhere I don’t know about, that has possibilities for the large documents. But I came up empty manually trying to figure out anything about a sync problem. There are just no sign-posts to guide me.
All projects in question are created on the iPad. I do not currently create on the desktop at all. All writing, for now, is entirely on the iPad.
Nothing else on the Troubleshooting page raised a flag for me.
I do not tap to sync when I work on a document on the iPad. I have been trusting automatic syncing to work in both directions. (This is not currently meaningful since I am currently working only on iPad and still see sync conflicts)
I recently had to join a business Dropbox team, but this does not seem to have affected my use of Scrivener. The only sync error since having both business and personal Dropbox active was when I opened a document on the desktop when it had not yet been synced on the iPad earlier today. That was an expected sync failure. Scrivener seems to handle that case automatically in terms of cleaning it up.
This is where the weird happens:
Occasionally, Scrivener may alert you that it has detected sync conflicts. This will only ever happen if:
You have edited the project on more than one device or machine without syncing in-between. (For instance, say you edit on your Mac and then make edits on iOS but forgot to hit the iOS “sync” button).
The above is definitely not true for me. I can get sync conflicts even when only editing on the iPad. Something that occurs to me: given that Dropbox requires a finite period of time to sync files, maybe I have been to fast for it? Or maybe I have had a partial sync, walked out the door, and dropbox wasn’t finished and I’m editing/syncing again? If the dialog box that pops up during sync only disappears when sync to the dropbox servers is complete, however, then I am probably not running into anything like that. I am always very careful to let the sync continue until the dialog box reports it is done. Maybe there is a timing problem anyway???
It’s worth noting that I use the reverse orientation to what is covered in the documentation - I do my primary work on the iPad Pro, and I will occasionally do some work on the desktop. The reference copy is nearly always on the iPad.
If you jump to another app, Scrivener stops doing whatever it did, including copy to/from the Dropbox server. ‘Syncing’ is simply ‘copy’, that is Scrivener compares the files on the iPad with the files on the Dropbox server, and copies the newest version either way. So if you click the home button on the iPad, or swipe right, and start another app, Scrivener’s copying is interrupted.
Apps that are not in front of the user are actively removed from memory if the iPad thinks it needs the memory for something else. iOS doesn’t work like OS X.
Well, syncing seems to work for almost everyone else, so unless you have a corrupt app, really bad or unreliable internet connection or corrupt project, the only explanation for ‘sync provlems’ is that you are actually doing something that creates the problems.