Ryan Lane has uploaded a new change for review.
https://gerrit.wikimedia.org/r/94688
Change subject: Add recursive submodule support to trebuchet
......................................................................
Add recursive submodule support to trebuchet
For repos using checkout_submodule this change makes submodule
checkout recursive.
Change-Id: Id24ebae89d5a41782ab3d8da81185d13302156e9
---
M modules/deployment/files/modules/deploy.py
1 file changed, 42 insertions(+), 31 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/88/94688/1
diff --git a/modules/deployment/files/modules/deploy.py
b/modules/deployment/files/modules/deploy.py
index df6fb35..ae3a7ad 100644
--- a/modules/deployment/files/modules/deploy.py
+++ b/modules/deployment/files/modules/deploy.py
@@ -156,23 +156,46 @@
def _update_gitmodules(config, location, shadow=False):
- gitmodules = '{0}/.gitmodules'.format(location)
-
- cmd = '/usr/bin/git checkout .gitmodules'
- status = __salt__['cmd.retcode'](cmd, location)
- if status != 0:
- return status
-
- # Transform .gitmodules file based on defined seds
- for before, after in config['submodule_sed_regex'].items():
+ gitmodules_list = __salt__['file.find'](location, name='.gitmodules')
+ for gitmodules in gitmodules_list:
+ gitmodules_dir = os.path.dirname(gitmodules)
+ cmd = '/usr/bin/git checkout .gitmodules'
+ status = __salt__['cmd.retcode'](cmd, gitmodules_dir)
+ if status != 0:
+ return status
if shadow:
- # When fetching a shadow reference, we want to use the repo's
- # filesystem location rather than the deployment url.
- repo_url = config['location']
+ # Tranform .gitmodules based on reference
+ submodules = []
+ f = open(gitmodules, 'r')
+ for line in f.readlines():
+ keyval = line.split(' = ')
+ if keyval[0].strip() == "path":
+ submodules.append(keyval[1].strip())
+ f.close()
+ f.open(gitmodules, 'w')
+ reference_dir = gitmodules_dir.replace(location,
+ config['location'])
+ for submodule in submodules:
+ f.write('[submodule "{0}"]\n'.format(submodule))
+ f.write('\tpath = {0}\n'.format(submodule))
+ f.write('\turl = {0}/{1}\n'.format(reference_dir, submodule))
+ f.close()
else:
- repo_url = config['url']
- after = after.replace('__REPO_URL__', repo_url)
- __salt__['file.sed'](gitmodules, before, after)
+ # Transform .gitmodules file based on defined seds
+ for before, after in config['submodule_sed_regex'].items():
+ if shadow:
+ # When fetching a shadow reference, we want to use the
repo's
+ # filesystem location rather than the deployment url.
+ repo_url = config['location']
+ else:
+ repo_url = config['url']
+ after = after.replace('__REPO_URL__', repo_url)
+ __salt__['file.sed'](gitmodules, before, after)
+ # Sync submodules for this repo
+ cmd = '/usr/bin/git submodule sync'
+ status = __salt__['cmd.retcode'](cmd, gitmodules_dir)
+ if status != 0:
+ return status
return 0
@@ -260,20 +283,14 @@
if ret != 0:
return ret
- # Sync the .gitmodules config
- cmd = '/usr/bin/git submodule sync'
+ # fetch all submodules and tag for submodules
+ cmd = '/usr/bin/git submodule foreach --recursive git fetch'
status = __salt__['cmd.retcode'](cmd, location)
if status != 0:
return status
# fetch all submodules and tag for submodules
- cmd = '/usr/bin/git submodule foreach git fetch'
- status = __salt__['cmd.retcode'](cmd, location)
- if status != 0:
- return status
-
- # fetch all submodules and tag for submodules
- cmd = '/usr/bin/git submodule foreach git fetch --tags'
+ cmd = '/usr/bin/git submodule foreach --recursive git fetch --tags'
status = __salt__['cmd.retcode'](cmd, location)
if status != 0:
return status
@@ -353,14 +370,8 @@
if ret != 0:
return ret
- # Sync the .gitmodules config
- cmd = '/usr/bin/git submodule sync'
- ret = __salt__['cmd.retcode'](cmd, location)
- if ret != 0:
- return 40
-
# Update the submodules to match this tag
- cmd = '/usr/bin/git submodule update --init'
+ cmd = '/usr/bin/git submodule update --recursive --init'
ret = __salt__['cmd.retcode'](cmd, location)
if ret != 0:
return 50
--
To view, visit https://gerrit.wikimedia.org/r/94688
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id24ebae89d5a41782ab3d8da81185d13302156e9
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ryan Lane <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits