In a typical git-diff patch (see below), there are a few major parts.
- Line 1 provides metadata about the modified file. It gives the file path to the file, rooted at the git repository.
- Line 2 provides metadata about the git index and the file object discretionary access control list.
- Line 3 and 4 provides metadata about which file path is old and which is new.
- Line 5, 14, and 24 are metadata that tells which part of the file is modified. Let's take an example to explain this - "@@ -33,8 +33,7 @@ def sanitize_diff(git_diff):". "-33,8" tells that there is a diff hunk with 8 lines starts at line 33 of the old version of the file. "+33,7" tells that there is a diff hunk with 7 lines starts at line 33 of the new version of the file. As a result, the new version of the file gets one line fewer than the old version.
- The rest of the patch is the content in the modified file. Those lines are either prefixed by ' ', '-', or '+'. ' ' means no modification, '-' means removed line, and '+' means added line. Note, there is no line replacement since it is represented by '-' lines followed by '+' lines (see line 28-31).