def get_commit_message_parts(commit_hash=None, current_branch=None):
    """Gets commit message, split into subject and remaining description.

    Args:
        commit_hash: String; the hash of the commit which has the subject we
            wish to retrieve. Defaults to None.
        current_branch: String; containing the name of a branch. Defaults to
            None and in this case is replaced by a call to get_current_branch.

    Returns:
        Tuple of string containing the commit subject and remaining description
            as strings.

    Raises:
        GitRvException: If the commit subject has more than 100 characters.
        GitRvException: If the commit message does not begin with the commit
            subject.
    """
    commit_hash = commit_hash or get_head_commit(current_branch=current_branch)

    commit_subject = get_commit_subject(commit_hash)
    if len(commit_subject) > 100:
        raise GitRvException((commit_subject,) % SUBJECT_TOO_LONG_TEMPLATE)

    commit_message = get_commit_message(commit_hash)
    # This can occur if there is no newline between the subject and the
    # description. For example, if the commit is
    # """This commit does X.
    # It also does Y.
    #
    # Particularly it relates to Z."""
    # Then the subject would be
    # "This commit does X. It also does Y."
    # instead of the expected
    # "This commit does X."
    # and it would fail this test since the commit message starts with
    # "This commit does X.\nIt also does Y."
    if not commit_message.startswith(commit_subject):
        raise GitRvException(MISMATCHED_COMMIT_SUBJECT_TEMPLATE %
                             (commit_message, commit_subject))

    commit_description = commit_message.split(commit_subject, 1)[1].lstrip()
    return commit_subject, commit_description
dataset/ETHPy150Open googlearchive/git-rv/utils.py/get_commit_message_parts/swapped operands of `%`