Skip to content
PHP bindings for libgit2
C PHP Other
Find file
Latest commit 2e3bd50 @chobie chobie add travis.yml
Failed to load latest commit information.
example [odb_backend] add refresh callback
libgit2 @ 43cb8b3 add note for latest branch
script add travis.yml
stubs add stub file
tests Added testing for tree
.gitignore [tests] add stub codes
.gitmodules wip
.travis.yml add travis.yml
LICENSE why i forgot to commit LICENSE file ? Modified README for 64bit compile instructions
attr.c fixes #59. correct variable declarations
attr.h [diff] add diff_options interchange functions
blame.c [blame] implement functions
blame.h [blame] implement functions
blob.c remove unused variables
blob.h wip
branch.c remove unused variables
branch.h add several stubs
checkout.c remove unused variables
checkout.h add several stubs
clone.c Allow clone options bare and ignore_cert
clone.h wip
commit.c remove unused variables
commit.h wip
config.m4 [pathspec] implement several functions
cred.c remove unused variables
cred.h [diff] add diff_options interchange functions
diff.c Fix for php_git2_diff_delta_to_array
diff.h [diff] add diff_options interchange functions
fe.php wip
filter.c fixes #59. correct variable declarations
filter.h [filter] add callbacks
fixer.php add simple clang warning based unused variables fixer
g_config.c Fix for unknown symbol convert_to_bool when running under Ubuntu Rari…
g_config.h [diff] add diff_options interchange functions
gen.php add several stubs
giterr.c remove unused variables
giterr.h add giterr
graph.c remove unused variables
graph.h add graph
helper.c remove unused variables
helper.h [status] implement git_status
ignore.c remove unused variables
ignore.h add several stubs
index.c remove unused variables
index.h [diff] add diff_options interchange functions
indexer.c remove unused variables
indexer.h [indexer] update code base
merge.c remove unused variables
merge.h add several stubs
message.c remove unused variables
message.h add message
ng.php [indexer] update code base
note.c remove unused variables
note.h [diff] add diff_options interchange functions
object.c fixes #59. correct variable declarations
object.h add stubs
odb.c fixes #59. correct variable declarations
odb.h [odb] wip: backend
packbuilder.c remove unused variables
packbuilder.h [packbuilder] add callbacks
patch.c remove unused variables
patch.h [diff] add diff_options interchange functions
pathspec.c remove unused variables
pathspec.h add several stubs
php_git2.c remove unused variables
php_git2.h 0.3.0-dev Merge functions branch into develop.
php_git2_priv.h [odb_backend] implement foreach callback. slightly tricky
push.c remove unused variables
push.h [remote] WIP: push
ref.php add stub file
reference.c fixes #59. correct variable declarations
reference.h [diff] add diff_options interchange functions
reflog.c remove unused variables
reflog.h add reflog stubs
refspec.c fixes #59. correct variable declarations
refspec.h add refspec stubs
remote.c fixes #59. correct variable declarations
remote.h [remote] implement several functions
repository.c [repository] remove unused variables
repository.h [repository] implement git_repository_init_ext
reset.c [reset] remove needles variables
reset.h add reset
revparse.c [revparse] improve codes
revparse.h add several stubs
revwalk.c remove unused variables
revwalk.h wip
signature.c remove unused variables
signature.h add signature
stash.c remove unused variables
stash.h [stash] add stash callback
status.c Adding missing &
status.h [status] implement git_status
submodule.c fixes #59. correct variable declarations
submodule.h [submodule] implement submodule functions
tag.c fixes #59. correct variable declarations
tag.h [diff] add diff_options interchange functions
transport.c remove unused variables
transport.h [diff] add diff_options interchange functions
tree.c remove unused variables
tree.h wip
treebuilder.c remove unused variables
treebuilder.h [treebuilder] add filter function

PHP-Git2 - libgit2 bindings in PHP

php-git2 is a PHP bindings to the libgit2 linkable C Git library.


PHP 5.3 above


0.3.0 Alpha (switching to functions)

How to build

# build libgit2.a
## For 32bit systems
git submodule init && git submodule update
mkdir libgit2/build
cd libgit2/build
cmake --build .

# For 64bit systems
git submodule init && git submodule update
mkdir libgit2/build
cd libgit2/build
cmake --build .

# build php-git2
cd ../../
./configure --enable-git2-debug
make install
# add to your php.ini

For Contributors

Issue first.

please make a issue first. don't work before creating it.

Coding Styles

follow pecl coding standards (except 8 at this moment).

Signature conversions
GIT_EXTERN(int) git_repository_init(
        git_repository **out,
        const char *path,
        unsigned is_bare);

// error code should handle in extension.
// resource creation or getting functions will return their resource or bool.
resource|bool function git_repository_init(string $path, long $is_bare);

public struct (e.g: git_config_entry) should consider return as an array.
file name rules.

basically, we rely libgit2 grouping at this time. (branch group functions should be in branch.c) some group (e.g config) will conflicts php header files. we choose g_ prefix for now.

check grouping here

generating files

if you wanna try to work new file. please use gen.php and generate stubs. as declarations are bored task. (sometimes, this generator might output wrong headers. then just comment out or fix generator)

PRINT_HEADER=1 php ng.php libgit2/include/git2/branch.h > branch.h
php ng.php libgit2/include/git2/branch.h > branch.c

you can generate PHP_FE with this. past it to php_git2.c

php fe.php target.c

Note: usually, these generators might output needless variables. DON'T PR prettify codes at this moment. As we have more than 500 php functions. we like to use some fixer command than fix by hand.


use prototype.

  /* {{{ proto int abs(int number)
     Returns the absolute value of the number */
  /* }}} */

document will generate later. please check source code before publish docs.



  • don't create OOP interface in extension for ease of maintenance.
  • follow latest libgit2 api. don't consider BC at this time.


MIT License

Something went wrong with that request. Please try again.