summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2017-11-02 08:11:04 +0100
committerGitHub <noreply@github.com>2017-11-02 08:11:04 +0100
commit4dd14b60b112a867a2217087b7827687102b11fe (patch)
treec40ac859d7ec6c1fbdb6cd3f0ba7d5cefeeb1e72
parent66328d76a10ea53e4dfe9a9d609b44f30f734c9a (diff)
parent4ee7e1a72aa2b9283223a8270a7aa9cb2cdb5ced (diff)
downloadgitpython-4dd14b60b112a867a2217087b7827687102b11fe.tar.gz
Merge pull request #685 from mikicz/pathlib-clone
Converting path in _clone to str before any other operation
-rw-r--r--AUTHORS1
-rw-r--r--git/repo/base.py4
-rw-r--r--git/test/test_repo.py14
3 files changed, 19 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index 98167ea7..f9540907 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -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())