# git hyper-blame master ignore list.
#
# This file contains a list of git hashes of revisions to be ignored by git
# hyper-blame. These revisions are considered "unimportant" in that they are
# unlikely to be what you are interested in when blaming.
#
# Instructions:
# - Only large (generally automated) reformatting or renaming commits should be
#   added to this list. Do not put things here just because you feel they are
#   trivial or unimportant. If in doubt, do not put it on this list.
# - Precede each revision with a comment containing the first line of its log.
#   For bulk work over many commits, place all commits in a block with a single
#   comment at the top describing the work done in those commits.
# - Only put full 40-character hashes on this list (not short hashes or any
#   other revision reference).
# - Append to the bottom of the file (revisions should be in chronological order
#   from oldest to newest).
# - Because you must use a hash, you need to append to this list in a follow-up
#   commit to the actual reformatting commit that you are trying to ignore.

# Format all Java files with google-java-format
292fa154c18b5a203c1aa211dce4efd54e6e8e0a
111168482164db0cbe6a31630908ab607abc9989
42ace3c4f41363b41486fe6cf8a3519f296ba4f4
