in the edge case where a previous build's commit no longer exists in the repository (as when, for example, the repository is replaced), the comand
git whatchanged --no-abbrev -M --pretty=raw <nonexistent hash>..<current TARGET>
as executed by the git plugin will return the entire history of the repository, up to TARGET. This can use a lot of memory, and was causing a heapsize error for my slaves.
The plugin should probably check for the existence of the previous commit, and handle it's nonexistence more gracefully (perhaps force a wipe of the workspace? or fail with an error message suggesting the user wipe the workspace?)