From c60954605b00f188e2b86c5a957ab177abd887e5 Mon Sep 17 00:00:00 2001 From: jctanner Date: Fri, 12 Aug 2016 18:06:02 -0400 Subject: [PATCH] git: If force=yes, apply --force to submodule updates to overwrite local changes (#4415) Fixes #238 --- lib/ansible/modules/source_control/git.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/ansible/modules/source_control/git.py b/lib/ansible/modules/source_control/git.py index c3d09c6421a..f6c2ea20943 100644 --- a/lib/ansible/modules/source_control/git.py +++ b/lib/ansible/modules/source_control/git.py @@ -661,7 +661,7 @@ def submodules_fetch(git_path, module, remote, track_submodules, dest): break return changed -def submodule_update(git_path, module, dest, track_submodules): +def submodule_update(git_path, module, dest, track_submodules, force=False): ''' init and update any submodules ''' # get the valid submodule params @@ -676,6 +676,8 @@ def submodule_update(git_path, module, dest, track_submodules): cmd = [ git_path, 'submodule', 'update', '--init', '--recursive' ,'--remote' ] else: cmd = [ git_path, 'submodule', 'update', '--init', '--recursive' ] + if force: + cmd.append('--force') (rc, out, err) = module.run_command(cmd, cwd=dest) if rc != 0: module.fail_json(msg="Failed to init/update submodules: %s" % out + err) @@ -938,7 +940,7 @@ def main(): if submodules_updated: # Switch to version specified - submodule_update(git_path, module, dest, track_submodules) + submodule_update(git_path, module, dest, track_submodules, force=force) # determine if we changed anything result['after'] = get_version(module, git_path, dest)