code: def build_branch_structure(self, model, skip):
          
          self._history = dict()
          self._history["commits"] = commits = dict()
          self._history["branches"] = branches = dict()
          for branch in self._repo.refs:
              LOGGER.debug(branch.name)
              if branch.name in skip:
                  continue
              branches[branch.name] = branch_history = list()
              latest = branch.commit
              history = [latest] + list(latest.iter_parents())
              for commit in history:
                  # Find model in committed files.
                  if not is_modified(model, commit):
                      LOGGER.info(
                          "The model was not modified in commit '{}'. "
                          "Skipping.".format(commit))
                      continue
                  branch_history.append(commit.hexsha)
                  if commit.hexsha not in commits:
                      commits[commit.hexsha] = sub = dict()
                      sub["timestamp"] = commit.authored_datetime.isoformat(" ")
                      sub["author"] = commit.author.name
                      sub["email"] = commit.author.email
          LOGGER.debug("%s", json.dumps(self._history, indent=2))
docs: Inspect and record the repo's branches and their history.