'Return the repository and the associated latest installable changeset_revision (including
# updates) for the repository defined by the received repo_info_dict.'

def get_components_from_repo_info_dict(self, repo_info_dict):

    for (repository_name, repo_info_tup) in repo_info_dict.items():
        (description, repository_clone_url, changeset_revision, ctx_rev, repository_owner, repository_dependencies, tool_dependencies) = repository_util.get_repo_info_tuple_contents(repo_info_tup)
        repository = repository_util.get_repository_by_name_and_owner(self.app, repository_name, repository_owner)
        repository_metadata = metadata_util.get_current_repository_metadata_for_changeset_revision(self.app, repository, changeset_revision)
        if repository_metadata:
            return (repository, repository_metadata.changeset_revision)
    return (None, None)
