def do_clone(self, service=None, repo_path=None):
service = service or self.get_service(lookup_repository=False)
repo_path = repo_path or os.path.join(self.path, self.target_repo or self.repo_name)
if os.path.exists(repo_path) and os.listdir(repo_path) != []:
raise FileExistsError('Cannot clone repository, '
'a folder named {} already exists and '
'is not an empty directory!'.format(repo_path))
try:
repository = Repo.init(repo_path)
service = RepositoryService.get_service(repository, self.target)
service.clone(self.namespace, self.repo_name, self.branch)
log.info('Successfully cloned `{}` into `{}`!'.format(
service.format_path(self.repo_slug),
repo_path)
)
return 0
except Exception as err:
if os.path.exists(repo_path):
shutil.rmtree(repo_path)
raise ResourceNotFoundError(err.args[2].decode('utf-8')) from err
评论列表
文章目录