summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git/repo/base.py3
-rw-r--r--test/test_repo.py4
2 files changed, 5 insertions, 2 deletions
diff --git a/git/repo/base.py b/git/repo/base.py
index a57172c6..f8a1689a 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 @@ class Repo(object):
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 8aced94d..6d617609 100644
--- a/test/test_repo.py
+++ b/test/test_repo.py
@@ -218,11 +218,13 @@ class TestRepo(TestBase):
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: