          try:
              # If these fail, we don't want to output an error or info message.
              # Try with tracking the source first, then just downloading with
              # DVC, then a regular non-DVC download.
              dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
              print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
          except subprocess.CalledProcessError:
              dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
              print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
              run_command(["dvc", "add", str(dest_path)])
          except subprocess.CalledProcessError:
              # TODO: replace curl
              run_command(["curl", url, "--output", str(dest_path), "--progress-bar"])
              run_command(["dvc", "add", str(dest_path)])
      if checksum and checksum != get_checksum(dest_path):
 
</s> remove     check_asset(url)
 </s> add     """Fetch an asset from a given URL or path. Will try to import the file
    using DVC's import-url if possible (fully tracked and versioned) and falls
    back to get-url (versioned) and a non-DVC download if necessary. If a
    checksum is provided and a local file exists, it's only re-downloaded if the
    checksum doesn't match.

    project_path (Path): Path to project directory.
    url (str): URL or path to asset.
    checksum (Optional[str]): Optional expected checksum of local file.
    """
    url = convert_asset_url(url) </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     silent: bool = False,
    verbose: bool = False,
 </s> add  </s> remove     # TODO: support loading from GitHub URLs? Automatically convert to raw?
 </s> add  </s> remove         cmd = ["dvc", "get", repo, name, "-o", str(tmp_dir)]
        if verbose:
            cmd.append("--verbose")
        if silent:
            cmd.append("--quiet")
        print(" ".join(cmd))
        run_command(cmd)
        shutil.move(str(tmp_dir / Path(name).name), str(dest))
 </s> add         cmd = f"git clone {repo} {tmp_dir} --no-checkout --depth 1 --config core.sparseCheckout=true"
        run_command(shlex.split(cmd))
        with (tmp_dir / ".git" / "info" / "sparse-checkout").open("w") as f:
            f.write(name)
        run_command(["git", "-C", tmp_dir, "fetch"])
        run_command(["git", "-C", tmp_dir, "checkout"])
        shutil.move(str(tmp_dir / Path(name).name), str(project_dir))
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
          try:
              # If these fail, we don't want to output an error or info message.
              # Try with tracking the source first, then just downloading with
              # DVC, then a regular non-DVC download.
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
            try:
                dvc_cmd = ["dvc", "import-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
            except subprocess.CalledProcessError:
                dvc_cmd = ["dvc", "get-url", url, str(dest_path)]
                print(subprocess.check_output(dvc_cmd, stderr=subprocess.DEVNULL))
                run_command(["dvc", "add", str(dest_path)])
          except subprocess.CalledProcessError:
              # TODO: replace curl
              run_command(["curl", url, "--output", str(dest_path), "--progress-bar"])
              run_command(["dvc", "add", str(dest_path)])
      if checksum and checksum != get_checksum(dest_path):
keep keep keep keep replace replace replace replace replace replace keep keep keep keep keep
 Tidy up, document and add custom clone logic 
spacy/cli/project.py