mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
A Repo is a Collection (kind='repo') plus a `repository` row, kept up to date by a recurring Download handled by the new `git` downloader. * Full history by default (all branches and tags, no --prune; a force push saves the old HEAD under refs/wrolpi/backup/); snapshot mode (--depth 1) and a pinned branch are optional. `/tree/<branch>` URLs select a branch. * git runs HTTPS-only, never prompts, never runs hooks, and checks out symlinks as plain files. Upstream disappearing defers the download with git's error; the local copy is kept. * Repos are cloned to `repos_destination` (repos/%(repo_tag)s/%(repo_name)s) and the `repos` directory is always ignored, so repo files are never indexed. * repos.yaml is the source of truth (import, dump, backup restore). * /api/repos: list, create, get, edit, delete (files kept unless delete_files), update now, and a per-directory file tree. Tagging uses the collections tag endpoint. Also: * run_command/process_runner can merge stderr into stdout (git writes progress to stderr). * move_collection deletes an old directory that only holds empty directories (the move left an emptied .git behind). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 lines
60 B
Python
3 lines
60 B
Python
from .downloader import GitDownloader # noqa
|
|
|
|
__all__ = []
|