Git-PHP

21. srpna 2013

Třída pro volání gitovských příkazů z PHP nad daným repozitářem.


Třída nabízí základní operace pro práci se soubory, commitování, merge,… Základní použití může vypadat následovně:

<?php
// vytvoříme objekt repozitáře
$repo = new Cz\Git\GitRepository('/path/to/repo');

// vytvoříme v repozitáři nový soubor
$filename = '/path/to/repo/first.txt';
file_put_contents($filename, "Lorem ipsum\ndolor\nsit amet");

// přidáme soubor do commitu
$repo->addFile($filename);
// a změnu commitneme
$repo->commit('init commit');

Práce se soubory

<?php
// přidáme soubory do commitu
$repo->addFile('file.txt');
$repo->addFile('file1.txt', 'file2.txt');
$repo->addFile(array('file3.txt', 'file4.txt'));

// přejmenujeme soubor v repozitáři
$repo->renameFile('old.txt', 'new.txt');
$repo->renameFile(array(
    'old1.txt' => 'new1.txt',
    'old2.txt' => 'new2.txt',
));

// odstraníme soubor z repozitáře
// seznam souborů můžeme předat stejně jako u metody `addFile`
$repo->removeFile('file1.txt');

Samozřejmě je poté potřeba takto provedené změny commitnout ($repo->commit('message')).

Tagy

<?php
// získáme seznam všech tagů v repozitáři
$repo->getTags();

// vytvoříme tag
$repo->createTag('new-tag');

// přejmenujeme tag
$repo->renameTag('new-tag', 'v1.0.0');

// vymažeme tag
$repo->removeTag('v1.0.0');

Větve

<?php
// získáme seznam všech větví v repozitáři
$repo->getBranches();

// získáme jméno aktuální větve
$repo->getCurrentBranchName();

// vytvoříme větev
$repo->createBranch('develop');

// vytvoříme větev a rovnou provedeme checkout
$repo->createBranch('new-develop', TRUE);

// odstraníme větev
$repo->removeBranch('new-develop');

Další operace

<?php
// jsou v repozitáři nějaké změny?
$repo->isChanges();

// provedeme commit
$repo->commit('commit message');

// volitelně můžeme předat další parametry,
// viz manuál k příkazu `git commit`
$repo->commit('commit message', array(
    'author' => '<author>', // přepíše autora commitu
));

// provedeme merge
// opět můžeme druhým parametrem předat další parametry
$repo->merge('hot fix', $mergeParams);

// checkout na jinou větev, tag, commit
$repo->checkout('master');

Vytvoření nového repozitáře

Pomocí třídy můžeme i inicializovat nový repozitář, stačí zavolat statickou metodu init a předat jí cestu do adresáře, kde chceme repozitář inicializovat. Metoda nám vrátí nový objekt, který reprezentuje nově vzniklý repozitář. Poté už můžeme s repozitářem normálně pracovat.

<?php
$newRepo = Cz\Git\GitRepository::init('/path/to/new-repo');
$newRepo->addFile(/* file */);
$newRepo->commit(/* message */);
Líbí se vám tato stránka?