diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2017-11-02 08:11:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-02 08:11:04 +0100 |
commit | 4dd14b60b112a867a2217087b7827687102b11fe (patch) | |
tree | c40ac859d7ec6c1fbdb6cd3f0ba7d5cefeeb1e72 | |
parent | 66328d76a10ea53e4dfe9a9d609b44f30f734c9a (diff) | |
parent | 4ee7e1a72aa2b9283223a8270a7aa9cb2cdb5ced (diff) | |
download | gitpython-4dd14b60b112a867a2217087b7827687102b11fe.tar.gz |
Merge pull request #685 from mikicz/pathlib-clone
Converting path in _clone to str before any other operation
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | git/repo/base.py | 4 | ||||
-rw-r--r-- | git/test/test_repo.py | 14 |
3 files changed, 19 insertions, 0 deletions
@@ -23,5 +23,6 @@ Contributors are: -Ken Odegard <ken.odegard _at_ gmail.com> -Alexis Horgix Chotard -Piotr Babij <piotr.babij _at_ gmail.com> +-Mikuláš Poul <mikulaspoul _at_ gmail.com> Portions derived from other open source works and are clearly marked. diff --git a/git/repo/base.py b/git/repo/base.py index 9ed3f714..6ee95aed 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -905,6 +905,10 @@ class Repo(object): odbt = kwargs.pop('odbt', odb_default_type) + # when pathlib.Path or other classbased path is passed + if not isinstance(path, str): + path = str(path) + ## A bug win cygwin's Git, when `--bare` or `--separate-git-dir` # it prepends the cwd or(?) the `url` into the `path, so:: # git clone --bare /cygwin/d/foo.git C:\\Work diff --git a/git/test/test_repo.py b/git/test/test_repo.py index 86fb2f51..2c3ad957 100644 --- a/git/test/test_repo.py +++ b/git/test/test_repo.py @@ -16,6 +16,11 @@ try: except ImportError: from unittest2 import skipIf, SkipTest +try: + import pathlib +except ImportError: + pathlib = None + from git import ( InvalidGitRepositoryError, Repo, @@ -210,6 +215,15 @@ class TestRepo(TestBase): assert_equal(environment, cloned.git.environment()) + @with_rw_directory + def test_clone_from_pathlib(self, rw_dir): + if pathlib is None: # pythons bellow 3.4 don't have pathlib + raise SkipTest("pathlib was introduced in 3.4") + + original_repo = Repo.init(osp.join(rw_dir, "repo")) + + Repo.clone_from(original_repo.git_dir, pathlib.Path(rw_dir) / "clone_pathlib") + def test_init(self): prev_cwd = os.getcwd() os.chdir(tempfile.gettempdir()) |