コード例 #1
0
ファイル: test_util_hg.py プロジェクト: bdacode/build-tools
    def testPullDefault(self):
        clone(self.repodir, self.wc)
        run_cmd(['hg', 'tag', '-f', 'TAG1'], cwd=self.repodir)
        revisions = getRevisions(self.repodir)

        rev = pull(self.repodir, self.wc, revision='default')
        self.assertEquals(rev, revisions[0])
        self.assertEquals(getRevisions(self.wc), revisions)
コード例 #2
0
ファイル: test_util_hg.py プロジェクト: B-Rich/build-tools
    def testPullDefault(self):
        clone(self.repodir, self.wc)
        run_cmd(["hg", "tag", "-f", "TAG1"], cwd=self.repodir)
        revisions = getRevisions(self.repodir)

        rev = pull(self.repodir, self.wc, revision="default")
        self.assertEquals(rev, revisions[0])
        self.assertEquals(getRevisions(self.wc), revisions)
    def testPullDefault(self):
        clone(self.repodir, self.wc)
        run_cmd(['hg', 'tag', '-f', 'TAG1'], cwd=self.repodir)
        revisions = getRevisions(self.repodir)

        rev = pull(self.repodir, self.wc, revision='default')
        self.assertEquals(rev, revisions[0])
        self.assertEquals(getRevisions(self.wc), revisions)
コード例 #4
0
ファイル: test_util_hg.py プロジェクト: B-Rich/build-tools
    def testPullWithBadMirror(self):
        mirror = os.path.join(self.tmpdir, "repo2")

        # Now clone from the original
        clone(self.repodir, self.wc)

        # Create a new commit in the original repo
        open(os.path.join(self.repodir, "test.txt"), "w").write("hello!")
        run_cmd(["hg", "add", "test.txt"], cwd=self.repodir)
        run_cmd(["hg", "commit", "-m", "adding changeset"], cwd=self.repodir)

        # Pull using the mirror
        pull(self.repodir, self.wc, mirrors=[mirror])

        self.assertEquals(getRevisions(self.wc), getRevisions(self.repodir))

        # Our default path should point to the original repo
        self.assertEquals(self.repodir, path(self.wc))
コード例 #5
0
ファイル: test_util_hg.py プロジェクト: B-Rich/build-tools
    def testPull(self):
        # Clone just the first rev
        clone(self.repodir, self.wc, revision=self.revisions[-1], update_dest=False, clone_by_rev=True)
        self.assertEquals(getRevisions(self.wc), self.revisions[-1:])

        # Now pull in new changes
        rev = pull(self.repodir, self.wc, update_dest=False)
        self.assertEquals(rev, None)
        self.assertEquals(getRevisions(self.wc), self.revisions)
コード例 #6
0
ファイル: test_util_hg.py プロジェクト: bdacode/build-tools
    def testPullWithBadMirror(self):
        mirror = os.path.join(self.tmpdir, 'repo2')

        # Now clone from the original
        clone(self.repodir, self.wc)

        # Create a new commit in the original repo
        open(os.path.join(self.repodir, 'test.txt'), 'w').write('hello!')
        run_cmd(['hg', 'add', 'test.txt'], cwd=self.repodir)
        run_cmd(['hg', 'commit', '-m', 'adding changeset'], cwd=self.repodir)

        # Pull using the mirror
        pull(self.repodir, self.wc, mirrors=[mirror])

        self.assertEquals(getRevisions(self.wc), getRevisions(self.repodir))

        # Our default path should point to the original repo
        self.assertEquals(self.repodir, path(self.wc))
コード例 #7
0
    def testPullWithBadMirror(self):
        mirror = os.path.join(self.tmpdir, 'repo2')

        # Now clone from the original
        clone(self.repodir, self.wc)

        # Create a new commit in the original repo
        open(os.path.join(self.repodir, 'test.txt'), 'w').write('hello!')
        run_cmd(['hg', 'add', 'test.txt'], cwd=self.repodir)
        run_cmd(['hg', 'commit', '-m', 'adding changeset'], cwd=self.repodir)

        # Pull using the mirror
        pull(self.repodir, self.wc, mirrors=[mirror])

        self.assertEquals(getRevisions(self.wc), getRevisions(self.repodir))

        # Our default path should point to the original repo
        self.assertEquals(self.repodir, path(self.wc))
コード例 #8
0
ファイル: test_util_hg.py プロジェクト: B-Rich/build-tools
    def testPullRevision(self):
        # Clone just the first rev
        clone(self.repodir, self.wc, revision=self.revisions[-1], update_dest=False, clone_by_rev=True)
        self.assertEquals(getRevisions(self.wc), self.revisions[-1:])

        # Now pull in just the last revision
        rev = pull(self.repodir, self.wc, revision=self.revisions[0], update_dest=False)
        self.assertEquals(rev, None)

        # We'll be missing the middle revision (on another branch)
        self.assertEquals(getRevisions(self.wc), self.revisions[:1] + self.revisions[2:])
コード例 #9
0
ファイル: test_util_hg.py プロジェクト: B-Rich/build-tools
    def testPullWithUnrelatedMirror(self):
        mirror = os.path.join(self.tmpdir, "repo2")
        run_cmd(["%s/init_hgrepo.sh" % os.path.dirname(__file__), mirror])

        # Now clone from the original
        clone(self.repodir, self.wc)

        # Create a new commit in the original repo
        open(os.path.join(self.repodir, "test.txt"), "w").write("hello!")
        run_cmd(["hg", "add", "test.txt"], cwd=self.repodir)
        run_cmd(["hg", "commit", "-m", "adding changeset"], cwd=self.repodir)

        # Pull using the mirror
        pull(self.repodir, self.wc, mirrors=[mirror])

        self.assertEquals(getRevisions(self.wc), getRevisions(self.repodir))
        # We shouldn't have anything from the unrelated mirror
        self.assertEquals(set(), set(getRevisions(mirror)).intersection(set(getRevisions(self.wc))))

        # Our default path should point to the original repo
        self.assertEquals(self.repodir, path(self.wc))
コード例 #10
0
ファイル: test_util_hg.py プロジェクト: bdacode/build-tools
    def testPullWithUnrelatedMirror(self):
        mirror = os.path.join(self.tmpdir, 'repo2')
        run_cmd(['%s/init_hgrepo.sh' % os.path.dirname(__file__), mirror])

        # Now clone from the original
        clone(self.repodir, self.wc)

        # Create a new commit in the original repo
        open(os.path.join(self.repodir, 'test.txt'), 'w').write('hello!')
        run_cmd(['hg', 'add', 'test.txt'], cwd=self.repodir)
        run_cmd(['hg', 'commit', '-m', 'adding changeset'], cwd=self.repodir)

        # Pull using the mirror
        pull(self.repodir, self.wc, mirrors=[mirror])

        self.assertEquals(getRevisions(self.wc), getRevisions(self.repodir))
        # We shouldn't have anything from the unrelated mirror
        self.assertEquals(set(),
                          set(getRevisions(mirror)).intersection(set(getRevisions(self.wc))))

        # Our default path should point to the original repo
        self.assertEquals(self.repodir, path(self.wc))
    def testPull(self):
        # Clone just the first rev
        clone(self.repodir,
              self.wc,
              revision=self.revisions[-1],
              update_dest=False,
              clone_by_rev=True)
        self.assertEquals(getRevisions(self.wc), self.revisions[-1:])

        # Now pull in new changes
        rev = pull(self.repodir, self.wc, update_dest=False)
        self.assertEquals(rev, None)
        self.assertEquals(getRevisions(self.wc), self.revisions)
コード例 #12
0
ファイル: test_util_hg.py プロジェクト: B-Rich/build-tools
    def testPullBranch(self):
        # Clone just the first rev
        clone(self.repodir, self.wc, revision=self.revisions[-1], update_dest=False, clone_by_rev=True)
        self.assertEquals(getRevisions(self.wc), self.revisions[-1:])

        # Now pull in the other branch
        rev = pull(self.repodir, self.wc, branch="branch2", update_dest=False)
        self.assertEquals(rev, None)

        # On hg 1.6, we'll be missing the last revision (on another branch)
        if hg_ver() >= (1, 6, 0):
            self.assertEquals(getRevisions(self.wc), self.revisions[1:])
        else:
            self.assertEquals(getRevisions(self.wc), self.revisions)
コード例 #13
0
    def testPullWithUnrelatedMirror(self):
        mirror = os.path.join(self.tmpdir, 'repo2')
        run_cmd(['%s/init_hgrepo.sh' % os.path.dirname(__file__), mirror])

        # Now clone from the original
        clone(self.repodir, self.wc)

        # Create a new commit in the original repo
        open(os.path.join(self.repodir, 'test.txt'), 'w').write('hello!')
        run_cmd(['hg', 'add', 'test.txt'], cwd=self.repodir)
        run_cmd(['hg', 'commit', '-m', 'adding changeset'], cwd=self.repodir)

        # Pull using the mirror
        pull(self.repodir, self.wc, mirrors=[mirror])

        self.assertEquals(getRevisions(self.wc), getRevisions(self.repodir))
        # We shouldn't have anything from the unrelated mirror
        self.assertEquals(
            set(),
            set(getRevisions(mirror)).intersection(set(getRevisions(self.wc))))

        # Our default path should point to the original repo
        self.assertEquals(self.repodir, path(self.wc))
    def testPullBranch(self):
        # Clone just the first rev
        clone(self.repodir,
              self.wc,
              revision=self.revisions[-1],
              update_dest=False,
              clone_by_rev=True)
        self.assertEquals(getRevisions(self.wc), self.revisions[-1:])

        # Now pull in the other branch
        rev = pull(self.repodir, self.wc, branch="branch2", update_dest=False)
        self.assertEquals(rev, None)

        # On hg 1.6, we'll be missing the last revision (on another branch)
        if hg_ver() >= (1, 6, 0):
            self.assertEquals(getRevisions(self.wc), self.revisions[1:])
        else:
            self.assertEquals(getRevisions(self.wc), self.revisions)
    def testPullRevision(self):
        # Clone just the first rev
        clone(self.repodir,
              self.wc,
              revision=self.revisions[-1],
              update_dest=False,
              clone_by_rev=True)
        self.assertEquals(getRevisions(self.wc), self.revisions[-1:])

        # Now pull in just the last revision
        rev = pull(self.repodir,
                   self.wc,
                   revision=self.revisions[0],
                   update_dest=False)
        self.assertEquals(rev, None)

        # We'll be missing the middle revision (on another branch)
        self.assertEquals(getRevisions(self.wc),
                          self.revisions[:1] + self.revisions[2:])
コード例 #16
0
def main():
    logging.basicConfig(format="%(asctime)s - %(message)s", level=logging.INFO)
    parser = argparse.ArgumentParser()
    parser.add_argument("--hg-user",
                        default="ffxbld <*****@*****.**>",
                        help="Mercurial username to be passed to hg -u")

    args = parser.parse_args()
    hg_user = args.hg_user

    # prep the repos
    for d, repo in ((mc_dir, mc_repo), (ma_dir, ma_repo), (mb_dir, mb_repo)):
        mercurial(repo, d)
        log.info("Cleaning up %s...", d)
        strip_outgoing(d)
        update(d, branch="default")

    curr_mc_version = get_major_version(mc_dir)
    curr_ma_version = get_major_version(ma_dir)
    curr_mb_version = get_major_version(mb_dir)

    next_mc_version = str(int(curr_mc_version) + 1)
    next_ma_version = str(int(curr_ma_version) + 1)
    next_mb_version = str(int(curr_mb_version) + 1)

    # mozilla-central
    mc_revision = get_revision(mc_dir)
    mc_tag = "FIREFOX_AURORA_%s_BASE" % curr_mc_version
    tag(mc_dir,
        tags=[mc_tag],
        rev=mc_revision,
        user=hg_user,
        msg=
        "Added %s tag for changeset %s. IGNORE BROKEN CHANGESETS  DONTBUILD CLOSED TREE NO BUG a=release"
        % (mc_tag, mc_revision))
    new_mc_revision = get_revision(mc_dir)
    bump_version(mc_dir,
                 curr_mc_version,
                 next_mc_version,
                 "a1",
                 "a1",
                 bump_major=True)

    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=mc_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(
        mc_dir,
        user=hg_user,
        msg=
        "Version bump. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release")
    raw_input("Go ahead and push mozilla-central...and continue to "
              "mozilla-aurora to mozilla-beta uplift ")

    # mozilla-aurora
    ma_revision = get_revision(ma_dir)
    ma_tag = "FIREFOX_BETA_%s_BASE" % curr_ma_version
    ma_end_tag = "FIREFOX_AURORA_%s_END" % curr_ma_version
    # pull must use revision not tag
    pull(mc_dir, dest=ma_dir, revision=new_mc_revision)
    merge_via_debugsetparents(
        ma_dir,
        old_head=ma_revision,
        new_head=new_mc_revision,
        user=hg_user,
        msg="Merge old head via |hg debugsetparents %s %s|. "
        "CLOSED TREE DONTBUILD a=release" % (new_mc_revision, ma_revision))
    tag(ma_dir,
        tags=[ma_tag, ma_end_tag],
        rev=ma_revision,
        user=hg_user,
        msg=
        "Added %s %s tags for changeset %s. IGNORE BROKEN CHANGESETS DONTBUILD CLOSED TREE NO BUG a=release"
        % (ma_tag, ma_end_tag, ma_revision))
    log.info("Reverting locales")
    for f in locale_files:
        run_cmd(["hg", "revert", "-r", ma_end_tag, f], cwd=ma_dir)
    bump_version(ma_dir, next_ma_version, next_ma_version, "a1", "a2")
    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=ma_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(
        ma_dir,
        user=hg_user,
        msg=
        "Version bump. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release")

    replace(path.join(ma_dir, "browser/confvars.sh"),
            "MOZ_BRANDING_DIRECTORY=browser/branding/nightly",
            "MOZ_BRANDING_DIRECTORY=browser/branding/aurora")
    replace(path.join(ma_dir, "browser/confvars.sh"),
            "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-central",
            "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-aurora")
    replace(path.join(ma_dir, "browser/confvars.sh"),
            "MAR_CHANNEL_ID=firefox-mozilla-central",
            "MAR_CHANNEL_ID=firefox-mozilla-aurora")
    for d in branding_dirs:
        for f in branding_files:
            replace(
                path.join(ma_dir, d, f),
                "ac_add_options --with-branding=mobile/android/branding/nightly",
                "ac_add_options --with-branding=mobile/android/branding/aurora"
            )
            if f == "l10n-nightly":
                replace(path.join(ma_dir, d, f),
                        "ac_add_options --with-l10n-base=../../l10n-central",
                        "ac_add_options --with-l10n-base=..")
    for f in profiling_files:
        replace(path.join(ma_dir, f), "ac_add_options --enable-profiling", "")
    for f in elf_hack_files:
        replace(
            path.join(ma_dir, f),
            "ac_add_options --disable-elf-hack # --enable-elf-hack conflicts with --enable-profiling",
            "")

    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=ma_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(
        ma_dir,
        user=hg_user,
        msg=
        "Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release"
    )
    raw_input("Go ahead and push mozilla-aurora changes.")

    # mozilla-beta
    mb_revision = get_revision(mb_dir)
    mb_tag = "FIREFOX_BETA_%s_END" % curr_mb_version
    # pull must use revision not tag
    pull(ma_dir, dest=mb_dir, revision=ma_revision)
    merge_via_debugsetparents(
        mb_dir,
        old_head=mb_revision,
        new_head=ma_revision,
        user=hg_user,
        msg="Merge old head via |hg debugsetparents %s %s|. "
        "CLOSED TREE DONTBUILD a=release" % (ma_revision, mb_revision))
    tag(mb_dir,
        tags=[mb_tag],
        rev=mb_revision,
        user=hg_user,
        msg=
        "Added %s tag for changeset %s. IGNORE BROKEN CHANGESETS DONTBUILD CLOSED TREE NO BUG a=release"
        % (mb_tag, mb_revision))
    bump_version(mb_dir, next_mb_version, next_mb_version, "a2", "")
    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=mb_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(
        mb_dir,
        user=hg_user,
        msg=
        "Version bump. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release")
    replace(path.join(mb_dir, "browser/confvars.sh"),
            "MOZ_BRANDING_DIRECTORY=browser/branding/aurora",
            "MOZ_BRANDING_DIRECTORY=browser/branding/nightly")
    replace(
        path.join(mb_dir, "browser/confvars.sh"),
        "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-aurora",
        "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-beta,firefox-mozilla-release"
    )
    replace(path.join(mb_dir, "browser/confvars.sh"),
            "MAR_CHANNEL_ID=firefox-mozilla-aurora",
            "MAR_CHANNEL_ID=firefox-mozilla-beta")
    for d in branding_dirs:
        for f in branding_files:
            replace(
                path.join(mb_dir, d, f),
                "ac_add_options --with-branding=mobile/android/branding/aurora",
                "ac_add_options --with-branding=mobile/android/branding/beta")
    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=mb_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(
        mb_dir,
        user=hg_user,
        msg=
        "Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release"
    )
    raw_input("Go ahead and push mozilla-beta changes.")
コード例 #17
0
def main():
    logging.basicConfig(format="%(asctime)s - %(message)s", level=logging.INFO)
    parser = argparse.ArgumentParser()
    parser.add_argument("--from-dir", default="mozilla-beta",
                        help="Working directory of repo to be merged from")
    parser.add_argument("--from-repo",
                        default="ssh://hg.mozilla.org/releases/mozilla-beta",
                        help="Repo to be merged from")
    parser.add_argument("--to-dir", default="mozilla-release",
                        help="Working directory of repo to be merged to")
    parser.add_argument(
        "--to-repo", default="ssh://hg.mozilla.org/releases/mozilla-release",
        help="Repo to be merged to")
    parser.add_argument("--hg-user", default="ffxbld <*****@*****.**>",
                        help="Mercurial username to be passed to hg -u")
    parser.add_argument("--remove-locale", dest="remove_locales", action="append",
                        required=True,
                        help="Locales to be removed from release shipped-locales")

    args = parser.parse_args()
    from_dir = args.from_dir
    to_dir = args.to_dir
    from_repo = args.from_repo
    to_repo = args.to_repo
    hg_user = args.hg_user

    with retrying(mercurial) as clone:
        for (d, repo) in ((from_dir, from_repo), (to_dir, to_repo)):
            clone(repo, d)
            log.info("Cleaning up %s...", d)
            strip_outgoing(d)
            update(d, branch="default")
    beta_rev = get_revision(from_dir)
    release_rev = get_revision(to_dir)

    now = datetime.datetime.now()
    date = now.strftime("%Y%m%d")
    # TODO: make this tag consistent with other branches
    release_base_tag = "RELEASE_BASE_" + date

    log.info("Tagging %s beta with %s", beta_rev, release_base_tag)
    tag(from_dir, tags=[release_base_tag], rev=beta_rev, user=hg_user,
        msg="Added %s tag for changeset %s. DONTBUILD CLOSED TREE a=release" %
        (release_base_tag, beta_rev))
    new_beta_rev = get_revision(from_dir)
    raw_input("Push mozilla-beta and hit Return")

    pull(from_dir, dest=to_dir)
    merge_via_debugsetparents(
        to_dir, old_head=release_rev, new_head=new_beta_rev, user=hg_user,
        msg="Merge old head via |hg debugsetparents %s %s|. "
        "CLOSED TREE DONTBUILD a=release" % (new_beta_rev, release_rev))

    replace(
        path.join(to_dir, "browser/confvars.sh"),
        "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-beta,firefox-mozilla-release",
        "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-release")
    replace(path.join(to_dir, "browser/confvars.sh"),
            "MAR_CHANNEL_ID=firefox-mozilla-beta",
            "MAR_CHANNEL_ID=firefox-mozilla-release")

    for d in branding_dirs:
        for f in branding_files:
            replace(
                path.join(to_dir, d, f),
                "ac_add_options --with-branding=mobile/android/branding/beta",
                "ac_add_options --with-branding=mobile/android/branding/official")

    if args.remove_locales:
        log.info("Removing locales: %s", args.remove_locales)
        remove_locales(path.join(to_dir, "browser/locales/shipped-locales"),
                       args.remove_locales)

    log.warn("Apply any manual changes, such as disabling features.")
    raw_input("Hit 'return' to display channel, branding, and feature diffs onscreen")
    run_cmd(["hg", "diff"], cwd=to_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(to_dir, user=hg_user,
           msg="Update configs. CLOSED TREE a=release ba=release")
    raw_input("Go ahead and push mozilla-release changes.")
コード例 #18
0
ファイル: merge_helper.py プロジェクト: B-Rich/build-tools
def main():
    logging.basicConfig(format="%(asctime)s - %(message)s", level=logging.INFO)
    parser = argparse.ArgumentParser()
    parser.add_argument("--hg-user", default="ffxbld <*****@*****.**>",
                        help="Mercurial username to be passed to hg -u")

    args = parser.parse_args()
    hg_user = args.hg_user

    # prep the repos
    for d, repo in ((mc_dir, mc_repo), (ma_dir, ma_repo), (mb_dir, mb_repo)):
        mercurial(repo, d)
        log.info("Cleaning up %s...", d)
        strip_outgoing(d)
        update(d, branch="default")

    curr_mc_version = get_major_version(mc_dir)
    curr_ma_version = get_major_version(ma_dir)
    curr_mb_version = get_major_version(mb_dir)

    next_mc_version = str(int(curr_mc_version) + 1)
    next_ma_version = str(int(curr_ma_version) + 1)
    next_mb_version = str(int(curr_mb_version) + 1)

    # mozilla-central
    mc_revision = get_revision(mc_dir)
    mc_tag = "FIREFOX_AURORA_%s_BASE" % curr_mc_version
    tag(mc_dir, tags=[mc_tag], rev=mc_revision, user=hg_user,
        msg="Added %s tag for changeset %s. IGNORE BROKEN CHANGESETS  DONTBUILD CLOSED TREE NO BUG a=release" %
        (mc_tag, mc_revision))
    new_mc_revision = get_revision(mc_dir)
    bump_version(mc_dir, curr_mc_version, next_mc_version, "a1", "a1",
                 bump_major=True)

    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=mc_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(mc_dir, user=hg_user,
           msg="Version bump. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release")
    raw_input("Go ahead and push mozilla-central...and continue to "
              "mozilla-aurora to mozilla-beta uplift ")

    # mozilla-aurora
    ma_revision = get_revision(ma_dir)
    ma_tag = "FIREFOX_BETA_%s_BASE" % curr_ma_version
    ma_end_tag = "FIREFOX_AURORA_%s_END" % curr_ma_version
    # pull must use revision not tag
    pull(mc_dir, dest=ma_dir, revision=new_mc_revision)
    merge_via_debugsetparents(
        ma_dir, old_head=ma_revision, new_head=new_mc_revision,
        user=hg_user, msg="Merge old head via |hg debugsetparents %s %s|. "
        "CLOSED TREE DONTBUILD a=release" % (new_mc_revision, ma_revision))
    tag(ma_dir, tags=[ma_tag, ma_end_tag], rev=ma_revision, user=hg_user,
        msg="Added %s %s tags for changeset %s. IGNORE BROKEN CHANGESETS DONTBUILD CLOSED TREE NO BUG a=release" %
        (ma_tag, ma_end_tag,  ma_revision))
    log.info("Reverting locales")
    for f in locale_files:
        run_cmd(["hg", "revert", "-r", ma_end_tag, f], cwd=ma_dir)
    bump_version(ma_dir, next_ma_version, next_ma_version, "a1", "a2")
    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=ma_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(ma_dir, user=hg_user, msg="Version bump. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release")

    replace(path.join(ma_dir, "browser/confvars.sh"),
            "MOZ_BRANDING_DIRECTORY=browser/branding/nightly",
            "MOZ_BRANDING_DIRECTORY=browser/branding/aurora")
    replace(path.join(ma_dir, "browser/confvars.sh"),
            "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-central",
            "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-aurora")
    replace(path.join(ma_dir, "browser/confvars.sh"),
            "MAR_CHANNEL_ID=firefox-mozilla-central",
            "MAR_CHANNEL_ID=firefox-mozilla-aurora")
    for d in branding_dirs:
        for f in branding_files:
            replace(path.join(ma_dir, d, f),
                    "ac_add_options --with-branding=mobile/android/branding/nightly",
                    "ac_add_options --with-branding=mobile/android/branding/aurora")
            if f == "l10n-nightly":
                replace(path.join(ma_dir, d, f),
                        "ac_add_options --with-l10n-base=../../l10n-central",
                        "ac_add_options --with-l10n-base=..")
    for f in profiling_files:
        replace(path.join(ma_dir, f), "ac_add_options --enable-profiling", "")
    for f in elf_hack_files:
        replace(path.join(ma_dir, f),
                "ac_add_options --disable-elf-hack # --enable-elf-hack conflicts with --enable-profiling", "")

    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=ma_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(ma_dir, user=hg_user,
           msg="Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release")
    raw_input("Go ahead and push mozilla-aurora changes.")

    # mozilla-beta
    mb_revision = get_revision(mb_dir)
    mb_tag = "FIREFOX_BETA_%s_END" % curr_mb_version
    # pull must use revision not tag
    pull(ma_dir, dest=mb_dir, revision=ma_revision)
    merge_via_debugsetparents(
        mb_dir, old_head=mb_revision, new_head=ma_revision,
        user=hg_user, msg="Merge old head via |hg debugsetparents %s %s|. "
        "CLOSED TREE DONTBUILD a=release" % (ma_revision, mb_revision))
    tag(mb_dir, tags=[mb_tag], rev=mb_revision, user=hg_user,
        msg="Added %s tag for changeset %s. IGNORE BROKEN CHANGESETS DONTBUILD CLOSED TREE NO BUG a=release" %
        (mb_tag, mb_revision))
    bump_version(mb_dir, next_mb_version, next_mb_version, "a2", "")
    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=mb_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(mb_dir, user=hg_user, msg="Version bump. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release")
    replace(path.join(mb_dir, "browser/confvars.sh"),
            "MOZ_BRANDING_DIRECTORY=browser/branding/aurora",
            "MOZ_BRANDING_DIRECTORY=browser/branding/nightly")
    replace(path.join(mb_dir, "browser/confvars.sh"),
            "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-aurora",
            "ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-beta,firefox-mozilla-release")
    replace(path.join(mb_dir, "browser/confvars.sh"),
            "MAR_CHANNEL_ID=firefox-mozilla-aurora",
            "MAR_CHANNEL_ID=firefox-mozilla-beta")
    for d in branding_dirs:
        for f in branding_files:
            replace(path.join(mb_dir, d, f),
                    "ac_add_options --with-branding=mobile/android/branding/aurora",
                    "ac_add_options --with-branding=mobile/android/branding/beta")
    raw_input("Hit 'return' to display diffs onscreen")
    run_cmd(["hg", "diff"], cwd=mb_dir)
    raw_input("If the diff looks good hit return to commit those changes")
    commit(mb_dir, user=hg_user,
           msg="Update configs. IGNORE BROKEN CHANGESETS CLOSED TREE NO BUG a=release ba=release")
    raw_input("Go ahead and push mozilla-beta changes.")