diff --git a/completion/bash-completion b/completion/bash-completion index 2142534e..af9acf00 100644 --- a/completion/bash-completion +++ b/completion/bash-completion @@ -174,7 +174,7 @@ __complete_publish() { __complete_checkupdates() { opts="-v -q" - lopts="--verbose --quiet --auto --autoonly --commit --gplay" + lopts="--verbose --quiet --auto --autoonly --commit --gplay --allow-dirty" case "${cur}" in -*) __complete_options diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 58e4ccf4..8f084a94 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -1233,6 +1233,7 @@ def main(): txt = "* build session started at " + common.get_wiki_timestamp(start_timestamp) + '\n' \ + "* this build started at " + build_starttime + '\n' \ + "* this build completed at " + common.get_wiki_timestamp() + '\n' \ + + common.get_git_describe_link() \ + '* fdroidserverid: [https://gitlab.com/fdroid/fdroidserver/commit/' \ + fdroidserverid + ' ' + fdroidserverid + ']\n\n' if buildserverid: diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 0a4f6e27..72c8b22b 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -535,6 +535,7 @@ def update_wiki(gplaylog, locallog): newpage = site.Pages[wiki_page_path] txt = '' txt += "* command line: " + ' '.join(sys.argv) + "\n" + txt += common.get_git_describe_link() txt += "* started at " + common.get_wiki_timestamp(start_timestamp) + '\n' txt += "* completed at " + common.get_wiki_timestamp() + '\n' txt += "\n\n" @@ -572,6 +573,8 @@ def main(): help=_("Only process apps with auto-updates")) parser.add_argument("--commit", action="store_true", default=False, help=_("Commit changes")) + parser.add_argument("--allow-dirty", action="store_true", default=False, + help=_("Run on git repo that has uncommitted changes")) parser.add_argument("--gplay", action="store_true", default=False, help=_("Only print differences with the Play Store")) metadata.add_metadata_arguments(parser) @@ -580,6 +583,12 @@ def main(): config = common.read_config(options) + if not options.allow_dirty: + status = subprocess.check_output(['git', 'status', '--porcelain']) + if status: + logging.error(_('Build metadata git repo has uncommited changes!')) + sys.exit(1) + # Get all apps... allapps = metadata.read_metadata() diff --git a/fdroidserver/common.py b/fdroidserver/common.py index cf1d9203..76089184 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -3100,3 +3100,21 @@ def get_android_tools_version_log(ndk_path=None): log += '* ' + name + ' (' + version + ')\n' return log + + +def get_git_describe_link(): + """Get a link to the current fdroiddata commit, to post to the wiki + + """ + try: + output = subprocess.check_output(['git', 'describe', '--always', '--dirty', '--abbrev=0'], + universal_newlines=True).strip() + except subprocess.CalledProcessError: + pass + if output: + commit = output.replace('-dirty', '') + return ('* fdroiddata: [https://gitlab.com/fdroid/fdroiddata/commit/{commit} {id}]\n' + .format(commit=commit, id=output)) + else: + logging.error(_("'{path}' failed to execute!").format(path='git describe')) + return '' diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 90fc291b..c22ac0f3 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -329,6 +329,7 @@ def update_wiki(apps, sortedids, apks): txt += "* command line: " + ' '.join(sys.argv) + "\n" txt += "* started at " + common.get_wiki_timestamp(start_timestamp) + '\n' txt += "* completed at " + common.get_wiki_timestamp() + '\n' + txt += common.get_git_describe_link() txt += "\n\n" txt += common.get_android_tools_version_log() newpage.save(txt, summary='Run log')