Skip to main content

pysvnlite

轻量、非交互的 Subversion 命令行封装和 XML 解析库,适合自动化脚本、资产历史查询和工作副本管理。

要求 Python >=3.9,并在 PATH 中提供原生 svn 客户端。库本身没有第三方运行时依赖,也不安装 svnpypi CLI。

python -m pip install pysvnlite
from pysvnlite import SVNRepo

repo = SVNRepo("https://svn.example.com/project/trunk", timeout=30)
for entry in repo.log(limit=10, verbose=True):
    print(entry.revision, entry.author, entry.changed_paths)

能力与边界

  • info/log/list/status/blame 等结构化读取,返回类型化模型。
  • 工作副本检出、更新、增删、属性、提交、冲突检查;URL mkdir/delete 支持提交信息。
  • 历史 peg revision、二进制读取、原子文件下载。
  • 可选超时,有界日志滚盘、增量 XML 与路径事件;通过 CAPABILITIES 检查 bounded_verbose_log_v1
  • 所有 SVN 调用添加 --non-interactive;认证、ACL、传输安全和凭据缓存由原生 SVN 管理。
  • 不提供服务端、Web UI、依赖解析器或自动删除策略。

完整示例见 API 使用指南,平台限制见 Windows 路径说明

从旧版 svnpypi 迁移

本库从 narutozb/svnpypiv0.1.7(提交 ce6191be4122eb54bbfbbed16bad46413f222e62)拆出,保留 MIT 许可和作者信息。独立发行从 0.2.0 开始,from pysvnlite import SVNRepo 等现有导入保持不变。

不要对旧捆绑版本直接执行普通升级。 本机已验证:从 svnpypi 0.1.7 直接升级时,pip 先安装新依赖,再卸载旧包,会删除新库的同名文件并导致导入失败。pip check 仅检查元数据,不能证明文件完整。旧 svnpypi<=0.1.7 曾直接拥有 pysvnlite/ 文件;不要混装或在拆分后降级安装旧发行包。推荐新建虚拟环境;需要原地迁移时,先卸载旧发行包,再重新安装:

python -m pip uninstall -y svnpypi pysvnlite
python -m pip install "pysvnlite==0.2.0"
python -m pip check

仍需要包注册 CLI 时,最后安装 svnpypi>=0.2.0,由其依赖声明安装本库。维护人员应先发布本库,再发布依赖它的 svnpypi

开发与发布

python -m pip install -e ".[dev,release]"
python -m ruff check src tests scripts
python -m mypy src scripts
python -m pytest -q
python scripts/release_pypi.py

测试仅写入临时 file:// SVN 仓库;缺少 svnsvnadmin 时集成测试跳过。CI 覆盖 Linux Python 3.9/3.12/3.14 与 Windows Python 3.12。Python 3.9 仅保留兼容性,生产使用仍受官方维护的运行时。

发布脚本默认不上传,检查 wheel/sdist 内容白名单、py.typed、Twine 元数据,并通过 python -I -S 从临时安装目录导入,避免本机环境掩盖漏包。AI 文件、测试、CI、发布脚本和 svnpypi 源码均不进入构建包;sdist 允许 Hatchling 为重建附带的 .gitignore

正式上传必须具有干净工作区、完整检查和已原样推送的 annotated 标签:

git tag -a v0.2.0 -m "pysvnlite 0.2.0"
git push origin v0.2.0
python scripts/release_pypi.py --upload --repository pypi --confirm-version 0.2.0

首次发布建议先用独立的 TestPyPI 凭据验证:python scripts/release_pypi.py --upload --repository testpypi。正式 PyPI token 不能用于 TestPyPI。只在隐藏密码提示中输入 token,不写入源码、命令行或日志。

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysvnlite-0.2.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysvnlite-0.2.0-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file pysvnlite-0.2.0.tar.gz.

File metadata

  • Download URL: pysvnlite-0.2.0.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pysvnlite-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e1dd562a30aefa8835ce868353835d2a4889e8b116e32618f0f82f5304d8ece1
MD5 3db563ae7e0e298e307cdc95d248166c
BLAKE2b-256 86a1f6879ed24c9b6ff4ff4534e4a6bbf6a10c0a0a8873bc4971c0bff3c7c360

See more details on using hashes here.

File details

Details for the file pysvnlite-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pysvnlite-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pysvnlite-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9dbf950703c5ceabd4ff95d68ef320127c7b8b28b0aeaed23e8784492a4e384b
MD5 e3d02482bdd61ed10af275f30f4f7061
BLAKE2b-256 310572a802f367de8e00a3d30c778d70a7bbe21a2e8f75ef88971846182d5f77

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.2

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page