Improve performance of looking up some SCMTool flags.

Review Request #11131 — Created Aug. 10, 2020 and submitted — Latest diff uploaded

Information

Review Board
release-4.0.x

Reviewers

We had some call sites that inspected flags on a repository's SCMTool,
in order to handle some logic or relay capabilities elsewhere. Some of
these call sites were fetching the tool directly, in some cases
instantiating it, and then accessing the flags. For instance, there were
many blocks of code accessing SCMTool.diffs_use_absolute_paths
inefficiently.

We already had wrappers in Repository for accessing some of these
flags, which was more efficient. These looked up by class when possible,
instantiating only if necessary. In other cases, the flags could be
looked up on the class, rather than needing an instance.

This change updates all references to use the wrappers in the
Repository. It also makes the Repository.diffs_use_absolute_paths
wrapper properly a cached_property, to avoid repeated lookups and
instantiations.

Unit tests pass.

Commits

Files