The HTX linker is equipped to detect when documents have changed and to decide when re-linking is necessary. However, it takes a pragmatic approach to this in order to keep linking time to a minimum. As a result, there are occasions on which it may report that no documents need to be re-linked when this is not, in fact, the case.

5.1 Accommodating Normal Document Changes

A documentation set may need to be re-linked whenever any file in any of its documents changes, or when any document is added or removed, or moved to a new location. The HTX linker detects changed documents by observing the modification dates of the document “.htx” directories, the associated index files, and both the modification date and contents of the “htx.log” date-stamp file in each document library.

This process is effective, except that it is sometimes possible to modify an HTML file within a document without changing the modification date on the “.htx” directory that contains it. This is particularly likely if the HTML file resides in a sub-directory within the document. If such modifications are carried out, a simple remedy is to use the UNIX touch command to update the document’s “.htx” directory and record the change before running the linker.

As an alternative, the hlink command may be invoked with the -d flag to specify a deep dependency test of all document files. This causes it to check the modification dates of all the HTML files in all the documents in order to detect changes. This is a thorough way of detecting changes, but may be rather too slow for regular use on large document collections.

You should also remember that re-linking can be rendered necessary not only by changes in document contents, but also by changes in document location. Thus, if documents or libraries are moved, it is always wise to re-run hlink.

There are several ways to force a re-link of a document or library.

To re-link a particular document, or set of documents, from scratch, their index files may simply be removed, using a command such as:

rm *.htx/htx.index

The linker will then re-generate these indices and consider the affected documents to have changed. They, and all other documents that refer to them, will then be re-linked as necessary. Alternatively, to re-link all documents from scratch in this way, the -a flag may be given on the hlink command line.

Removing the “htx.log” date-stamp file from a document library will also force the documents in that library to be re-linked but without unnecessarily re-generating any of its index files. This can be somewhat faster if the index files are known to be up to date.

It is often convenient to use the hlink command as part of software-maintenance procedures, such as in makefiles, since this allows your documentation set to be re-linked automatically whenever software is installed or de-installed. However, in a large software installation this can take some time. Rather than re-linking after each item of software is changed, it can sometimes be more efficient to wait until a sequence of changes has been completed. A grand re-link of the entire documentation set can then be performed.
To permit this, you can set the HTX_NOLINK environment variable (to any value). While this variable is set, the hlink command will cease to function normally. Instead. it will simply produce a message saying that hypertext linking has been suppressed. You can then perform your software updates without waiting for re-linking to occur. When you have finished, you can un-set the HTX_NOLINK environment variable and use hlink to bring the cross-references in the associated documentation up to date.