I have DevonThink Pro Office running on two machines, my desktop at home (which is also the home server) and my work laptop. I have multiple databases on each of these machines. Once upon a time, these databases were perfectly in sync. Over the last couple of years, I have allowed the databases to diverge. Consequently, the content on each machine is perhaps 90% identical. That said, each machine’s databases contain some documents that are lacking on the other. Further, each machine’s databases have had a few deletions that were never made on the other machine.
When I tried the sync beta, I expected to wind up with the union of the contents of the databases, with no duplicate files or groups. Thus, I expected to see files or groups that were deleted only on one machine re-appear in the synched databases. I tested, of course, on copies of my original databases, just in case.
What I got was rather different.
- Some groups synched up correctly. Most of these were groups whose contents were identical on both machines. A few were groups containing some files that were identical on both machines along with some files that were unique on one or the other.
- Most groups were duplicated. That is, I wound up with a database that contained two groups named “Economics & Policy” (for example), each group holding the files from one machine only. Note that most files within these groups were true bit-wise duplicates of each other – the Unix cmp utility found them to be identical.
- Some of the duplicate files were detected by DT as duplicates, and were appropriately indicated as such in the UI.
- DT failed to detect most of the duplicate files as duplicates.
Was my expectation reasonable? Am I seeing syncing failures, or is this expected behavior? Is the sync solution intended to cope with synching up partially diverged databases, or does it only handle propagating changes between databases that were identical on first sync?
Other related questions:
- What should happen when I have moved (or replicated) a file to different groups on different machines (without editing the file)? Imagine a .rtf file originally in SomeGroup on both machines. Move it to OtherGroup on machine A, and to YetAnotherGroup on machine B. Now sync the machines. What is the expected result? Does the answer change if the move happened before syncing for the first time vs. after syncing has started?
- What happens when I change the group hierarchy? For this case, imagine that I shuffle groups around without editing any files. Assuming that syncing is already in place, I would expect changes on one machine to be reflected on the other after a sync operation on each machine, right? But what should I expect when the changes to the hierarchy were made before the first sync?
- What should happen if I edit a file on Machine A, and then sync both machines? Assuming that the machines were in sync before the edit, I’d expect to see the edit propagate to the other machine. But what should happen if the edit occurred before the first sync ever? Should this look like two different files? Should it look like a conflict? What do you do with conflicts, anyway?
Speaking as a geeky software type myself (Ph.D. in Software Engineering), I’d love to see the document that lays out the various cases and the expected result of each. Given that the sync plugin has to be built to handle all possible cases (or, at least, all interesting cases) and that you need unit tests for each supported case, I’d expect that you already have some sort of document or chart explaining the expected behavior. Certainly I’d have to write it down to be sure I hadn’t missed an important case (more likely, many important cases). YMMV, of course.
I also had trouble with doing a round-trip sync. See the response I posted today to someone else’s topic for more details.
System information: Mac Pro early 2008 and Macbook Pro mid 2010, both running 10.8.2 with all updates. Synching over wired LAN to a sync store hosted on a disk attached to the Mac Pro that is shared via AFP. Results described are identical regardless of which machine creates the sync store.