Git 开发包,libgit2 v0.23.4 发布
jopen 9年前
libgit2 是一个可移植、纯C语言实现的 Git 核心开发包,你可以使用它来编写自定义的 Git 应用。
libgit2已被广泛应用在许多应用程序上,包括GitHub网站,还被应用在Plastic SCM和强大的微软Visual Studio工具箱。
主要功能:
-
SHA转换、格式化和缩略词
-
抽象的ODB后端系统
-
提交、标签、树和BLOB解析、编辑、blob解析和回写
-
树遍历
-
revision walking
-
索引文件(临时区域)操作
-
引用管理(包括包引用)
-
配置文件管理
-
高级仓库管理
-
线程安全和可重入
-
错误信息描述非常详细
-
更多(超过175个不同的API调用)
目前,可以绑定到libgit2的语言有,并附上各个语言的绑定方法:
-
C++:https://projects.kde.org/projects/playground/libs/libqgit2/
-
Chicken Scheme:https://wiki.call-cc.org/egg/git
-
Haskell:https://github.com/fpco/gitlib
-
.NET:https://github.com/libgit2/libgit2sharp、https://github.com/txdv/libgit2net
-
Objective-C:https://github.com/libgit2/objective-git
-
Parrot Virtual Machine:https://github.com/letolabs/parrot-libgit2
-
Vala:https://github.com/apmasell/vapis/blob/master/libgit2.vapi
其他改进:
dab55be Fix warnings and a leak 5b6b774 Add test case ed4eeeb merge-base: Style 0740382 merge-base: Do not read parents from the root 5b6af2c merge-base: Remove redundant merge bases faa3c89 Fix build for custom transport users 50225df git: put NULL check at the top 9a212bf git: accept NULL as argument to its stream free c615d29 Prevent segfault when parsing a reflog with oid parse error 6bac384 reuc: Be smarter when inserting new REUC entries 0e077d7 Fix docs typo geterr_clear -> giterr_clear 8f5f1a1 xdiff: reference util.h in parent directory ba7da35 diff: ignore nsecs when diffing 1073061 index: test that we round-trip nsecs 5e26142 inttypes.h is built-in header file since MSVC 2013 afed770 win32: add c linkage guard around inttypes.h inclusion abdbfef signature: Strip crud just like Git does aef9724 odb: Prioritize alternate backends 18ff20f odb: Be smarter when refreshing backends 486270d revwalk: make commit list use 64 bits for time 47e4b74 CMake: be more explicit with python errors 66956c5 qsort_r/qsort_s: detect their support cd76828 p_futimes: support using futimens when available 08a2a93 openssl: don't try to teardown an unconnected SSL context 7dd5128 win32::longpath: don't print path 6aed945 Fix binary diffs 1a1d575 win32: test checkout msg on long path err 80b4536 win32: propogate filename too long errors 1ffa073 repository: only reserve repo dirs in the workdir 1568dea pkg-config: fix directory references in libgit2.pc ad8e8fa win32: return EACCES in `p_lstat` 59ac224 checkout: overwrite files with differing modes 097c5bc checkout::tree tests: don't use hardcoded mode d73bf24 checkout::tree tests: don't use static buffer 9ae94bc Check that checkout preserves filemode in working directory. 9247114 Check that an executable in index is not an executable after checkout. d1a7d0e Removing memory leak in mempack's free 7e53d83 Fixing dangling pointers in git_mempack_reset d960fb3 added a single line of additional error reporting from libssh2 when failing to retrieve the list of authentication methods c1dabd1 filebuf: follow symlinks when creating a lock file来自:http://www.oschina.net/news/68009/libgit2-0-23-4