def build_views(self, soa, root_domain, gen_config, force_rebuild):
        view_bundles = []
        self.log(
            "SOA was seen with dirty == {0}".format(force_rebuild),
            root_domain=root_domain
        )

        # This for loop decides which views will be canidates for
        # rebuilding.
        for view in View.objects.all():
            self.log(
                "++++++ Looking at < {0} > view ++++++".
                format(view.name), root_domain=root_domain
            )

            t_start = time.time()  # tic

            view_data = build_zone_data(
                view, root_domain, soa, logf=self.log
            )

            build_time = time.time() - t_start  # toc

            self.log(
                "< {0} > Built {1} data in {2} seconds".format(
                    view.name, soa, build_time),
                root_domain=root_domain, build_time=build_time
            )

            if not view_data:
                if gen_config:
                    self.log(
                        "< {0} > No data found in this view. No zone file "
                        "will be made or included in any config for this "
                        "view.".format(view.name), root_domain=root_domain
                    )
                continue

            if gen_config:
                self.log(
                    "< {0} > Non-empty data set for this view. Its zone file "
                    "will be included in the config.".format(view.name),
                    root_domain=root_domain
                )

            file_meta = self.get_file_meta(view, root_domain, soa)

            # Detect when someone fiddles with the serial manulally.
            # safe_serial will be a serial that is ahead of the current serial
            # and should be used as the SOA's new serial
            was_bad_prev, safe_serial = self.verify_previous_build(
                file_meta, view, root_domain, soa
            )

            if was_bad_prev:
                soa.serial = safe_serial

            view_bundles.append(
                (view, file_meta, view_data)
            )

        view_str = ' | '.join([v.name for v, _, _ in view_bundles])
        self.log(
            "----- Building < {0} > ------".format(view_str),
            root_domain=root_domain
        )

        return view_bundles
Parse out commit information into a list of Commit objects
dataset/ETHPy150Open mozilla/inventory/mozdns/mozbind/builder.py/DNSBuilder.build_views--crossover with--dataset/ETHPy150Open openstack/git-upstream/git_upstream/lib/pygitcompat.py/GitUpstreamCompatCommit.list_from_string