Fix hunk-shifting logic
Keep hunk expected positions when splitting
Port git's blame code