Git Blame Tool DeepGit

A short tour on the core functionality

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

The (most likely) origin will be displayed in the Blame popup. For our example, the lines first Appeared here in commit 1efcc661. 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

Once again, the Blame popup shows the most likely origin candidate, but this time Investigate won't take us directly to this origin but instead switch to the Blame+Origin perspective instead.

Blame

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

Blame

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

The dark yellow areas denote the actual changes between the 40 lines block of the currently blamed commit and the 40 lines block of the detected origin commit. 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. 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.