mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 02:48:38 -04:00
* repos.yaml imports by diffing repos.yaml declares one section, its Repos keyed by repo_url_key (another URL of the same Repo is that Repo), comparing name, description, directory, Tag, mode, branch, submodules, frequency and clone token (a missing directory or clone token keeps the database's). An unchanged import writes nothing (every import rewrote every Repo and its Download). An invalid entry is skipped and counted, and its Repo is kept; before, a Repo whose entry failed validation was deleted. New Repos are created inside the import's one write: recurring_download (via get_or_create_download and _set_repository_download) takes commit=False, and the URL is not looked up again for each new Repo (O(N^2)). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * repos.yaml: a branch URL is keyed by its Repo's URL file_rows keyed the raw URL, but stores parse_repo_url's URL, which turns a forge's branch URL (GitHub /tree/<branch>, GitLab /-/tree/<branch>) into the repo URL and a branch. The entry looked like a new Repo: its insert hit the existing Repo's name (rolling back every import of that file), and an invalid such entry did not protect its Repo from deletion. Rows and invalid keys now use the parsed URL; a URL that cannot be parsed is skipped by its raw key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| test_api.py | ||
| test_config.py | ||
| test_config_import.py | ||
| test_downloader.py | ||
| test_extras.py | ||
| test_import.py | ||
| test_lib.py | ||
| test_never.py | ||
| test_ownership.py | ||
| test_search.py | ||