Blame calculations

Blames are the annotations available when viewing source files or diffs (in both Fisheye and Crucible) that allow you to determine who last modified a line of code and in which revision:


Blame calculation

Fisheye and Crucible calculate blames from the internal repository cache during indexing time. On rare occasions that may not be possible. In such cases Fisheye and Crucible have a mechanism to retrieve blame data directly from the repository, either during indexing time, or when requested by browsing source files and diffs. However, as contacting the repository can be an expensive operation and may noticeably affect indexing time and/or responsiveness, this mechanism is off by default for both cases since 3.10. In order to minimize the cost of retrieving blame data from the repository since version 4.6 Fisheye offers an in-memory cache. 

Here are the system properties controlling blame calculations; the default values should be appropriate for most cases:

System property Description Available since Default value
fisheye.blame.calc.enable

Controls whether blames are calculated during indexing.
This property is enabled by default. Disabling it means blames are not calculated during indexing and will be missing (or could optionally be retrieved at request time).

Note that blame calculation during indexing is disabled if the Store Diff Info setting is disabled. See Store diff info.


true
fisheye.blame.scm.fallback.enable

Controls whether blame data is retrieved from the SCM during indexing (when blame couldn't be based on ancestors).
This property is disabled by default to avoid performance overhead. This means some indexes may lack blames. In such cases, the blames can either be fetched from SCM at request time (if

fisheye.enable.request.blame.calculation

=true) or they will be missing from the source file and diff views.
Enabling this property means SCM will be contacted (possibly multiple times) during indexing. This increases the indexing time, but ensures all blames are readily available at request time.

3.10.0 false
fisheye.enable.request.blame.calculation

Controls whether users can request blame data from the SCM when viewing the file or diff (when blame couldn't be calculated or retrieved during indexing).
This property is disabled by default. Enabling it means for all missing blames Fisheye and Crucible will retrieve blames from the repository at request time.

3.9.2 true
fisheye.blame.scm.fallback.cache.timeout.in.seconds

Blame scm fallback might be slow, so Fisheye offers caching blame entries. This is an in-memory cache.
The primary source for blame data is blame calculation based on ancestors and stored in Fisheye database. In case the calculation has failed or is in progress, Fisheye fallbacks to scm and stores entries in this cache.
The calculation results always take precedence over cache entries.

4.6 7 days
fisheye.blame.scm.fallback.cache.size

Number of file revisions for which blame is stored. Set to 0 to disable caching.

4.6 1000


Missing blame

When blame data is not available, the Author and Revision columns display "n/a" like this:


Blames may be not available:

  • When indexing of a particular revision has not yet completed. This is a temporary state and blames should appear when indexing has finished.
  • When the blame calculation failed during indexing and the fisheye.enable.request.blame.calculation is set to false (the default value).
  • If the repository configuration property Store Diff Info setting is disabled. See Store diff info.
  • In patch files uploaded to the review. See Creating patch files for pre-commit reviews
Last modified on Jul 31, 2018

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.