Initial implementation

Do not merge until:
- [x] add tests to confirm that cloning works by long ref (initial implementation)
- [ ] add tests to confirm that cloning works by branch name
- [ ] add tests to confirm that cloning works by short name
- [ ] add tests to confirm that cloning works by tag