Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
from mozbuild.base import MozbuildObject
from mozversioncontrol import get_repository_object
from tryselect.cli import BaseTryParser
from .again import run as again_run
from .fuzzy import run as fuzzy_run
here = os.path.abspath(os.path.dirname(__file__))
build = MozbuildObject.from_environment(cwd=here)
class CompareParser(BaseTryParser):
name = "compare"
arguments = [
[
["-cc", "--compare-commit"],
{
"default": None,
"help": "The commit that you want to compare your current revision with",
},
],
]
common_groups = ["task"]
task_configs = [
"rebuild",
]
def get_revisions_to_run(vcs, compare_commit):
if compare_commit is None:
compare_commit = vcs.base_ref
if vcs.branch:
current_revision_ref = vcs.branch
else:
current_revision_ref = vcs.head_ref
return compare_commit, current_revision_ref
def run(compare_commit=None, **kwargs):
vcs = get_repository_object(build.topsrcdir)
compare_commit, current_revision_ref = CompareParser.get_revisions_to_run(
vcs, compare_commit
)
print("********************************************")
print("* 2 commits are created with this command *")
print("********************************************")
try:
fuzzy_run(**kwargs)
print("********************************************")
print("* The base commit can be found above *")
print("********************************************")
vcs.update(compare_commit)
again_run()
print("*****************************************")
print("* The compare commit can be found above *")
print("*****************************************")
finally:
vcs.update(current_revision_ref)