136 lines
3.9 KiB
ReStructuredText
136 lines
3.9 KiB
ReStructuredText
Repository methods
|
|
==================
|
|
|
|
Creating a *Repository* object is possible, providing a *path* argument to the
|
|
constructor:
|
|
|
|
.. code-block:: php
|
|
|
|
$repository = new Repository('/path/to/repo');
|
|
|
|
Repository options
|
|
------------------
|
|
|
|
The constructor of Repository takes an additional parameter: ``$options``.
|
|
This parameter can be used used to tune behavior of library.
|
|
|
|
Available options are:
|
|
|
|
* **debug** (default: true): Enables exception when edge cases are met
|
|
* **environment_variables**: (default: none) An array of environment variables to be set in sub-process
|
|
* **logger**: (default: none) Logger to use for reporting of execution (a ``Psr\Log\LoggerInterface``)
|
|
* **command**: (default: ``git``) Specify command to execute to run git
|
|
* **working_dir**: If you are using multiple working directories, this option is for you
|
|
|
|
An example:
|
|
|
|
.. code-block:: php
|
|
|
|
$repository = new Repository('/path/to/repo', array(
|
|
'debug' => true,
|
|
'logger' => new Monolog\Logger()
|
|
));
|
|
|
|
Test if a repository is bare
|
|
----------------------------
|
|
|
|
On a *Repository* object, you can call method *isBare* to test if your repository is bare or not:
|
|
|
|
.. code-block:: php
|
|
|
|
$repository->isBare();
|
|
|
|
Compute size of a repository
|
|
----------------------------
|
|
|
|
To know how much size a repository is using on your drive, you can use ``getSize`` method on a *Repository* object.
|
|
|
|
.. warning:: This command was only tested with linux.
|
|
|
|
The returned size is in kilobytes:
|
|
|
|
.. code-block:: php
|
|
|
|
$size = $repository->getSize();
|
|
|
|
echo "Your repository size is ".$size."KB";
|
|
|
|
Access HEAD
|
|
-----------
|
|
|
|
``HEAD`` represents in git the version you are working on (in working tree).
|
|
Your ``HEAD`` can be attached (using a reference) or detached (using a commit).
|
|
|
|
.. code-block:: php
|
|
|
|
$head = $repository->getHead(); // Commit or Reference
|
|
$head = $repository->getHeadCommit(); // Commit
|
|
|
|
if ($repository->isHeadDetached()) {
|
|
echo "Sorry man\n";
|
|
}
|
|
|
|
Options for repository
|
|
----------------------
|
|
|
|
Logger
|
|
......
|
|
|
|
If you are developing, you may appreciate to have a logger inside repository, telling you every executed command.
|
|
|
|
You call method ``setLogger`` as an option on repository creation:
|
|
|
|
.. code-block:: php
|
|
|
|
$repository->setLogger(new Monolog\Logger('repository'));
|
|
|
|
$repository->run('fetch', array('--all'));
|
|
|
|
You can also specify as an option on repository creation:
|
|
|
|
$logger = new Monolog\Logger('repository');
|
|
$repository = new Repository('/path/foo', array('logger' => $logger));
|
|
|
|
$repository->run('fetch', array('--all'));
|
|
|
|
This will output:
|
|
|
|
.. code-block:: text
|
|
|
|
info run command: fetch "--all"
|
|
debug last command (fetch) duration: 23.24ms
|
|
debug last command (fetch) return code: 0
|
|
debug last command (fetch) output: Fetching origin
|
|
|
|
Disable debug-mode
|
|
..................
|
|
|
|
Gitlib throws an exception when something seems wrong. If a ``git` command returns a non-zero result, it will stop execution and throw an ``RuntimeException``.
|
|
|
|
If you want to prevent this, set ``debug`` option to ``false``. This will make Repository log errors and return empty data instead of throwing exceptions.
|
|
|
|
.. code-block:: php
|
|
|
|
$repository = new Repository('/tmp/foo', array('debug' => false, 'logger' => $logger));
|
|
|
|
.. note:: if you plan to disable debug, you should rely on logger to keep a trace of edge failing cases.
|
|
|
|
Specify git command to use
|
|
..........................
|
|
|
|
You can pass option ``command`` to specify which command to use to run git calls. If you have a git binary
|
|
located somewhere else, use this option to specify to gitlib path to your git binary:
|
|
|
|
.. code-block:: php
|
|
|
|
$repository = new Gitonomy\Git\Repository('/tmp/foo', array('command' => '/home/alice/bin/git'));
|
|
|
|
Environment variables
|
|
.....................
|
|
|
|
Now you want to set environment variables to use to run ``git`` commands. It might be useful.
|
|
|
|
.. code-block:: php
|
|
|
|
$repository = new Gitonomy\Git\Repository('/tmp/foo', array('environment_variables' => array('GIT_')))
|