Git Blame Tool DeepGit

A short tour on the core functionality

UI Overview

Overview/Summary:

  1. Use Open to select the file you want to investigate. DeepGit will show its content in the Blame view.
  2. For the selected line and its vicinity DeepGit will detect possible Origin Candidates.
  3. The selected Origin Candidate's code will be displayed in the Origin view.
  4. By clicking Blame (go deeper) you will repeat this procedure for the selected origin candidate.

A detailed example

We will start off by opening the file we want to investigate (File|Open). For our example, this is _Frame​Calc.​lua.

Open File

DeepGit will generate a blame for the selected file. Once finished, it will analyze the selected line and its vicinity for its origin. In our case, the lines have been introduced in commit 1efcc661.

Blame

Detected candidate will be displayed in the Origin Candidates tree. For our example, there is the unique origin 1efcc661 where the lines have last been modified. After this commit No Change occurred for the inspected lines.

Blame

The selected Origin Candidate will be displayed in the right-hand Origin view.

Blame

After confirming that DeepGit has detected the proper origin, we can now Go Deeper to investigate the origin of the origin.

Blame

DeepGit will now blame our origin commit 1efcc661 and analyze the origin of the selected lines again. This means repeating the same procedure as for our initial file.

Now things start getting interesting, as the selected lines have not been present before our currently blamed commit 1efcc661 in file _FrameCalc.lua, but they are actually originating from somewhere else.

Blame

The Origin Candidates view shows two possible origin candidates for the selected line, for which the first one is quite promising and pre-selected: it matches the 12 highlighted lines from the Blame view with 12 lines in a different file CatRotationHelper.lua.

Blame

Again, the selected Origin Candidate is displayed in the Origin view: it shows the state of CatRotationHelper.lua before our currently blamed commit 1efcc661.

The blue lines have been removed from file CatRotationHelper.lua in our currently blamed commit 1efcc661. The 12 yellow lines are part of the removed lines and have been matched with the 12 yellow lines from the Blame view which have been added to _FrameCalc.lua. In this example, this is indeed the real origin for our inspected lines, and DeepGit was able to find it despite code being moved from a different file.

Blame

Note that the origin which DeepGit has found is not exactly equal to the left counterpart, hence the 74.9% similarity in the Origin Candidates view. Also note that despite selecting just a single line, DeepGit has estimated a block of lines as an optimal match. DeepGit is applying fuzzy matching here which is its ultimate strength.