* erepo: fix relative urls for remotes (#2756)
* erepo: add test case for relative path remotes (#2756)
* Remove unused argument
* erepo: move handling of relative remotes to a separate method (#2756)
* erepo: don't manually build paths on test (#2756)
* erepo: refactor handling of missing or relative upstream (#2756)
* erepo: move handling of source repo resource to `_fix_upstream` (#2756)
* erepo: improve relative remote tests (#2756)
- use `tmp_dir` fixture
- commit config file changes
* erepo: Remove comment (#2756)
* erepo: use scm_add to commit too, no need for separate scm.commit call (#2756)
* erepo: minor refactoring in `_fix_upstream` (#2756)
* erepo: add comment explaining that old relative paths are restored (#2756)
- code moving during git pull won't affect any erepos
- source tag move will work as expected
- source cache dir setting will never break havoc
- cache is reused between all clones from same source
Some things are fixed along the way:
- no cache shared between incompatible funcs
- some incosistent exceptions are now consistent
- import updates for git files now works both for dvc and git repos
- "auto-generated-upstream already exists" fixed
- dvc.api.open()/read() works with git repos now
Fixes#3124, #2976. Closes#3172.
* ui/perf: do not clone same repo multiple times
Closes#2490
External repos are still created in /tmp. They might be reused until
main() end. If no perfect match is found then a repo with the same url
is copied (not cloned again) and adjusted to fit a request: rev and
cache_dir.
NOTE: test_download_error_pulling_imported_stage() was modified to not
rely on clone error.
* test: fix import update test
* test: fix external_repo test under Windows
* dvc: fix non-master default branch for external repos
* dvc: remove unused .unset_dir() method