def fetch(url, rev, path):
repo = Repo.clone_from(url, path)
if repo.bare:
raise RuntimeError('Empty repo ' + url)
git = repo.git
git.checkout(rev)
repo.create_head(rev)
return repo.head.object.hexsha