Avoid raising errors in `data_status()` when Git HEAD does not contain a DVC
repository. Instead, fall back to an empty index.
Tests now cover both unborn and committed Git repos, with and without subdirs.
* Prioritize DVC_SITE_CACHE_DIR over core.site_cache_dir
* Add tests for proper prioritization of env var and config
* Tests require python-3.9 compatible typing, use Optional
* Remove comment
* Fixup
* DVC_SITE_CACHE_DIR must be sent first, deal with platformdirs afterwards
* Test should check default behaviour when no env var is set
* Add test: site_cache_dir() must return the env var if set
Clear logs before assertions so that logs from other tests do not interfere with the test.
Some destructors may also run in between due to GC, so hopefully this will fix that issue too,
or reduce the chances of it happening.
See
https://github.com/iterative/dvc/actions/runs/14873217814/job/41775314725#step:6:97.
```console
> assert first(caplog.messages) == expected_message
E assert 'RC: discarding all clients' == "Output 'path... 'stage.dvc'."
E
E + RC: discarding all clients
E - Output 'path'(stage: 'stage.dvc') is missing version info. Cache for it will not be collected. Use `dvc repro` to get your pipeline up to date.
E - You can also use `dvc commit stage.dvc` to associate existing 'path' with stage: 'stage.dvc'.
```
This `_get_remote_config()` should use `uninitialized=True` so that it supports
more broader kinds of broken/partially-initialized repositories, including some that have
`.dvc` directory missing, or `.git` directory missing.
This partially reverts #10719. #10608 is also fixed, and no longer requires `core.no_scm` to be passed.
This was already supported by `dvc.api.get_url` as it uses `uninitialized=True`, but this was not respected
in `_get_remote_config()` where it would fail before.
That said, this whole `open_repo`/`_get_remote_config` is terribly broken. For one, it is opening
a local repository, and forcing it's remote config to a repository opened with `Repo(rev=...)`,
where the config may be different.
* Forward args to _get_remote_config and honour core/no_scm if present
* Pass full config, except cache, to Repo()
* Avoid modifying original kwargs contents
* Simplify if config
* Add test
* Relax error matching.. .. Avoid windows vs unix paths
* Update dvc/repo/open_repo.py
---------
Co-authored-by: skshetry <[email protected]>