GitPython:如何在不提供完整路径的情况下git克隆到目录中?

时间:2018-03-19 20:13:51

标签: gitpython

当我从命令行执行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>

1 个答案:

答案 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)