Version Management and Revision Control

Proposal for an Integrated XML-Documentation Development Environment

An essential feature of an Integrated Documentation Environment is to manage different version of a document and keep track of changes. As most version management systems like CVS or Subversion work line-oriented, not element oriented, which would be appropriate for XML content, they will identify changes, even if only ignorable whitespace has been changed.

In oder to work with XML files the revision tracking system has to identify changes at a base of nodes. Are nodes added, deleted or changed? The subject of differencing and merging XML files has been discussed in many papers and there are also different example applications, both free and commercial.

If you are working with DocBook, an XML-enabled revision tracking system would allow you to automatically set revisionflag attributes to the elements of your document. It could create a revision history at the beginning of the document that automatically links to the changed sections and paragraphs.

This is an easy and very productive way to keep track of errata and corrections in a document.

Another feature of an tree-based version control system would be the ability to check out, update or log only parts of a larger document. If two authors are working on a large manual, each author would mark the chapter he or she is editing at the moment as locked. This would hinder the other author to add interfering changes.

The version control system should offer a web based view and a tight integration into the IDoE. The CVS integration in the Eclipse IDE is a good example, how felicitous version management integration could work.

For further reference to XML based version management I would recommend a list of XML differencing and merging tools I compiled some time ago.

A simple to use free tool for XML differencing is Norman Walsh's diffmk. Perhaps the best way to create a version management system for XML would be the use of a commercial framework like DeltaXML™ and X-Hive/Docato™.