This seems to work great except for one thing. There are entries at the top of the .scrivx file that are generating constant merge conflicts. Specifically, they are tracking the last modified time and keeping track of what was last selected.
Does anyone know if there is a way to turn the modified time and last selection functions off? I doubt anyone does, but just in case you know of a setting somewhere, I thought I would ask.
Finally to the Scrivener software team. I love Scrivener. It’s fantastic. But it would be so awesome to move this type of user-specific status information outside of the .scrivx file into some other file that can be safely added to .gitignore.
The "modified’ information is an essential part of the project format, as it facilitates synchronization and conflict resolution with other instances of Scrivener. It is not possible to turn it off.
Use of Git and other version control protocols is not supported and is entirely at your own risk. The only supported way to modify a Scrivener project is with Scrivener itself.
Oh, I didn’t expect it to be supported. That’s okay.
Git has become the defacto standard for sharing and merging text-based project files. And it seems like it wouldn’t take much to support it which would open up a whole new world for sharing Scrivener work. All you would have to do is decouple the per-user state from the project files, the way almost nearly all coding tools do. Your actual document files are just source code, and Scrivener is an IDE of that source code.
The short version is that effective merging in all but the simplest cases requires a deeper understanding of the project format then is really plausible in a general purpose tool.