If you're just trying to identify where the problem was introduced, and don't mind working from a cloned repository, you can use git's "filter-branch" to rewrite a clone of the repo to be as though the Changelog file never existed.
git clone grub-upstream grub-no-changelog
cd grub-no-changelog
git filter-branch -d /dev/shm/git --index-filter "git rm -qrf --cached --ignore-unmatch ChangeLog" --prune-empty HEAD
Hrmmm.. that failed thusly:
Rewrite 21b9992685e4fa58f818610b6b13c22cb2f85ec7 (2966/8756)fatal: empty ident name (for <>) not allowed
could not write rewritten commit
I don't have time to hunt it down (and it is likely not of interest to you, but rather to the upstream maintainers), but further clobbering history we can just trample the author names. Starting over:
git clone grub-upstream grub-no-changelog
cd grub-no-changelog
git filter-branch -d /dev/shm/git --env-filter '
export GIT_AUTHOR_NAME="User Name"
export GIT_COMMITTER_NAME="User Name"
' HEAD
git filter-branch -f -d /dev/shm/git --index-filter "git rm -qrf --cached --ignore-unmatch ChangeLog" --prune-empty HEAD
You now have a repo with no ChangeLog file, so bisecting should be easier.
Here's a more in-depth explanation of how this kind of thing really works:
-Jon