If I try and clone into the directory after I call ```git_submodule_add_setup``` then it barfs because the directory already exists.  deleting it doesn't seem sensible.  I will check, but if ```use_git_link``` is set to ```true```, then that will determine the behaviour of ```git_submodule_add_setup```.

```git_submodule_add_setup``` does all the initial setup of the directory and git structure, but doesn't fetch or checkout.  I think the ```git_submodule_add_finalize``` takes the revision of the submodule and does whatever it needs to do with that in the main git repo to set it as the version.

I'll work on getting the fetch and checkout working, and commit (probably tomorrow now).  Can I just confirm that the remote head can be retrieved by examining the contents of the ```.git/refs/remotes/origin/HEAD``` in the submodule ```.git``` directory?  Is there some programatic way I can get that in libgit2sharp??