In various situations, AccuRev searches some or all of your workspace tree to determine which files's status should include the
(modified) indicator.
The traditional method of evaluating whether an element in a workspace is modified is based upon comparing the timestamps and checksums of elements in the local
workspace tree against checksums and a time threshold for the
workspace stream, requiring communication with the AccuRev server:
•
In a Modified search, the checksum of each file element in the entire workspace tree must be compared to the checksum of the version in the workspace stream.
•
The Pending,
Non-member,
Overlap,
Underlap, and
Deep Overlap searches also involve a search for modified files throughout the workspace tree.
The Update command starts by performing a
Non-member search, and refuses to proceed if it finds any modified files that are not in the workspace's default group. If the
Timestamp Optimization checkbox (at the bottom on the File Browser tab) is checked, AccuRev skips the files in the workspace tree whose timestamps precede the workspace's
scan threshold. This optimization can provide a significant performance increase.
AccuRev's timestamp optimization feature takes advantage of the principle stated above. If the checkbox at the bottom of the File Browser tab is checked, AccuRev ignores files in the workspace with timestamps preceding the scan threshold for all File Browser operations, including
Update.

The advantage of using the scan threshold is simple: it enables AccuRev to ignore files and do its work more quickly. The later the scan threshold, the more files can be ignored, and the speedier the performance of the File Browser.
The traditional timestamp optimization principle is usually valid -- but, unfortunately, not always. In general, if the only way you change version-controlled files is with text editors and build tools, the principle will be valid: each new change gets timestamped with the current time. But there are tools that can introduce "a new change with an old timestamp" into a workspace:
•
If the environment variable ACCUREV_USE_MOD_TIME is set, the
Send to Workspace,
Populate,
Update, and the various
Revert commands preserve timestamps when copying versions from the repository into a workspace.
To work around these situations and continue using traditional TSO, clear the Timestamp Optimization checkbox before performing an
Update or any of the relevant searches. This can slow performance significantly, but it guarantees that no modified file will be overlooked because of a misleading timestamp.
If you know exactly which modified files have old timestamps, you don't need to turn off the timestamp optimization. Instead, just update the timestamps to the current time, using the CLI command
accurev touch.
Because of the issues listed in the previous section, AccuRev 5.4 introduces a new Timestamp Optimization (TSO) feature that is now optionally available as a server side setting. This new TSO makes use of cached server information that is stored on the client. This new approach to timestamp optimization ensures that all modified files in the workspace are correctly identified (even if they have an older time stamp and have been copied into the workspace from an external directory), while maintaining or increasing performance.
Note: Because this new Time Stamp Optimization feature requires a one-time, full scan of the workspace, the first
accurev stat or
accurev update CLI command, or the first GUI
Update or search command such as
Pending or
Modified, that your users perform on any existing workspace may take up to several minutes to complete. (This does not apply to newly created workspaces.) After this one-time scan has been completed on the workspace, these commands will behave with performance that is equivalent to or better than prior releases.
AccuRev CLI users access this new behavior through the stat command, or through commands such as
anchor -n, co -n, files, and
update (which make calls to the
stat command). AccuRev Java GUI users access the behavior through the
Update command and the File Browser
Search Pane options (which make calls to the
stat command).
When TSO is enabled, this cache allows AccuRev to make a quick determination of modified state based on locally cached file sizes and timestamps without the hashcode computation and without going to the server.
The advantage of the new TSO approach is that time stamps for each individual file are compared to the cache, rather than comparing them to a single workspace scan threshold, which is set to the time stamp of the oldest modified file (as described in The Scan Threshold of a Workspace on page 33). This not only provides more valid results (by catching all modified files, even those with older time stamps that have been copied into the workspace from an external directory), it can be more efficient in situations such as a workspace that has a large number of (backed) files that have later time stamps than a single modified file.
•
STAT_MODE=0 (or is not defined): Use traditional timestamp optimization.
•
STAT_MODE=2: Use the new, local timestamp optimization.
AccuRev CLI users can use or override the server STAT_MODE settings by using the following switches with the
stat command (or commands which call the
stat command (
anchor -n, co -n, files, and
update):
•
stat (no switch): use the default specified by STAT_MODE
•
stat -O: Do not use timestamp optimization (same as previous releases)
Note that if STAT_MODE=2, there is no way for an AccuRev CLI user to override this and specify the traditional TSO.
GUI users cannot override the server STAT_MODE setting, other than to not use any TSO, by turning off the
Timestamp Optimization checkbox. This is the same behavior as in previous releases.