Python中的Git LFS客户端实现
项目描述
Giftless Client
一个使用Python实现的Git LFS客户端库,兼容一般的Git LFS服务器,特别是Giftless Git LFS服务器。
giftless-client
已在Python 2.7和3.6+上进行了测试。
安装
您可以直接从pypi安装此库
(venv) $ pip install giftless-client
API
此模块公开一个主要类:LfsClient
。通常,您只需要使用此类来执行大多数Git LFS操作。客户端提供了对低级LFS API命令的包装,例如batch
,以及上传和下载文件的高级方法。
创建客户端实例
from giftless_client import LfsClient
client = LfsClient(
lfs_server_url='https://git-lfs.example.com', # Git LFS server URL
auth_token='somer4nd0mT0ken==', # Bearer token if required by the server (optional)
transfer_adapters=['basic'] # Enabled transfer adapters (optional)
)
transfer_adapters
参数是可选的,表示与服务器协商时按优先级支持的传输适配器列表;通常,没有必要提供此参数。
从LFS存储下载文件
下载一个文件并将其保存到文件对象。
download(file_obj, object_sha256, object_size, organization, repo, **extras)
file_obj
预期为一个以二进制模式打开进行写入的文件对象object_sha256
:要下载的对象的sha256object_size
:要下载的对象的大小organization
,repo
:用于生成形式为organization/repo
的批量请求前缀extras
添加到带有前缀x-
的批量请求属性字典中。这主要是Giftless特定的。
请注意,下载本身是由所选的传输适配器执行的。
将文件上传到LFS存储
将文件上传到LFS存储
upload(file_obj, organization, repo, **extras)
file_obj
:可读、可寻址的文件对象- 其他参数与下载相同
请注意,上传本身是由所选的传输适配器执行的。
发送LFS 批量
API请求
向LFS服务器发送一个批量
请求
batch(prefix, operation, objects, ref=None, transfers=None)
prefix
: 添加到LFS服务器URL,例如,如果prefix=abc
并且客户端使用服务器URL为https://git-lfs.example.com
创建,则批量请求通过POST发送到https://git-lfs.example.com/abc/objects/batch
- 其他所有参数:请参阅批量命令了解定义
示例
client.batch(
prefix='myorg/myrepo',
operation='download',
objects={
"oid": "12345678",
"size": 123
}
)
命令行使用
尽管giftless-client
的主要用途是作为其他项目的客户端库,但此模块确实包含一些命令行功能。
运行以下命令以获取更多信息
(venv) $ giftless-client --help
许可证
Giftless Client是免费软件,根据MIT许可证条款分发。有关详细信息,请参阅LICENSE。
Giftless Client版权所有 © 2020 Datopian / Viderum Inc.