I'm wondering how far this could go. Is there anything else that can get :skull:ed if anything other than completely basic options gets moved into manually building a repo and remote? It seems like it'd be left like this:

```c
typedef struct git_clone_options {
	unsigned int version;

	git_checkout_opts checkout_opts;

	git_remote_callbacks *remote_callbacks;
	const char* checkout_branch;
} git_clone_options;
```

Is that what you want, @carlosmn? **IS THAT WHAT YOU WANT?!?!**