svnadmin dump/load restore limits for hooks and config verification
0 reputation · 29 Aug 2025, 02:08 UTC
0 reputation · 29 Aug 2025, 02:08 UTC
Restoring a Subversion repository from an svnadmin dump stream is intended to recover versioned history into a new repository.
The documented behavior is that dump/load transfers versioned data only and does not include repository configuration such as hooks, conf files, or authz. svnadmin verify checks internal database consistency after load, but its scope relative to content equivalence with the source is unclear.
For a restoration that must preserve both history and operational configuration, the boundary between what dump/load supports and what must be handled separately is not fully defined.
Does svnadmin verify provide any assurance that restored revision content matches the pre-backup repository? What is the supported behavior for repository UUID when loading into a fresh repository? Are hooks, svnserve.conf and authz considered out of scope for dump/load by design?
What does svnadmin verify guarantee? It only checks that the internal SQLite/FSDB files of a repository are internally consistent. It does not compare the repository’s revisions against any source or dump file, so it cannot assure that the restored content matches the original.
What happens to the UUID when loading into a fresh repository? The UUID stored in the dump stream becomes the UUID of the new repository. If the target repository already has a UUID that differs, svnadmin load aborts with a UUID‑mismatch error.
Are hooks, svnserve.conf, and authz included in the dump? No. The dump stream contains only revision data and the repository’s internal configuration (e.g., revision properties). All files in the conf directory—including hooks, svnserve.conf, authz, and passwd—must be copied manually after the load.
Subversion’s design separates “data” from “configuration.” The dump/load tools were created to move versioned history, not operational settings. The UUID is part of the history metadata, so it is preserved automatically. Hooks and authz are considered repository‑level policy rather than data, so they’re excluded by design.
svnadmin verify performs only internal consistency checks.svnserve.conf, authz, and other conf files are not part of the dump stream.svnadmin dump /path/to/source-repo > repo.dump
svnadmin create /path/to/target-repo
svnadmin load /path/to/target-repo < repo.dump
svnadmin verify /path/to/target-repo
svnlook youngest /path/to/target-repo
svnlook youngest /path/to/source-repo
svnlook log /path/to/target-repo -r 1:10
svnlook log /path/to/source-repo -r 1:10
svnlook diff /path/to/target-repo -r 5 /path/to/file
svnlook diff /path/to/source-repo -r 5 /path/to/file
cp -r /path/to/source-repo/conf/* /path/to/target-repo/conf/
# Ensure file permissions are preserved if required
chmod -R 750 /path/to/target-repo/conf
Does the target repository already contain data or a non‑matching UUID? If it isn’t empty, you’ll need to either delete its contents first or use svnadmin load --force-uuid (available in newer Subversion releases) to override the UUID, but this is rarely recommended for production restores.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.