why do you need this separate interface? wouldn't this also apply to SVN, Mercurial checked out sources?