public function needsMerge()
{
if (!$this->isTracking()) {
throw new GitException('Error: HEAD does not have a remote tracking branch. Cannot check if it is behind.');
}
$this->clearOutput();
$merge_base = (string) $this->run(array('merge-base @ @{u}'));
$local_sha = (string) $this->run(array('rev-parse @'));
$remote_sha = (string) $this->run(array('rev-parse @{u}'));
return $merge_base !== $local_sha && $merge_base !== $remote_sha;
}