The Log Cache is the local data storage for the Transactions. It is also used by other SmartSVN commands, for instance the Log command (Log) itself. It stores and supplies the raw log information as received from the server and can supply them for various commands later on. This can increase log performance significantly and also leads to reduced network traffic.
When Log information is requested for the first time for a certain repository, you can choose which parts of the repository should be indexed by the Log Cache. In general it is recommended to select Create cache for whole repository at to let SmartSVN index the whole repository. The reason is that logs of a certain 'module' can have links to other modules, because of the way Subversion's Copy mechanism works. Sometimes repositories can be very large and you are interested only in a few modules of the whole repository. In this case it may be more efficient to select Create cache only for module at and select the corresponding module. However, this can lead to incomplete logs due to the reasons stated above. For some repositories you might want to use create no Log Cache at all. In this case choose Skip cache and perform logs directly.
By default, SmartSVN also caches the mergeinfo of the corresponding repository as it is used when performing a Log command with Include Merged Revisions selected. For certain repositories which contain a lot of 'complex' mergeinfo, it can however be very time consuming to create the Log Cache. In this case it's better to have Include merge info deselected.
Tip |
If you had Include merge info selected and SmartSVN does not progress with building the Log Cache, stop SmartSVN and remove the corresponding Log Cache, as explained in Storage. After starting SmartSVN, you will be asked again whether to build a Log Cache. This time, deselect Include merge info. |
SmartSVN automatically keeps the Log Cache(s) up-to-date. All log-related commands always query the repository for the latest logs, before querying the Log Cache. In the same way, every manually or automatically triggered refresh of the Transactions will update the corresponding caches.
Log results (for instance used by the Log command) from the Log Cache are in general identical to results obtained when querying the server directly. However there can be differences for following situations:
In such cases, you should rebuild the Log Cache as described in Rebuild Log Cache.
In the Project Window use Tools|Rebuild Log Cache to completely rebuild a local Log Cache. Select the Cache to be rebuilt and for which Revisions to start the rebuild. In general it's recommended to rebuild caches completely by selecting All unless you know that only log information Starting with a certain revision had been changed. Select Include merge info to rebuild the cache with mergeinfo, for details refer to Log Cache.
The Log Cache information is stored in the subdirectory log-cache in SmartSVN's home directory. For every Log Cache, there is a separate subdirectory containing the server name and repositoy path. This is typically sufficient to quickly locate the cache for a specific repository. In case there are multiple subdirectories with the same name, only differing and the trailing number, you can have a look at the contained urls files. They show the exact location for which the Log Cache has been built.
If you should encounter problems when rebuilding the cache or you need to get rid of the cached information for a certain repository, you can find out corresponding subdirectory and remove it, resp. remove the whole log-cache if you want to get rid of all cached log information. You should never change these files while SmartSVN is running, otherwise the results will be unpredictable.