def build_revision_and_diff()

in backend/code_review_backend/issues/management/commands/load_issues.py [0:0]


    def build_revision_and_diff(self, data, task_id):
        """Build or retrieve a revision and diff in current repo from report's data"""
        try:
            head_repository = self.get_or_create_repository(data["repository"])
        except ValueError:
            return None, None

        try:
            base_repository = self.get_or_create_repository(data["target_repository"])
        except ValueError:
            return None, None

        revision, _ = head_repository.head_revisions.get_or_create(
            phabricator_id=data["id"],
            defaults={
                "phabricator_phid": data["phid"],
                "title": data["title"],
                "bugzilla_id": int(data["bugzilla_id"])
                if data["bugzilla_id"]
                else None,
                "base_repository": base_repository,
            },
        )
        diff, _ = revision.diffs.get_or_create(
            id=data["diff_id"],
            defaults={
                "repository": head_repository,
                "phid": data["diff_phid"],
                "review_task_id": task_id,
                "mercurial_hash": data["mercurial_revision"],
            },
        )
        return revision, diff