From 717bfe9f7aa9c64e585e1202da03b1d72dededb8 Mon Sep 17 00:00:00 2001 From: Igor Lakhtenkov Date: Tue, 27 Jul 2021 11:41:16 +0300 Subject: [PATCH] Added support of spaces for clone multi_options --- git/repo/base.py | 3 ++- test/test_repo.py | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/git/repo/base.py b/git/repo/base.py index a57172c6c..f8a1689a1 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -6,6 +6,7 @@ import logging import os import re +import shlex import warnings from gitdb.db.loose import LooseObjectDB @@ -1043,7 +1044,7 @@ def _clone(cls, git: 'Git', url: PathLike, path: PathLike, odb_default_type: Typ kwargs['separate_git_dir'] = Git.polish_url(sep_dir) multi = None if multi_options: - multi = ' '.join(multi_options).split(' ') + multi = shlex.split(' '.join(multi_options)) proc = git.clone(multi, Git.polish_url(str(url)), clone_path, with_extended_output=True, as_process=True, v=True, universal_newlines=True, **add_progress(kwargs, git, progress)) if progress: diff --git a/test/test_repo.py b/test/test_repo.py index 8aced94d4..6d6176090 100644 --- a/test/test_repo.py +++ b/test/test_repo.py @@ -218,11 +218,13 @@ def test_clone_from_pathlib_withConfig(self, rw_dir): cloned = Repo.clone_from(original_repo.git_dir, pathlib.Path(rw_dir) / "clone_pathlib_withConfig", multi_options=["--recurse-submodules=repo", "--config core.filemode=false", - "--config submodule.repo.update=checkout"]) + "--config submodule.repo.update=checkout", + "--config filter.lfs.clean='git-lfs clean -- %f'"]) self.assertEqual(cloned.config_reader().get_value('submodule', 'active'), 'repo') self.assertEqual(cloned.config_reader().get_value('core', 'filemode'), False) self.assertEqual(cloned.config_reader().get_value('submodule "repo"', 'update'), 'checkout') + self.assertEqual(cloned.config_reader().get_value('filter "lfs"', 'clean'), 'git-lfs clean -- %f') def test_clone_from_with_path_contains_unicode(self): with tempfile.TemporaryDirectory() as tmpdir: