Skip to content

Commit 3288a2d

Browse files
authored
Merge pull request gitpython-developers#685 from mikicz/pathlib-clone
Converting path in _clone to str before any other operation
2 parents cfaab3a + 92ca680 commit 3288a2d

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

AUTHORS

+1
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ Contributors are:
2323
-Ken Odegard <ken.odegard _at_ gmail.com>
2424
-Alexis Horgix Chotard
2525
-Piotr Babij <piotr.babij _at_ gmail.com>
26+
-Mikuláš Poul <mikulaspoul _at_ gmail.com>
2627

2728
Portions derived from other open source works and are clearly marked.

git/repo/base.py

+4
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,10 @@ def _clone(cls, git, url, path, odb_default_type, progress, **kwargs):
905905

906906
odbt = kwargs.pop('odbt', odb_default_type)
907907

908+
# when pathlib.Path or other classbased path is passed
909+
if not isinstance(path, str):
910+
path = str(path)
911+
908912
## A bug win cygwin's Git, when `--bare` or `--separate-git-dir`
909913
# it prepends the cwd or(?) the `url` into the `path, so::
910914
# git clone --bare /cygwin/d/foo.git C:\\Work

git/test/test_repo.py

+14
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
except ImportError:
1717
from unittest2 import skipIf, SkipTest
1818

19+
try:
20+
import pathlib
21+
except ImportError:
22+
pathlib = None
23+
1924
from git import (
2025
InvalidGitRepositoryError,
2126
Repo,
@@ -210,6 +215,15 @@ def test_clone_from_keeps_env(self, rw_dir):
210215

211216
assert_equal(environment, cloned.git.environment())
212217

218+
@with_rw_directory
219+
def test_clone_from_pathlib(self, rw_dir):
220+
if pathlib is None: # pythons bellow 3.4 don't have pathlib
221+
raise SkipTest("pathlib was introduced in 3.4")
222+
223+
original_repo = Repo.init(osp.join(rw_dir, "repo"))
224+
225+
Repo.clone_from(original_repo.git_dir, pathlib.Path(rw_dir) / "clone_pathlib")
226+
213227
def test_init(self):
214228
prev_cwd = os.getcwd()
215229
os.chdir(tempfile.gettempdir())

0 commit comments

Comments
 (0)