< Starting HelpSetMaker in a development environment | STML parsing > |
HelpSetMaker stores each project below its own directory, the so-called project base. There are two locations which are hardcoded:
project base/hsm.xml: The main project file. This describes all global settings of the project and contains certain persistent information of the project (e.g. regarding the image library).
project base/hs/*.stml: The documents of the project. Each document has its own file. Content is stored exactly as it is shown in the editor.
HelpSetMaker creates output below certain subdirectories within the project's directory structure.
Before version 0.9.4, HelpSetMaker stored the main project configuration in a file named hsm.properties. That one used the standard properties mechanism to save all the information. While this was expression-wise equal to today's XML-based storing, it had a serious drawback: Properties are neither inheritantly hierarchic nor capable of storing lists of equal elements.
So, the document tree or the image library had to be saved by enumerating the nodes and saving them into the file one after the other. This was no problem until two circumstances met each other:
Document tree and image library do not guarantee that the elements are always stored in the same order. So, even though no changes have been made to the internal structures, the stored configuration files could always differ a bit.
Multiple editors should collaboratively work on one document using a version control system (e.g. CVS) as organizing instance.
As the properties files changed between the different workers in unrelated and random places, CVS management produces a huge number of conflicts on merges. It was near to impossible to sort these problems out manually, especially as there was no real problem at all. It was just that the same elements have been stored in different order.
To solve this problem, storing in hierachical XML structures has been introduced into HelpSetMaker.
< Starting HelpSetMaker in a development environment | STML parsing > |