Here are three fixes for some fairly obscure corner cases. I haven't actually seen these in the wild. I came up with the final one while discussing a hypothetical with somebody, then ran across the middle one while trying to write a test for the third, which made me scratch my head enough to yield the first one. Classic yak-shaving. One other thing that surprised me while writing blame tests is that "--root" is not the default for git-blame (though it has been for many years in git-log). I'm not sure if it would be a good idea to change it, or if blame is too plumbing-ish to allow that. [1/3]: blame: fix alignment with --abbrev=40 [2/3]: blame: handle --no-abbrev [3/3]: blame: output porcelain "previous" header for each file builtin/blame.c | 27 ++++++---- t/t8002-blame.sh | 32 ++++++++++++ t/t8011-blame-split-file.sh | 117 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 166 insertions(+), 10 deletions(-) create mode 100755 t/t8011-blame-split-file.sh -Peff