Changelog

3.1.43

一个明显的重大变化将是增加了不建议使用或用户警告,并极大地改进了打字。

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/GitPython/releases/tag/3.1.43

3.1.42

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/GitPython/releases/tag/3.1.42

3.1.41

此版本与安全相关,因为它修复了Windows上可能的任意代码执行。

有关详细信息,请参阅此公关:https://github.com/gitpython-developers/GitPython/pull/1792咨询即将在以下网站上提供:https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-2mqj-m65w-jghx

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/GitPython/releases/tag/3.1.41

3.1.40

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/GitPython/releases/tag/3.1.40

3.1.38

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/GitPython/releases/tag/3.1.38

3.1.37

此版本包含另一个安全修复程序,该修复程序进一步改进了符号引用的验证,从而正确修复了此cve:https://github.com/advisories/GHSA-cwvm-v4w8-q58c

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/67?closed=1

3.1.36

请注意,此版本应该是无操作的,它主要用于测试更改后的发布过程。

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/66?closed=1

3.1.35

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/65?closed=1

3.1.34

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/64?closed=1

3.1.33

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/63?closed=1

3.1.32

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/62?closed=1

3.1.31

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/61?closed=1

3.1.30

  • 使克隆人和其他人更难或不可能注入命令调用。有关详细信息,请参阅https://github.com/gitpython-developers/GitPython/pull/1518。请注意,这可能会对一些用户构成破坏性的更改,如果是这样,请让我们知道,我们会在此基础上添加一个退出选项。

  • 默认情况下禁止不安全的选项和协议,这可能是一个突破性的变化,但却是https://github.com/gitpython-developers/GitPython/issues/1515.的必要修复请查看PR以了解更多信息,以及在这些保护导致损坏的情况下如何绕过它们:https://github.com/gitpython-developers/GitPython/pull/1521.

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/60?closed=1

3.1.29

  • 使之成为 git.__version__ 再次出现。

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/59?closed=1

3.1.28

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/58?closed=1

3.1.27

  • 通过优化导入缩短了启动时间。

  • 修复了在拉/取时遇到长的远程路径名时可能会导致极大速度减慢的易受攻击性。

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/57?closed=1

3.1.26

  • 修复了读取索引时泄漏的文件描述符,这将导致无法在Windows上写入以前读取的索引。有关详细信息,请参阅https://github.com/gitpython-developers/GitPython/issues/1395。

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/56?closed=1

3.1.25

有关所有更改,请参阅以下内容。Https://github.com/gitpython-developers/gitpython/milestone/55?closed=1

3.1.24

  • 默认情况下,新添加的超时标志未启用,已重命名为KILL_AFTER_TIMEOUT

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/54?closed=1 https://github.com/gitpython-developers/gitpython/milestone/53?closed=1

3.1.23(猛击)

  • 这是第二个在引擎盖下有很多改进的类型化版本。

  • 一般信息:

    • Remove python 3.6 support

    • 在标准库中,在弃用之前删除distutil。

    • 将狮身人面像更新到4.1.12,并使用自动文档类型提示。

    • 将自述文件作为LONG_DESCRIPTION包含在PYPI上

    • 针对Github Actions上提供的最早和最新次要版本(如3.9.0和3.9.7)进行测试

  • 键入:

    • 将类型添加到所有函数。

    • 确保收集了py.type。

    • 使用DISALLOW_UNTYPED_DEFS、WARN_DRANSTORY_CASTS、WARN_UNREACHABLE提高类型的严格性。

    • 使用tying.NamedTuple和tying.OrderedDict现在下降了3.6。

    • 由于3.9.7和3.10.0-rc1中的新行为/错误,在运行时创建协议类ABC

    • 在更高版本之前不再使用tying.TypeGuard,以允许依赖库有时间进行更新。

    • 跟踪问题:https://github.com/gitpython-developers/GitPython/issues/1095

  • 运行时改进:

    • 将CLONE_MULTI_OPTIONS支持添加到子模块.add()

    • 除非必要,否则延迟调用get_user_id()以支持沙箱环境。

    • 为Handle_Process_Output()添加超时,以防thread.Join()挂起。

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/53?closed=1

3.1.20(猛击)

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/52?closed=1

3.1.19(猛击)

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/51?closed=1

3.1.18

  • 放弃对python3.5的支持,以减少打字的维护负担。较低级别的Python3.5补丁也会被打破。

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/50?closed=1

3.1.17

  • 修复3.1.16版中的问题(请参阅https://github.com/gitpython-developers/GitPython/issues/1238)

  • 修复3.1.15版中的问题(请参阅https://github.com/gitpython-developers/GitPython/issues/1223)

  • 添加更多静态类型信息

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/49?closed=1

3.1.16(猛击)

  • 修复3.1.15版中的问题(请参阅https://github.com/gitpython-developers/GitPython/issues/1223)

  • 添加更多静态类型信息

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/48?closed=1

3.1.15(猛击)

  • 添加对Python3.5的弃用警告

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/47?closed=1

3.1.14

  • Git.Commit对象现在有一个 replace 方法,该方法将返回具有已修改属性的提交副本。

  • 添加Python 3.9支持

  • 删除python 3.4支持

有关详情,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/46?closed=1

3.1.13

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/45?closed=1

3.1.12

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/44?closed=1

3.1.11

修复了3.1.10的回归。

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/43?closed=1

3.1.10

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/42?closed=1

3.1.9

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/41?closed=1

3.1.8

  • 在git配置文件中支持“includeIf”

  • 测试现在被排除在软件包之外,使它变得更小

有关更多详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/40?closed=1

3.1.7

  • 修复教程示例,这些示例在3.1.6中由于缺少路径更改而消失。

3.1.6

  • 大大减小了包装尺寸,参见https://github.com/gitpython-developers/gitpython/pull/1031

3.1.5

  • 回滚:包大小显著减小,不再将测试放入包中。看到了吗https://github.com/gitpython-developers/gitpython/issues/1030

3.1.4

  • 所有的例外现在都在追踪他们的原因

  • 包的大小明显减小,不再将测试放入包中。

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/39?closed=1

3.1.3

有关详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/38?closed=1

3.1.2

  • 重新发布3.1.1,带有已知签名

具体内容如下:https://github.com/gitpython-developers/gitpython/milestone/37?关闭=1

3.1.1

  • 对PyOxidazer的支持,以前由于使用 __file__ .

具体内容如下:https://github.com/gitpython-developers/gitpython/milestone/36?关闭=1

3.1.0

  • 根据需要切换回使用gitdb包 (gitdb#59

3.0.9

  • 将GitDB(gitdb2)版本要求限制为<4

  • 从测试要求中删除旧的鼻子库

错误修正

  • 更改为在获取有关符号引用的信息时使用UTF-8而不是默认编码 (#774

  • 修复了标记对象消息的解码,以替换无效字节 (#943

3.0.8

  • 增加了对Python3.8的支持

  • 将GitDB(gitdb2)版本要求提高到>3

错误修正

  • 固定的 Repo.__repr__ 当子类化时 (#968

  • 删除了Python<3.4和旧的模拟库的兼容性垫片

  • 替换了不推荐使用的unittest别名和记录器.warn

  • 删除了旧的、不再使用的assert方法

  • 用unittest替换nose assert方法的用法

3.0.7

已正确签名的v3.0.6的重新发行版,带有新的签名(请参见 #980

3.0.6

注意:有一个问题导致此版本在没有签名的情况下发布到PyPI
请参阅v3.0.7和 #980

错误修正

  • Fixed warning for usage of environment variables for paths containing $ or % (#832, #961)

  • 添加了对解析Git内部日期格式(@<unix timestamp><timezone offset>的支持) (#965

  • 删除了Python 2和<3.3兼容垫片 (#979

  • 修复了中的GitDB(gitdb2)需求版本说明符格式要求.txt (#979

3.0.5-错误修复

具体内容如下:https://github.com/gitpython-developers/gitpython/milestone/32?关闭=1

3.0.4-错误修复

具体内容如下:https://github.com/gitpython-developers/gitpython/milestone/31?关闭=1

3.0.3-错误修复

有关(大多数)详细信息,请参见以下内容:https://github.com/gitpython-developers/gitpython/milestone/30?关闭=1

3.0.2-错误修复

  • 修复了安装问题

3.0.1-错误修复和性能改进

  • 修复一 performance regression 这会使某些工作负载降低50%

  • 添加 currently_rebasing_on method on Repo, see the PR

  • 修复不正确 requirements.txt which could lead to broken installations, see this issue 有关详细信息。

3.0.0-删除对Python2的支持

这样做的动机是在处理文件系统路径时改进unicode处理。Python2兼容性的引入是为了处理差异,我认为现在“停止”支持是个好主意,离Python2.7的正式维护仅5个月。

潜在的动机显然是我在思考python和unicode时的愤怒,这从一开始就很麻烦,至少在GitPython这样的老代码库中,在很多情况下完全不能正确处理编码。

已经迁移到使用 Rust 对于工具,我仍然看到正确处理编码并不是一件小事,但至少是这样 Rust 明确了在编译时必须做什么,允许编写一个在编译后几乎可以正常工作的软件。

同样,如果删除Python2支持给您带来不便,我深表歉意,请参阅2.1.13版,它将返回它。

有关(大多数)详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/27?关闭=1

或者运行看看标签v2.1.12和v3.0.0之间的区别:https://github.com/gitpython-developers/gitpython/compare/2.1.12…3.0.0。

2.1.15

  • 修复了中的GitDB(gitdb2)需求版本说明符格式要求.txt(后端口 #979

  • 将GitDB(gitdb2)版本要求限制为<3 (#897

2.1.14

  • 修复了将kwargs转换为Git命令参数时对0的处理(后端口从 #899

2.1.13-恢复python 2.7支持

对于由此造成的任何不便,我深表歉意。在semver之后,将在次要版本中引入向后不兼容的更改。

2.1.12-错误修复和功能

  • Git配置的多值支持和接口改进。感谢A.Jesse Jiryu Davis。

或者运行查看标签v2.1.11和v2.1.12之间的区别:https://github.com/gitpython developers/gitpython/compare/2.1.11…2.1.12

2.1.11-错误修复

有关(大多数)详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/26?关闭=1

或者运行查看标签v2.1.10和v2.1.11之间的区别:https://github.com/gitpython developers/gitpython/compare/2.1.10…2.1.11

2.1.10-错误修复

有关(大多数)详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/25?关闭=1

或者运行查看标签v2.1.9和v2.1.10之间的区别:https://github.com/gitpython developers/gitpython/compare/2.1.9…2.1.10

2.1.9-放弃对python 2.6的支持

有关(大多数)详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/24?关闭=1

或者运行查看标签v2.1.8和v2.1.9之间的区别:https://github.com/gitpython developers/gitpython/compare/2.1.8…2.1.9

2.1.8-错误修复

有关(大多数)详细信息,请参阅以下内容:https://github.com/gitpython-developers/gitpython/milestone/23?关闭=1

或者运行查看标签v2.1.7和v2.1.8之间的区别:https://github.com/gitpython developers/gitpython/compare/2.1.7…2.1.8

2.1.6-错误修复

  • 支持工作树

2.1.3-错误修复

遵循以下网址时,可以查看所有问题和PRS:https://github.com/gitpython-developers/gitpython/milestone/21?关闭=1

2.1.1-错误修复

遵循以下网址时,可以查看所有问题和PRS:https://github.com/gitpython-developers/gitpython/issues?Q=是%3aClosed+里程碑%3a%22v2.1.1+-+错误修复%22

2.1.0-更好的Windows支持!

特别感谢@Ankostis,他让这个发布成为可能(几乎)单手。gitpython是由用户运行的,他们的pr可以发挥所有的作用,它们保持了gitpython的相关性。非常感谢大家的贡献!

值得注意的修复

  • 这个 GIT_DIR 环境变量不重写 path 初始化时的参数 Repo 对象。但是,如果说 path 未定型的 GIT_DIR 将用于填充空隙。

遵循以下网址时,可以查看所有问题和PRS:https://github.com/gitpython-developers/gitpython/issues?Q=是%3aClosed+里程碑%3a%22v2.1.0+-+正确+Windows+支持%22

2.0.9-错误修复

  • tag.commit 现在将坚定承诺。

  • Repo 现在可以对对象进行酸洗,这有助于进行多处理。

  • Head.checkout() 现在处理分离的头,它将在何时返回 HEAD 而是引用。

  • DiffIndex.iter_change_type(...) 区分时产生更好的结果

2.0.8-功能和错误修复

  • DiffIndex.iter_change_type(...) 将索引与工作树进行比较时,会产生更好的结果。

  • Repo().is_dirty(...) now supports the path parameter, to specify a single path by which to filter the output. Similar to git status <path>

  • 此库创建的符号引用现在将用换行符写入,换行符以前已丢失。

  • blame() 现在正确地保留多行提交消息。

  • 不再通过向引用日志中写入多行注释来损坏它们。

2.0.7-新功能

  • IndexFile.commit(...,skip_hooks=False) 补充。此参数模拟

    行为 --no-verify 在命令行上。

2.0.6-修复和功能

  • 修正:远程输出解析器现在正确地匹配refs和其中的非ascii字符

  • API:diff现在已经 a_rawpathb_rawpathraw_rename_fromraw_rename_to 属性,它是其unicode路径对应项的原始字节等价物。

  • 修正:关于将关键字参数传递给python 2.6上的string decode()的类型错误。

  • 特点: setUrl API on Remotes

2.0.5-修复

  • 修复:获取信息行的解析器被一些合法行阻塞

2.0.4-修复

  • 修正:对于提交对象包含无效字节的情况,提交对象数据的解析器现在是健壮的。无效字符现在被替换,而不是被阻塞。

  • 修正:非ASCII路径现在正确解码并返回 .diff() 输出

  • 修复: RemoteProgress 现在将从消息中删除“、”前缀或后缀。

  • API:远程。 [取推拉] (…)方法现在允许 progress 参数是可调用的。这就避免了通常只使用一个实现的方法来创建自定义类型。

2.0.3-修复

  • 修复:插入 git-blame --incremental 当包含提交消息时中断的输出分析器 \r 字符

  • 修正:进度处理程序异常不再被捕获,这通常只是隐藏以前的错误。

  • 修复:The Git.execute 方法现在将重定向 stdoutdevnull 如果 with_stdout 为假,这是基于参数文档的预期行为。

2.0.2-修复

  • 修复:源包不包括 * .pyc文件

  • 修复:源包不包括文档源

2.0.1-修复

  • 修复:远程输出解析器现在正确地将refs与其中的“@”匹配。

2.0.0-功能

请注意,由于中断更改,我们必须增加主版本。

  • IMPORTANT :此版本放弃了对python 2.6的支持,python2.6被python维护人员正式否决。

  • CRITICALDiff 使用补丁输出创建的对象现在将不再带有---和+++标题行。所有差异现在直接从@@标题行开始。依赖于旧行为的用户现在可以(可靠地)从a ou path和b ou path属性中读取这些信息,而无需手动解析这些行。

  • Commit 现在有了额外的属性 authored_datetimecommitter_datetime (获取python datetime实例而不是时间戳)

  • Commit.diff() 现在支持通过 Commit.diff(NULL_TREE) .

  • Repo.blame() 现在尊重 incremental=True 支持不断增加的指责。增量指责速度稍快,因为它们不包括文件的内容。

  • 修复: Diff 使用补丁输出创建的对象现在将具有 a_pathb_path 正确分析了属性。以前,添加或删除文件时,某些值可能填充不正确。

  • 修复:对包含“不安全”字符的路径(如空格、制表符、反斜杠等)进行diff解析时出现的问题。

1.0.2-修复

  • 重要提示:更改了的默认对象数据库 Repo 对象到 GitCmdObjectDB . 以前使用的纯Python实现通常无法释放其资源(即文件句柄),这可能导致在处理大型存储库时出现问题。

  • 关键:修复错误 Commit 编写或提交日期时的对象序列化具有不能被3600秒除尽的时区。如果时区是 +0530 例如。

  • 可以找到所有其他修复程序的列表 on GitHub

  • 关键: Tree.cache 没有替换就被移除。从技术上讲,不可能改变单个树,并期望它们的序列化结果与 git 预期。相反,使用 IndexFile 用于调整临时区域内容的工具,并使用 IndexFile.write_tree() 相反。

1.0.1-修复

  • 可以找到所有问题的列表 on GitHub

1.0.0-注释

这个版本相当于v0.3.7,但最终承认Gitpython是稳定的,并且可以生产。

它遵循 semantic version scheme 从而不会破坏现有的API,除非它变为2.0。

0.3.7-修复

  • IndexFile.add() 默认情况下,将在不使用任何扩展数据的情况下写入索引。但是,您可以用新的 write_extension_data 关键字参数。

    • 更名 ignore_tree_extension_data 中的关键字参数 IndexFile.write(...)ignore_extension_data

  • 如果在运行期间执行git命令 Remote.push(...)|fetch(...) returns with an non-zero exit code and GitPython didn't obtain any head-information, the corresponding GitCommandError will be raised. This may break previous code which expected these operations to never raise. However, that behaviour is undesirable as it would effectively hide the fact that there was an error. See this issue 以获取更多信息。

  • 如果在以下路径或提供的路径中找不到git可执行文件: GIT_PYTHON_GIT_EXECUTABLE ,这是明显的投掷 GitCommandNotFound 在Unix和Windows上。

    • 支持的人 Windows上的GUI 现在必须设置 git.Git.USE_SHELL = True 去了解以前的行为。

  • 可以找到所有问题的列表 on GitHub

0.3.6-功能

  • DOCS

    • 特别成员喜欢 __init__ 现在在API文档中列出

    • 教程部分进行了全面修订,增加了更高级的示例。

  • 可能破坏更改

    • AS rev_parse 现在就扔 BadName 以及 BadObject ,客户端代码将必须捕获这两种异常类型。

    • repo.working_tree_dir现在如果是空的,则返回none。之前它引发了断言者错误。

    • indexfile.add()以前在与裸存储库一起使用的路径时引发了assertionerror,现在它引发了invalidgitrepositoryerror

  • 补充 Repo.merge_base() implementation. See the respective issue on GitHub

  • [include] 现在遵守git配置文件中的部分

  • 补充 GitConfigParser.rename_section()

  • 补充 Submodule.rename()

  • 可以找到所有问题的列表 on GitHub

0.3.5-错误修复

  • 推/拉/提取操作将不再阻塞

  • diff()现在可以正确地检测补丁和原始格式的重命名。以前,它只在create_patch为真时起作用。

  • repo.odb.update_cache()现在在fetch和pull操作之后自动调用。如果您在自己的代码中这样做,那么您可能需要删除您的行,以防止出现导致不必要IO的双重更新。

  • Repo(path) 将不再自动搜索上游,并找到任何git目录的方式。如果你需要这种行为,你可以使用新的 search_parent_directories=True 构造时标记 Repo 对象。

  • indexfile.commit()现在运行 pre-commitpost-commit 钩子。已验证仅在POSIX系统上工作。

  • 所有已修复问题的列表可以在这里找到:https://github.com/gitpython-developers/gitpython/issues?Q=里程碑%3a%22v0.3.5+-+错误修复%22+

0.3.4-python 3支持

  • 在内部,十六进制的sha1被视为ASCII编码的字符串。二进制sha1被视为字节。

  • 提交对象的id属性现在是 hexsha ,而不是 binsha . 在python 3中,后者没有任何意义,我也没有看到它的任何应用,除了它在测试用例中的人为使用之外。

  • IMPORTANT :如果您使用的是config_writer(),则会隐式依赖 __del__ 按预期工作以刷新更改。为了确保在py3下刷新更改,您必须调用 release() 方法触发刷新。出于某种原因, __del__ 当符号超出范围时不必再调用。

  • 这个 Tree 现在有一个 .join('name') 相当于 tree / 'name'

0.3.3

  • 当获取、拉或推,并且发生错误时,将不再在stdout上报告。但是,如果存在致命错误,仍然会导致引发gitcommandError。这与改进的获取结果解析密切相关。

  • 代码清理(为Python3支持做准备)

    • 应用autopep8并清除代码

    • 使用python日志模块而不是print语句来表示某些类型的错误

0.3.2.1

0.3.2

0.3.2剩余电流1

  • git 命令包装器

  • 补充 version_info 属性,返回表示安装的Git版本的整数元组。

  • 添加了git_python_git_可执行环境变量,该变量可用于设置要使用的所需git可执行文件。不管在路上会发现什么。

  • Blob 类型

  • 添加了模式常量以便于手动创建blob

  • IterableList

  • 补充 __contains__ 和 __delitem__ 方法

  • 更多更改

  • 配置文件解析更加健壮。它现在应该能够处理git命令可以解析的所有内容。

  • 已更新进程分析以支持Git 1.7.0.3和更高版本。以前没有为git命令启用进度,或者仅在使用较旧的git版本时使用ssh。

  • 改进了标签的解析。以前无法正确分析名称的某些部分。

  • rev-parse-pure-python实现现在可以正确地处理看起来像十六进制sha的分支。

  • Git_python_trace现在设置在Git类型的类级别上,以前它是模块级全局变量。

  • git_python_git_可执行文件也是一个类级变量。

0.3.1β2

  • 补充 回流支撑 (读写)

  • 新类型: RefLogRefLogEntry

  • 创建和删除引用时自动维护reflog

  • 非侵入性变更 SymbolicReference ,这些不需要更改代码。它们允许将消息附加到reflog。

    • abspath 添加的属性,类似于 abspath 对象实例数

    • log() 添加的方法

    • log_append(...) 添加的方法

    • set_reference(...) 添加方法(reflog支持)

    • set_commit(...) 添加方法(reflog支持)

    • set_object(...) 添加方法(reflog支持)

  • 侵入性变化Head 类型

  • create(...) 方法现在支持reflog,但不会引发 GitCommandError 因为它现在是纯Python实现了。相反,它提高了 OSError .

  • 侵入性变化Repo 类型

  • create_head(...) 方法不再支持Kwargs,而是支持logmsg参数

  • repo.rev_parse现在支持 [ref] @n语法,其中 n 是要查看引用的过去的步骤数

  • BugFixes

    • 移除了不正确的orig头处理

  • 扁平目录 结构使开发更方便。

  • 备注

    这改变了使用git python作为子模块的项目必须调整sys.path才能成功导入git python的方式。

  • 其他较小的更改和错误修复

0.3.1β1

  • 全子模块支持

  • 添加了对作者名称的Unicode支持。commit.author.name现在是Unicode而不是字符串。

  • 头部类型改变

  • 添加了用于访问头部特定选项的config_reader()&config_writer()方法。

  • 添加了tracking_branch()和set_tracking_branch()方法,以便轻松配置跟踪分支。

0.3.0测试版2

  • 增加了对python 2.4的支持

0.3.0测试版1

重命名的模块

  • 为了与gitdb等子模块中使用的命名约定保持一致,已重命名以下模块

    • git.utils->git.util

    • git.errors->git.exc

    • git.objects.utils->git.objects.util

一般

  • 对象实例及其派生的所有内容现在都在内部使用二进制sha。为了支持“binsha”成员,删除了“sha”成员。“hexsha”属性可用于方便的转换。它们只能使用二进制shas进行初始化,不再允许使用引用名称或修订规范。

  • indexfile.entries中包含的indexentry实例现在使用二进制sha。请使用.hexsha属性获取十六进制版本。.sha属性已被删除,以便更明确地使用各自的sha。

  • 如果对象是显式实例化的,则需要使用二进制sha来标识该对象,以前可以在其中使用任何rev spec。与参考规范兼容的版本仍然分别以object.new或repo.commit_repo.tree的形式存在。

  • .data属性已从对象类型中删除,若要获取纯数据,请改用data_stream属性。

  • 同时两次手术被移除,并被锁定的fd替代。

  • indexfile.get_entries_key已重命名为entry_key

  • indexfile.write_tree:删除了丢失的_ok关键字,现在始终为真。它不会引发gitcommandError,而是引发UnmergedentriesError。这是必需的,因为纯Python实现还不支持缺少的_OK关键字。

  • diff.diff.null_hex_sha重命名为null_hex_sha,以符合对象基类中的命名

0.2β2

  • 提交对象现在携带其消息的“编码”信息。以前没有解析过,默认为utf-8

  • commit.create_from_tree现在使用纯python实现,模仿git commit tree

0.2

一般

  • 树、blob和diff对象中的文件模式现在是与stat模块中的定义兼容的int,允许您查询是否设置了单个用户、组和其他读、写和执行位。

  • 调整了类层次结构,通常允许对象和引用的比较和哈希

  • 改进的标记对象,它现在是一个引用,可以包含带有附加信息的标记对象

  • id_abbrev方法已被删除,因为它无法确保返回的short sha的唯一位置

  • 从具有路径的对象中删除basename方法,因为它复制了os.path的功能

  • From_String和List_From_String方法现在是私有的,分别重命名为u String和u List_From_String。作为私有API的一部分,它们可以在不事先通知的情况下进行更改。

  • 重命名所有查找所有列出项目的方法-此方法是ITerable接口的一部分,它还提供更有效和更响应的ITER项目方法

  • 所有日期,如作者日期和提交者日期,都存储为从epoch开始的秒数,以节省内存-如果需要,可以使用time.gmtime以更合适的表示格式转换它们。

  • 命名的方法参数在很大程度上进行了更改,以统一它们的使用。现在到处都使用特定于git的术语,例如“引用”(reference)和“修订”(rev)。以前使用过多个术语,因此很难知道允许或不允许使用哪种类型。

  • 统一的diff接口,方便树、树和索引、树和工作树、索引和工作树、树和索引之间的差异。这与Git Diff功能密切相关。

  • git.execute不再使用WITH_RAW_输出选项。它没有被项目中的任何人使用,默认情况下是假的。

项目迭代

  • 以前,人们只返回和处理多个项目作为列表,这会损害性能和内存消耗,并缩短响应时间。iter-items方法提供一个迭代器,该迭代器将按需返回从流中解析的项。这样就可以处理任意数量的对象。

  • list-items方法返回ITerableList,允许按名称访问列表成员

对象包

  • blob、tree、tag和commit模块已移动到新的objects包中。但是,除非显式导入单个对象,否则这不会影响您。如果您刚刚使用了git包,名称不会改变。

团块

  • 以前的“name”成员重命名为path,因为它更适合实际数据

GitCommand

  • 子命令调用方案现在从参数列表中删除了none,这样可以更方便地调用,因为如果转换为字符串,则none对git命令永远都无效。

  • 已将“git_dir”属性重命名为“working_dir”,这正是它的用法

提交

  • “count”方法不是一个实例方法以提高其易用性

  • “name-rev”属性返回提交的sha的好名称

配置

  • 现在可以使用gitconfigparser从python中直接读取和操作git配置。

  • repo.config_reader()返回只读分析器

  • repo.config_writer()返回读写分析程序

微分

  • 成员a_commit和b_commit重命名为a_blob和b_blob-如果可能,将使用blob对象填充它们

  • 成员a_path和b_path已删除,因为此信息保留在blob中

  • diff现在作为diffindex返回,这样可以更快地找到您感兴趣的diff类型。

差异化

  • 提交和树对象现在支持使用公共接口进行本地差异化,以便与其他提交或树、工作树或索引进行比较。

索引

  • 新的index类允许直接读写索引文件,并基于任意索引执行简单的双向和三向合并。

工具书类

  • 引用是指向提交的对象

  • 符号引用是指向引用对象的指针,引用对象本身指向特定的提交

  • 它们将在查询时动态检索对象,以确保信息是真实的。最近对象将被缓存,因此不能安全地保持引用对象的持久性。

回购协议

  • 将责备方法从blob移到repo,因为它似乎更属于那里。

  • active_branch方法现在返回一个head对象,而不是一个带有活动分支名称的字符串。

  • 树方法现在需要一个引用实例作为输入,并默认为活动分支而不是主分支

  • Is-Dirty现在接受额外的参数,允许对被认为是脏的内容进行细粒度控制

  • 删除了以下方法:

    • “log”方法与“commits”方法一样有效

    • “commits-since”,因为它只是commit.iter_项中rev列表的标志。

    • “commit_count”,因为它只是重定向到相应的commit方法

    • “commits-between”,替换为iter-commits方法上的注释,因为它可以实现相同的事情。

    • “commit-delta-from”是一个非常特殊的情况,通过比较两个不同的相互关联的存储库(即克隆库),Git Rev List将足以找到需要传输的提交,例如。

    • “create”方法等于“init”方法的功能

    • “diff”-它只返回了一个字符串,但仍然需要对其进行分析

    • “commit diff”-分别移动到commit、tree和diff类型

  • 已重命名以下方法:

    • 向ITER承诺改善性能,调整签名

    • init_bare to init,表示要使用的选项较少

    • fork-bare-to-clone,因为它是用来表示一般的克隆功能,但它暗示了一个裸机克隆要更加通用。

    • 存档u tar_gz和存档u tar并用不同签名的存档方法替换

  • “commits”方法不再具有返回commits的最大计数,它现在的行为类似于git rev list

  • 添加了以下方法和属性

    • “未跟踪的文件”属性,返回所有当前未跟踪的文件

    • “head”,创建head对象

    • “tag”创建标记对象

    • “Iter-Trees”方法

    • “配置读卡器”方法

    • “config-writer”方法

    • “bare”属性,以前它是可以写入的简单属性

  • 已重命名以下属性

    • “path”现在是“git_dir”

    • “wd”现在是“working-dir”

  • 添加的属性

    • “Working_Tree_dir”(工作目录树目录),如果是空存储库,则可能是空的。

远程的

  • 添加了远程对象,方便访问远程设备

  • repo.remotes列出所有远程

  • repo.remote返回指定名称的远程文件(如果存在)

测试框架

  • 添加了对公共测试用例基类的支持,该类提供了接收存储库测试也可以写入的附加功能。这样,更多的方面可以在现实世界(非模拟)条件下进行测试。

  • 以前的“name”成员重命名为path,因为它更适合实际数据

  • 添加了允许递归遍历树项的遍历方法

  • 已删除Blob方法

  • 添加了blob和trees属性,允许查询树中的各个项

  • 现在模仿只读列表的行为而不是听写来维持顺序。

  • 来自字符串方法的内容现在是私有的,不再是公共API的一部分。

0.1.6

一般

  • 添加在Sphinx文档中。

  • 消除了路径和树之间的歧义。当调用接受treeish和path参数的命令,并且有一个路径与treeish git同名时,cowardly拒绝选择一个路径,并要求命令使用明确的语法,其中“--”将treeish与路径分开。

  • Repo.commitsRepo.commits_betweenRepo.commits_sinceRepo.commit_countRepo.commitCommit.countCommit.find_all 现在全部都可以选择使用一个路径参数来约束按路径查找。这将更改位置参数的顺序 Repo.commitsRepo.commits_since .

提交

  • Commit.message 现在包含完整的提交消息(而不仅仅是第一行)和一个新属性 Commit.summary 包含提交消息的第一行。

  • 修复了在尝试从裸回购中查找无父提交的状态时失败的问题。

微分

  • diff解析器现在速度快得多,还解决了一个有时没有设置b_模式的错误。

  • 添加了对将重命名信息解析到diff分析器的支持。添加新属性 Diff.renamedDiff.rename_fromDiff.rename_to .

回购协议

  • 修改了gzip存档创建以使用python gzip模块。

  • 修正的 commits_between 总是返回“无”而不是“反向列表”。

0.1.5

一般

  • 升级到mock 0.4依赖项。

  • 在repr()输出中将gitpython替换为git。

  • 修复了由ez_setup.py引起的包装问题。

团块

  • 不再从blob数据中删除换行符。

提交

  • 更正了Git Rev列表的问题——将所有内容平分。请参见http://groups.google.com/group/git-python/browse-thread/thread/aed1d5c4b31d5027

回购协议

  • 更正了创建裸存储库的问题。

  • repo.tree不再接受路径参数。用途:

    >>> dict(k, o for k, o in tree.items() if k in paths)
    
  • 使守护进程导出repo的属性。现在您可以这样做:

    >>> exported = repo.daemon_export
    >>> repo.daemon_export = True
    
  • 允许修改项目说明。执行此操作:

    >>> repo.description = "Foo Bar"
    >>> repo.description
    'Foo Bar'
    
  • 添加了只读属性repo.is_dirty,该属性反映工作目录的状态。

  • 添加了只读repo.active_branch属性,该属性返回当前活动分支的名称。

  • 切换到对树内容使用字典,因为您通常希望按名称和顺序访问它们并不重要。

  • 实现了树对象的字典协议。以下内容:

    child=tree.contents [砂砾]

    变成:

    child=树 [砂砾]

  • 使tree.content从字符串中成为静态方法。

0.1.4.1

  • 远离的 method_missing 填充并替换为 __getattr__ 覆盖 Git .

0.1.4

  • 更名 git_pythongit . 确保在测试前删除所有PYC文件。

提交

  • 修复了提交状态在所有条件下都不工作的问题。

吉特

  • 已将模块重命名为命令。

  • 完全卸下Shell。

  • 为添加了支持 stderrstdinwith_status .

  • git_dir 现在在构造函数中是可选的 git.Git . Git现在回到 os.getcwd() 未指定git_dir时。

  • 添加一个 with_exceptions git命令的关键字参数。 GitCommandError 当退出状态为非零时引发。

  • 添加对 GIT_PYTHON_TRACE 环境变量。 GIT_PYTHON_TRACE 允许我们通过使用环境变量调试gitpython对git的使用。

  • 解决了以下问题: name 不存在于树根上。

回购协议

  • 修正了创建裸回购的问题。补充 Repo.create 别名。

0.1.2

  • 修正了问题 Tree.__div__ 不使用零长度文件。远离的 __len__ 替代并替换为大小。还正确设置了大小缓存。这是一个突破性的变化。

0.1.1

修正了一些网址,因为我是个白痴

0.1.0

首批发放