当我从命令行执行git clone
时,它会自动创建一个具有该存储库名称的新目录,并将代码放在该目录中。
但是当我做的时候
from git import Repo
Repo.clone_from('https://github.com/jessfraz/dockerfiles.git', '/home/dev')
我明白了
GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git clone -v https://github.com/jessfraz/dockerfiles.git /home/dev
stderr: 'fatal: destination path '/home/dev' already exists and is not an empty directory.
如何获取存储库名称并构建路径/home/dev/<repo_name>
?
答案 0 :(得分:1)
我刚刚查看了代码,我认为您需要提供工作副本的完整路径(即/home/dev/dockerfiles
)。
如果您不想要,则可能需要创建自己的Repo
类,该类继承自原始Repo
类。然后,您可能希望覆盖clone_from()
类方法。这样的事情(没有经过测试,只是快速草案):
from git import Repo
class YourRepo(Repo):
@classmethod
def clone_from(cls, url, to_path=None, **kwargs):
if to_path is None:
to_path = url.split('/')[-1]
if to_path.endswith('.git'):
to_path = to_path[0:-4]
return super().clone_from(url=url, to_path=to_path, **kwargs)