for native git it's not a hard prereq that the index is clean. The man page says 
"git pull and git merge will stop without doing anything when local uncommitted changes overlap with files that git pull/git merge may need to update"
I would like to follow the same semantics. But this check would be in the merge strategies. They would fail when trying to overwrite uncommited data.