summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source-builder/sb/download.py9
-rw-r--r--source-builder/sb/git.py8
2 files changed, 17 insertions, 0 deletions
diff --git a/source-builder/sb/download.py b/source-builder/sb/download.py
index e197879..3aaa701 100644
--- a/source-builder/sb/download.py
+++ b/source-builder/sb/download.py
@@ -515,6 +515,15 @@ def _git_downloader(url, local, config, opts):
log.notice('git: reset: %s' % (us[0]))
if _do_download(opts):
repo.reset(arg)
+ repo.submodule_foreach(['reset'] + arg)
+ elif _as[0] == 'clean':
+ arg = []
+ if len(_as) > 1:
+ arg = ['--%s' % (_as[1])]
+ log.notice('git: clean: %s' % (us[0]))
+ if _do_download(opts):
+ repo.clean(arg)
+ repo.submodule_foreach(['clean'] + arg)
elif _as[0] == 'protocol':
pass
else:
diff --git a/source-builder/sb/git.py b/source-builder/sb/git.py
index be23396..52bcb83 100644
--- a/source-builder/sb/git.py
+++ b/source-builder/sb/git.py
@@ -105,6 +105,14 @@ class repo:
def submodule(self, module):
ec, output = self._run(['submodule', 'update', '--init', module], check = True)
+ def submodule_foreach(self, args = []):
+ if type(args) == str:
+ args = [args.split(args)]
+ ec, output = self._run(['submodule',
+ 'foreach',
+ '--recursive',
+ self.git] + args, check = True)
+
def submodules(self):
smodules = {}
ec, output = self._run(['submodule'], check = True)