Kids VCS管理库。
项目描述
kids.vcs 是一个Python库,提供GIT辅助工具。如果它没有与github搞混,我可能会将其命名为 kids.git。
它是“Kids”(用于保持简单)库的一部分。
特性
使用 kids.vcs
您可以管理和访问您的git仓库、提交、日志或git配置。
兼容性
此代码适用于python2和python3。尚未在Windows上测试。
安装
您不需要下载代码的GIT版本,因为 kids.vcs 可在PyPI上获得。因此,您应该能够运行
pip install kids.vcs
如果您已下载了GIT源代码,则可以通过传统方式安装当前版本
python setup.py install
如果您没有GIT源代码,但想从github获取最新master或分支,您也可以
pip install git+https://github.com/0k/kids.vcs
或者甚至选择特定的修订版(分支/标签/提交)
pip install git+https://github.com/0k/kids.vcs@master
用法
让我们用一个新的git仓库来玩玩,首先创建临时目录
>>> from __future__ import print_function >>> import tempfile, os >>> old_cwd = os.getcwd() >>> tmpdir = tempfile.mkdtemp() >>> os.chdir(tmpdir)
现在让我们创建一个真正的git仓库
>>> from kids.vcs import git
此第一条命令将创建一个新目录并启动 git init,并将返回新的 GitRepos 对象
>>> r = git.GitRepos.create("repos", ... email="committer@example.com", ... name="The Committer")
您可能只想使用现有的目录并启动 git init,然后使用
>>> r = git.GitRepos.init("repos")
或者,如果想要使用已经初始化的现有文件夹
>>> r = git.GitRepos("repos")
默认情况下,使用当前目录,并且包含当前目录的最高级git仓库将用作主git仓库。
避免实例化不存在的git仓库
>>> git.GitRepos("/") Traceback (most recent call last): ... OSError: Not a git repository ('/' or any of the parent directories).
Git命令快捷方式
除了以下部分将公开的所有辅助工具之外,GitRepos对象提供了一个便捷的.git属性,可以直接访问git命令行
>>> print(r.git.rev_parse(is_bare_repository=True)) false
需要注意以下几点
方法名称是要启动的git命令
_(下划线)将被替换为-。
有2种不同的方法来使用这些方法
提供一个唯一的字符串数组,该数组将被简单地追加到命令行。
提供字符串位置参数和关键字参数
关键字参数是选项...
如果关键字由多个字符组成,则在其前面添加双横线
如果关键字是单个字符,则在其前面添加单横线
_(下划线)在关键字名称中将被替换为-。
然后将值追加到命令行上。
位置参数将追加在所有选项之后...
方法返回值是发送命令的空间删除标准输出。
为了说明这一点以及以下各点
>>> print(r.git.commit( ... message='new: first commit', ... author='Bob <bob@example.com>', ... date='2000-01-01 10:00:00', ... allow_empty=True)) [master (root-commit) ...] new: first commit Author: Bob <bob@example.com> Date: Sat Jan 1 10:00:00 2000 ... >>> print(r.git.tag("0.0.1")) >>> print(r.git.commit( ... message='new: second commit', ... author='Alice <alice@example.com>', ... date='2000-01-02 11:00:00', ... allow_empty=True)) [master ...] new: second commit Author: Alice <alice@example.com> Date: Sun Jan 2 11:00:00 2000 ... >>> print(r.git.tag("0.0.2"))
访问核心信息
您可以从git仓库本身获取有趣的信息
>>> print(r.toplevel) /.../repos >>> r.bare False >>> print(r.gitdir) /.../repos/.git
读取git配置
我们可以通过以下方式访问配置
>>> r.config <...GitConfig...> >>> print(r.config["core.filemode"]) true
您还可以直接实例化GitConfig类
>>> from kids.vcs import git >>> print(git.GitConfig("repos")["core.filemode"]) true
在没有仓库的情况下,应该使用当前仓库,如果没有,它应该像正常的git config一样回答
>>> git.GitConfig()["core.filemode"] Traceback (most recent call last): ... KeyError: 'core.filemode' >>> os.chdir("repos") >>> print(git.GitConfig()["core.filemode"]) true
Git提交访问
我们可以访问每个提交的有趣信息
>>> r.commit("HEAD") <GitCommit 'HEAD'>
并且有几种信息可用
>>> print(r.commit("HEAD").author_name) Alice >>> print(r.commit("master").subject) new: second commit
您可以访问所有这些
>>> print(", ".join(sorted(git.GIT_FORMAT_KEYS))) author_date, author_date_timestamp, author_email, author_name, body, committer_date_timestamp, committer_name, decorate_string, parent_list_string, raw_body, sha1, sha1_short, subject
还有一个便利的属性date。
>>> print(r.commit("0.0.2").date) 2000-01-02
日志
您可以通过以下方式访问所有提交
>>> list(r.log()) [<GitCommit ...>, <GitCommit ...>]
并指定要包含或排除的提交祖先(参见git log)
>>> list(r.log(["HEAD", "^0.0.1", ])) [<GitCommit ...>]
贡献
欢迎任何建议或问题。非常欢迎推送请求,请查看指南。
推送请求指南
您可以发送任何代码。我会查看它,并将其集成到代码库中,并将您作为作者。这个过程可能需要时间,并且如果遵循以下指南,将花费更少的时间
使用PEP8或pylint检查您的代码。尽量保持80列宽。
按最小的关注点分离您的提交。
每个提交都应该通过测试(以便进行易于二分搜索)
每个功能/错误修复提交都应该包含代码、测试和文档。
欢迎优先进行带有排版或代码外观更改的小提交。这些应该在提交摘要中用!minor标记。
提交消息应遵循gitchangelog规则(检查git日志以获取示例)
如果提交修复了问题或完成了功能的实现,请在摘要中提及。
如果您对以下未回答的指南有任何疑问,请检查当前的git log,您可能会找到以前的提交,它将向您展示如何处理您的问题。
许可证
版权(c)2019 Valentin Lab。
根据BSD许可证许可。
变更日志
0.0.3 (2019-04-02)
新功能
添加GitUrl作为访问远程git仓库URL部分的便利方式。[Valentin Lab]
添加了ls_remote(url)、remote_url_reachable(url)、query_remote_for_ref(url, ref)以与远程仓库一起工作。[Valentin Lab]
在模块中直接提供对 git 命令行的快捷方式。[Valentin 实验室]
修复
Python 3.7 兼容性修复。[Valentin 实验室]
0.0.2 (2018-04-09)
新功能
主要更新。[Valentin 实验室]
GitCommit:不再识别魔法标识符 LAST。
GitCommit:添加了新的属性来访问提交的直接信息 sha1_short、author_email、parent_list_string、decorate_string。
GitCommit:添加了使用 trailer_LABEL 属性的 Pythonic 访问通用尾部值的权限。支持多值尾部值。
GitCommit:添加了特定的 authors、author_names 特殊属性,利用 Co-Authored-By 尾部值和提交作者提供完整的作者列表。
GitCommit:新的 parents 属性用于获取 GitCommit 父级列表。
GitCommit:新的 tags_name 属性用于获取当前提交的标签列表,包括 tags,它通过新的 GitTag 对象遍历当前提交,以及 .tag(label) 方法通过其标签实例化当前提交的 GitTag。
GitCommit:支持 <(小于)操作符,尽可能与命令 git log 提供的提交顺序关系相匹配。
GitCommit:支持 in(.__contains__(..))操作符,与祖先关系相匹配。
新的 GitTag``object 代表注解标签和非注解标签,有关用法请参阅 README.rst。
GitRepos:新的 .create(..) 类方法用于创建新的 git 仓库。
GitRepos:新的 .init(..) 类方法用于从现有仓库创建新的 git 仓库。
GitRepos:新的 .Tag(label) 方法用于从给定的标签获取 GitTag 对象。
GitRepos:将 .commit(..) 方法重命名为 .Commit(..)。旧方法仍保留以兼容性原因。
GitRepos:将 .config(..) 方法重命名为 .Config(..)。旧方法仍保留以兼容性原因。
GitRepos:API 变更:.log(..) 方法现在更接近于 git log 命令行的使用,已移除 includes、excludes、include_merge 参数。请参阅文档以获取更多信息。
修复
使用 GitRepos.log() 时捕获了坏仓库。[Valentin 实验室]
GitConfig() 在没有参数时会失败。[Valentin 实验室]
0.0.1 (2015-02-05)
首次导入。[Valentin 实验室]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。