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

README.md

PHP-Git2 - libgit2 bindings in PHP

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

Requirements

PHP 5.3 above

Status

0.3.0 Alpha (switching to functions)

https://docs.google.com/spreadsheet/ccc?key=0AjvShWAWqvfHdDRneEtIUF9GRUZMNVVVR1hpdURiUWc&usp=sharing

How to build

# build libgit2.a
## For 32bit systems
git submodule init && git submodule update
mkdir libgit2/build
cd libgit2/build
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -DBUILD_CLAR=OFF ..
cmake --build .

# For 64bit systems
git submodule init && git submodule update
mkdir libgit2/build
cd libgit2/build
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=OFF -DBUILD_CLAR=OFF 
-DCMAKE_C_FLAGS=-fPIC ..
cmake --build .


# build php-git2
cd ../../
phpize
./configure --enable-git2-debug
make
make install
# add extension=git2.so 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 libgit2.github.com/libgit2/#v0.20.0

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.

documents

use prototype.

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

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

testing

[group]/[function].phpt

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

LICENSE

MIT License