Overlap

The Overlap Column in SmartGit is an optional column for the Graph View visualizing similarity between commits using symbols and tooltips to do so.

It is active for the feature branch when using Git-Flow or GitFlow Light, and displays the dependencies between the commits in the feature branch, as well as the dependencies of these commits to the commits in the develop branch which are ahead of the feature branch.

Usage

The Overlap Column provides a quick overview of the dependencies between commits, without having to examine all the commits in detail.

It can be thought of as an additional dimension in the Graph View that visualizes dependencies between commits which go beyond the strict dependency imposed by the commit graph itself.

The Overlap Column can help answer questions such as:

  • When reordering commits in a feature branch, where are conflicts likely to occur?
  • Which commits should probably be squashed?
  • Which commits have unexpected dependencies and are therefore prime candidates for splitting up?
  • Which file is causing the most conflicts when finishing the branch?
  • Is the branch ready for review, or are there still commits reverting earlier changes?
  • Does the branch consist of separate changes that could be handled as separate features instead?

Types of Overlap

Icon Type Description
Identity Unfixed Identity This is the selected commit, and the selection is not fixed to this commit, so it is free to move.
Identity Fixed Identity Fixed This is the selected commit, and the selection is fixed to this commit until it is de-selected or the branch is modified.
Pending Pending Overlap calculation is pending.
None None This commit and the selected commit have no modified files in common.
Slight Slight This commit modifies files in the selected commit, but compared to the total number of files modified, there is only a small overlap.
Heavy Heavy / Superset This commit modifies files in the selected commit, and compared to the total number of files modified, there is a lot of overlap. Superset is a special form of Heavy where the files modified in this commit are a superset of the files modified in the selected commit.
Equal Set Equal Set This commit and the selected commit modify exactly the same files. A separate icon for Equal Set is only available if log.graph.overlap.useEqualSetIcon is set to true. Otherwise, the Heavy icon is used instead.
Subset Subset The files modified in this commit are a subset of the files modified in the selected commit. A separate icon for Subset is only available if log.graph.overlap.useSubsetIcon is set to true. Otherwise, the Heavy icon is used instead.
Shared Shared The commits have at least one modification in the same place. Effectively this means that the commits usually can’t simply be re-ordered in the feature branch.
Conflict Conflict There will likely be a conflict with this commit when trying to rebase the feature branch onto the current develop, because they modify the same file at the same place.
Skipped Skipped Overlap calculation was skipped.
Error Error There was an error determining the overlap status. See the tooltip for details.

Configuration

The Overlap Column can be enabled and disabled as described in Graph View. Additionally, there are a few Low-Level Properties to customize it:

  • log.graph.overlap.enabled - set to false to disable the overlap feature completely
  • commitnet.overlap.baseCommits - the number of base commits to calculate overlap information. It defaults to 100, but it will never exceed log.graph.overlap.maxCommits.
  • log.graph.overlap.cacheSize - sets the number of cached branches. Set to 1 to effectively disable the cache.
  • log.graph.overlap.intersectionThreshold - adjusts the threshold at which an overlap is classified as Heavy versus Slight.
  • log.graph.overlap.maxCommits - the maximum number of commits for which the overlap is calculated.
  • log.graph.overlap.maxDiffSize - the maximum size of commit diffs for overlap tooltips in bytes. It defaults to 16777216 bytes and can be increased up to 1073741824 bytes.
  • log.graph.overlap.maxTooltipFilenames - the maximum number of filenames displayed in tooltips.
  • log.graph.overlap.useEqualSetIcon - set to true to display a separate icon for equal set overlap.
  • log.graph.overlap.useSubsetIcon - set to true to display a separate icon for subset overlap.