I often use version control (VC) for text documents—especially LaTeX. Modern VC software is good for code, and even text when working alone, but collaboratively editing text with VC is a nightmare. The biggest challenge for text VC seems to be structure/formatting.
Code is well-structured within and between lines: text less so.
Words/sentences can be re-arranged within
sentences/paragraphs, and lines are meaningless. With VC, line wrapping
propagates small changes and frustrates reviewing and merging.
Word processors track revisions, but such tools are restrictive and won't work for markup languages. Cloud tools for collaboration such as Docs exist, including
some for LaTeX, but requiring connectivity while editing is a non-starter for me. I would even be happy with a custom LaTeX solution; the features I desire for text VC are similar to those for code:
- Non-proprietary, application-agnostic, platform-independent FOSS
- Revision history: see what has changed.
- Revert: undo changes back to forever.
- Lock-free: work in parallel, which requires...
- Pain-free merge: help resolve conflicting commits.
- Distributed and offline editing: no active (server) connections
- External contributions: integrate changes made outside of VC
Most VC tracks changes either with changesets or snapshots. Changesets
seem worthless because of the structural problems of text. Snapshots seem viable, but I haven't seen turn-key solutions for plain text or LaTeX, and handling external contributions seems especially troublesome.