diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2020-10-08 10:09:15 -0400 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2020-10-13 11:12:49 +0000 |
commit | 3ade5bbd92b506f215f86a7d41048b22b287c673 (patch) | |
tree | 2719b23d8221faddfbcad0cf6cc6433dec298d5d /mesonbuild/msubprojects.py | |
parent | 47046c3fb988c656a04521df932900dc47f0f6db (diff) | |
download | meson-3ade5bbd92b506f215f86a7d41048b22b287c673.zip meson-3ade5bbd92b506f215f86a7d41048b22b287c673.tar.gz meson-3ade5bbd92b506f215f86a7d41048b22b287c673.tar.bz2 |
msubprojects: Handle change of URL in wrap-git
Diffstat (limited to 'mesonbuild/msubprojects.py')
-rwxr-xr-x | mesonbuild/msubprojects.py | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/mesonbuild/msubprojects.py b/mesonbuild/msubprojects.py index 422dad2..195410f 100755 --- a/mesonbuild/msubprojects.py +++ b/mesonbuild/msubprojects.py @@ -120,12 +120,34 @@ def update_git(wrap, repo_dir, options): if not os.path.isdir(repo_dir): mlog.log(' -> Not used.') return True - revision = wrap.get('revision') - if not revision: + revision = wrap.values.get('revision') + url = wrap.values.get('url') + push_url = wrap.values.get('push-url') + if not revision or not url: # It could be a detached git submodule for example. - mlog.log(' -> No revision specified.') + mlog.log(' -> No revision or URL specified.') return True try: + origin_url = git_output(['remote', 'get-url', 'origin'], repo_dir).strip() + except GitException as e: + mlog.log(' -> Failed to determine current origin URL in', mlog.bold(repo_dir)) + mlog.log(mlog.red(e.output)) + mlog.log(mlog.red(str(e))) + return False + if options.reset: + try: + git_output(['remote', 'set-url', 'origin', url], repo_dir) + if push_url: + git_output(['remote', 'set-url', '--push', 'origin', push_url], repo_dir) + except GitException as e: + mlog.log(' -> Failed to reset origin URL in', mlog.bold(repo_dir)) + mlog.log(mlog.red(e.output)) + mlog.log(mlog.red(str(e))) + return False + elif url != origin_url: + mlog.log(' -> URL changed from {!r} to {!r}'.format(origin_url, url)) + return False + try: # Same as `git branch --show-current` but compatible with older git version branch = git_output(['rev-parse', '--abbrev-ref', 'HEAD'], repo_dir).strip() branch = branch if branch != 'HEAD' else '' |