blob: 8bbe7f7068a33380807db3d424947a007b0a4a34 [file] [log] [blame]
mgiuca@chromium.org81937562016-02-03 08:00:53 +00001git-hyper-blame(1)
2==================
3
4NAME
5----
6git-hyper-blame -
7include::_git-hyper-blame_desc.helper.txt[]
8
9SYNOPSIS
10--------
11[verse]
12'git hyper-blame' [-i <rev> [-i <rev> ...]] [<rev>] [--] <file>
13
14DESCRIPTION
15-----------
16
17`git hyper-blame` is like `git blame` but it can ignore or "look through" a
18given set of commits, to find the real culprit.
19
20This is useful if you have a commit that makes sweeping changes that are
21unlikely to be what you are looking for in a blame, such as mass reformatting or
22renaming. By adding these commits to the hyper-blame ignore list, `git
23hyper-blame` will look past these commits to find the previous commit that
24touched a given line.
25
26Follows the normal `blame` syntax: annotates `<file>` with the revision that
27last modified each line. Optional `<rev>` specifies the revision of `<file>` to
28start from.
29
30OPTIONS
31-------
32
33-i <rev>::
34 A revision to ignore. Can be specified as many times as needed.
35
36EXAMPLE
37-------
38
39Let's run `git blame` on a file:
40
41demo:1[]
42
43Notice that almost the entire file has been blamed on a formatting change? You
44aren't interested in the uppercasing of the file. You want to know who
45wrote/modified those lines in the first place. Just tell `hyper-blame` to ignore
46that commit:
47
48demo:2[]
49
50`hyper-blame` places a `*` next to any line where it has skipped over an ignored
51commit, so you know that the line in question has been changed (by an ignored
52commit) since the given person wrote it.
53
mgiuca@chromium.org01d2cde2016-02-05 03:25:41 +000054CAVEATS
55-------
56
57When a line skips over an ignored commit, a guess is made as to which commit
58previously modified that line, but it is not always clear where the line came
59from. If the ignored commit makes lots of changes in close proximity, in
60particular adding/removing/reordering lines, then the wrong authors may be
61blamed for nearby edits.
62
63For this reason, `hyper-blame` works best when the ignored commits are be
64limited to minor changes such as formatting and renaming, not refactoring or
65other more invasive changes.
66
mgiuca@chromium.org81937562016-02-03 08:00:53 +000067BUGS
68----
69
mgiuca@chromium.org81937562016-02-03 08:00:53 +000070- There is currently no way to pass the ignore list as a file.
71- It should be possible for a git repository to configure an automatic list of
72 commits to ignore (like `.gitignore`), so that project owners can maintain a
73 list of "big change" commits that are ignored by hyper-blame by default.
74
75SEE ALSO
76--------
77linkgit:git-blame[1]
78
79include::_footer.txt[]
80
81// vim: ft=asciidoc: