Php модуль для работы с git репозиторием

Гость19 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
23.06.2011

Нужен php модуль для работы с git репозиторием, со следующей функциональностью:

- Получить структуру каталогов и содержимое произвольных файлов репозитория исходного кода

- Получить список "коммитов" в репозиторий и перечень файлов в коммите

- Получить список версий произвольного файла и содержимое каждой версии файла

Ограничения:

- Код должен быть реализован на PHP 5, с минимальными внешними зависимостями, кроссплатформенный

- Доступ к репозиторию должен осуществляться через webdav

- Не могут быть использованы уже написанные кем-то классы или компоненты, имеющие коммерческую лицензию

Спецификация интерфейса модуля (на псевдоязыке):

/*

* interface RevisionIterator extends Iterator

* {

* string getVersion();

* string getDateTime();

* string getComment();

* string getAuthor();

* string getAction();

* }

*

* interface FileIterator extends Iterator

* {

* string getPath();

* string getName();

* long getLength();

* string getDateTime();

* string getType();

* string getStatus();

* string getAuthor();

* string getContentType();

* }

*

* interface Repository

* {

* // returns list of commits in the given range of revisions of the whole repository

* RevisionIterator getRevisions( string from_revision, string to_revision );

*

* // returns list of files on the path

* FileIterator getFiles( string path );

*

* // returns file content of the given version on the path

* string getFile( string path, string revision );

*

* // returns list of commits within the file in the given range of revisions

* RevisionIterator getFileRevisions( string path, string from_revision, string to_revision );

*

* // returns list of files where changes in the given commit

* FileIterator getFilesInRevision( string revision );

* }

*

*/

Ожидаемый результат:

- Набор классов на PHP, реализующих описанную функциональность

- Дополнительные компоненты (если используются)

- Тестовое окружение, на котором быстро можно проверить работу модуля (или подробная инструкция как его развернуть)