def METHOD_NAME(
    ctx,
    output_format,
    crs,
    output_path,
    exit_code,
    json_style,
    only_feature_count,
    add_feature_count_estimate,
    convert_to_dataset_format,
    diff_files,
    html_template,
    args,
):
    """
    Show changes between two commits, or between a commit and the working copy.
    REVISIONS -
    - if not supplied, the default is HEAD, to diff between HEAD and the working copy.
    - if a single revision is supplied: commit-A - diffs between commit-A and the working copy.
    - if supplied with the form: commit-A...commit-B - diffs between commit-A and commit-B.
    - supplying two seperate revisions: commit-A commit-B - also diffs between commit-A and commit-B
    - if supplied with the form: commit-A..commit-B - diffs between (the common ancestor of
    commit-A and commit-B) and (commit-B).
    To list only particular changes, supply one or more FILTERS of the form [DATASET[:PRIMARY_KEY]]
    """
    repo = ctx.obj.get_repo(allowed_states=KartRepoState.ALL_STATES)
    options, commits, filters = parse_revisions_and_filters(repo, args)
    output_type, fmt = output_format
    assert len(commits) <= 2
    if len(commits) == 2:
        if ".." in commits[0] or ".." in commits[1]:
            raise click.BadParameter(
                f"Can only show a single range - can't show {', '.join(commits)}"
            )
        commit_spec = "...".join(commits)
    elif len(commits) == 1:
        commit_spec = commits[0]
    else:
        commit_spec = "HEAD"
    if only_feature_count:
        return feature_count_diff(
            repo,
            output_type,
            commit_spec,
            output_path,
            exit_code,
            fmt,
            only_feature_count,
        )
    from .base_diff_writer import BaseDiffWriter
    diff_writer_class = BaseDiffWriter.get_diff_writer_class(output_type)
    diff_writer = diff_writer_class(
        repo,
        commit_spec,
        filters,
        output_path,
        json_style=fmt,
        target_crs=crs,
        diff_estimate_accuracy=add_feature_count_estimate,
        html_template=html_template,
    )
    diff_writer.convert_to_dataset_format(convert_to_dataset_format)
    diff_writer.full_file_diffs(diff_files)
    diff_writer.write_diff()
    if exit_code or output_type == "quiet":
        diff_writer.exit_with_code()