@@ -309,7 +309,7 @@ def _write_git_file_and_module_config(cls, working_tree_dir, module_abspath):
309309 #{ Edit Interface
310310
311311 @classmethod
312- def add (cls , repo , name , path , url = None , branch = None , no_checkout = False , depth = None ):
312+ def add (cls , repo , name , path , url = None , branch = None , no_checkout = False , depth = None , env = None ):
313313 """Add a new submodule to the given repository. This will alter the index
314314 as well as the .gitmodules file, but will not create a new commit.
315315 If the submodule already exists, no matter if the configuration differs
@@ -336,6 +336,12 @@ def add(cls, repo, name, path, url=None, branch=None, no_checkout=False, depth=N
336336 no checkout will be performed
337337 :param depth: Create a shallow clone with a history truncated to the
338338 specified number of commits.
339+ :param env: Optional dictionary containing the desired environment variables.
340+ Note: Provided variables will be used to update the execution
341+ environment for `git`. If some variable is not specified in `env`
342+ and is defined in `os.environ`, value from `os.environ` will be used.
343+ If you want to unset some variable, consider providing empty string
344+ as its value.
339345 :return: The newly created submodule instance
340346 :note: works atomically, such that no change will be done if the repository
341347 update fails for instance"""
@@ -404,7 +410,7 @@ def add(cls, repo, name, path, url=None, branch=None, no_checkout=False, depth=N
404410 raise ValueError ("depth should be an integer" )
405411
406412 # _clone_repo(cls, repo, url, path, name, **kwargs):
407- mrepo = cls ._clone_repo (repo , url , path , name , ** kwargs )
413+ mrepo = cls ._clone_repo (repo , url , path , name , env = env , ** kwargs )
408414 # END verify url
409415
410416 ## See #525 for ensuring git urls in config-files valid under Windows.
@@ -436,7 +442,7 @@ def add(cls, repo, name, path, url=None, branch=None, no_checkout=False, depth=N
436442 return sm
437443
438444 def update (self , recursive = False , init = True , to_latest_revision = False , progress = None , dry_run = False ,
439- force = False , keep_going = False ):
445+ force = False , keep_going = False , env = None ):
440446 """Update the repository of this submodule to point to the checkout
441447 we point at with the binsha of this instance.
442448
@@ -461,6 +467,12 @@ def update(self, recursive=False, init=True, to_latest_revision=False, progress=
461467 Unless dry_run is set as well, keep_going could cause subsequent/inherited errors you wouldn't see
462468 otherwise.
463469 In conjunction with dry_run, it can be useful to anticipate all errors when updating submodules
470+ :param env: Optional dictionary containing the desired environment variables.
471+ Note: Provided variables will be used to update the execution
472+ environment for `git`. If some variable is not specified in `env`
473+ and is defined in `os.environ`, value from `os.environ` will be used.
474+ If you want to unset some variable, consider providing empty string
475+ as its value.
464476 :note: does nothing in bare repositories
465477 :note: method is definitely not atomic if recurisve is True
466478 :return: self"""
@@ -527,7 +539,7 @@ def update(self, recursive=False, init=True, to_latest_revision=False, progress=
527539 progress .update (BEGIN | CLONE , 0 , 1 , prefix + "Cloning url '%s' to '%s' in submodule %r" %
528540 (self .url , checkout_module_abspath , self .name ))
529541 if not dry_run :
530- mrepo = self ._clone_repo (self .repo , self .url , self .path , self .name , n = True )
542+ mrepo = self ._clone_repo (self .repo , self .url , self .path , self .name , n = True , env = env )
531543 # END handle dry-run
532544 progress .update (END | CLONE , 0 , 1 , prefix + "Done cloning to %s" % checkout_module_abspath )
533545
0 commit comments