Skip to main content

pysvnlite

轻量、非交互的 Subversion 命令行封装和 XML 解析库。用于自动化脚本、资产历史查询与工作副本管理,不需要运行 SVN 包注册服务。

当前版本:0.2.2。修复 SVN 超时后的进程树回收和管道阻塞,保持现有公开 API。

安装

要求 Python >=3.9 和 PATH 中可用的原生 svn。本库无第三方运行时依赖,包含 py.typed,不会安装 svnpypi CLI。生产请选择仍受官方维护的 Python

在已激活的新虚拟环境中执行:

python -m pip install "pysvnlite==0.2.2"
python -c "from importlib.metadata import version; from pysvnlite import SVNRepo; print(version('pysvnlite'))"

旧 svnpypi<=0.1.7 用户先看安装与迁移 旧捆绑包与独立包拥有同名文件,普通升级或混装后卸载会破坏导入。推荐新环境;原地迁移必须先卸载再安装,不能只依赖 pip check。

只读示例

替换 URL 为你有读取权限的仓库;认证预先通过原生 SVN 配置。

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)

API 范围

场景 API
元数据、目录、状态 infoliststatus
历史与变更路径 logiter_logiter_log_eventschanged_files_of_commit
历史文件、差异、逐行归属 catcat_to_filediffblame
工作副本管理 checkoutupdateswitchadddeleterevertcommit
属性及其他操作 propsetpropgetproplistpropdelcopymovemkdirexportcleanupresolvelockunlock

完整签名和返回模型见 API 参考,组合用法见 API 使用指南

安全与兼容边界

  • 所有 SVN 调用添加 --non-interactive;凭据、ACL、证书和 SSH 配置由原生 SVN 管理。
  • 写操作会修改工作副本或提交远端,先在临时测试仓库验证。库不提供自动回滚或事务。
  • timeout=None 不设时限;日志的硬字节上限需要显式设置。事件在 SVN 输出捕获完毕后产生,不是网络实时流。
  • 0.2.2 统一文本、二进制、流式下载及提交路径的进程树超时清理,并限制终止后的管道等待;旧 0.2.1 及以下版本需升级。超时不是事务回滚,提交可能已在服务器完成。
  • cat_to_file 原子替换目标;失败保留旧文件。cat 会把整个文件读入内存。
  • 检出路径保护检测预期 .svn,但不是原生编码补丁。部分 Windows / TortoiseSVN 中文绝对路径仍受限,见 Windows 路径说明
  • SVNCommandError 提供分类;commit 的普通非零退出可通过 CommitResult.success 返回,调用方必须检查。详见 API 参考。
  • 网络认证、macOS 和全部 SSH 后代进程组合并未完整实测,不应从 CI 通过推断支持所有环境。

文档与维护

在开发虚拟环境、仓库根目录执行:

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

脚本默认不上传。wheel / sdist 只包含本库及必要元数据,不含 AI 文件、测试、CI 或 svnpypi 源码;sdist 另允许 Hatchling 附带的 .gitignore

本库从 svnpypi v0.1.7 拆出,独立发行从 0.2.0 开始;保留 MIT 许可和作者信息。需要包注册 CLI 时另行安装 svnpypi,两项目分别维护和发布。

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.2.tar.gz (22.8 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.2-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pysvnlite-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5719c514a8b5d97c76fd87ecca52df7e2cb0be490b804ddb142b10ee67eae6f1
MD5 3e7c363f6ddabff204d03ed4039b9520
BLAKE2b-256 610e7fc42f48dfd04c69c9b0c37129ebc4e69b077e8b9aa8e7c33a637d65d502

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pysvnlite-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8c22a261aecb1c102fdb5a625baa7c8b66bc0d9fef7b63336a013ec5f3d7bf79
MD5 ac6fcb435cc10fe925252addfc3a29ce
BLAKE2b-256 cc92ce252b2572f42c2f648a5d4b0eae8a96ce18daf796c614f4cf543c81628a

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

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