      verbose: bool = False,
      silent: bool = False,
      force: bool = False,
  ) -> bool:
      """Re-run the DVC commands in dry mode and update dvc.yml file in the
      project directory. The file is auto-generated based on the config.
      """
      config_hash = get_hash(config)
      path = path.resolve()
      dvc_config_path = path / DVC_CONFIG
      if dvc_config_path.exists():
 
</s> remove     silent: bool = False,
    verbose: bool = False,
 </s> add  </s> remove     check_clone_dest(dest)
    # When cloning a subdirectory with DVC, it will create a folder of that name
    # within the destination dir, so we use a tempdir and then copy it into the
    # parent directory to create the cloned directory
    dest = dest.resolve()
 </s> add     check_clone(name, dest, repo)
    project_dir = dest.resolve()
    # We're using Git and sparse checkout to only clone the files we need </s> remove @project_cli.command("update-dvc")
def project_update_dvc_cli(
    # fmt: off
    project_dir: Path = Arg(..., help="Location of project directory", exists=True, file_okay=False),
    verbose: bool = Opt(False, "--verbose", "-V", help="Print more info"),
    force: bool = Opt(False, "--force", "-F", help="Force update DVC config"),
    # fmt: on
):
    config = load_project_config(project_dir)
    updated = update_dvc_config(project_dir, config, verbose=verbose, force=force)
    if updated:
        msg.good(f"Updated DVC config from {CONFIG_FILE}")
    else:
        msg.info(f"No changes found in {CONFIG_FILE}, no update needed")


app.add_typer(project_cli, name="project")
 </s> add ###########
# HELPERS #
########### </s> remove     dest: Path, *, git: bool = False, silent: bool = False, analytics: bool = False
 </s> add     project_dir: Path,
    *,
    git: bool = False,
    silent: bool = False,
    analytics: bool = False,
    """Re-run the DVC commands in dry mode and update dvc.yaml file in the
    project directory. The file is auto-generated based on the config. The
    first line of the auto-generated file specifies the hash of the config
    dict, so if any of the config values change, the DVC config is regenerated.

    path (Path): The path to the project directory.
    config (Dict[str, Any]): The loaded project config.
    verbose (bool): Whether to print additional info (via DVC).
    silent (bool): Don't output anything (via DVC).
    force (bool): Force update, even if hashes match.
    RETURNS (bool): Whether the DVC config file was updated.
      verbose: bool = False,
      silent: bool = False,
      force: bool = False,
  ) -> bool:
    """Re-run the DVC commands in dry mode and update dvc.yaml file in the
    project directory. The file is auto-generated based on the config. The
    first line of the auto-generated file specifies the hash of the config
    dict, so if any of the config values change, the DVC config is regenerated.

    path (Path): The path to the project directory.
    config (Dict[str, Any]): The loaded project config.
    verbose (bool): Whether to print additional info (via DVC).
    silent (bool): Don't output anything (via DVC).
    force (bool): Force update, even if hashes match.
    RETURNS (bool): Whether the DVC config file was updated.
    """Re-run the DVC commands in dry mode and update dvc.yaml file in the
    project directory. The file is auto-generated based on the config. The
    first line of the auto-generated file specifies the hash of the config
    dict, so if any of the config values change, the DVC config is regenerated.

    path (Path): The path to the project directory.
    config (Dict[str, Any]): The loaded project config.
    verbose (bool): Whether to print additional info (via DVC).
    silent (bool): Don't output anything (via DVC).
    force (bool): Force update, even if hashes match.
    RETURNS (bool): Whether the DVC config file was updated.
      """
      config_hash = get_hash(config)
      path = path.resolve()
      dvc_config_path = path / DVC_CONFIG
      if dvc_config_path.exists():
keep keep keep keep replace replace keep keep keep keep keep
 Tidy up, document and add custom clone logic 
spacy/cli/project.py