Codebase API Documentation

PHP - Backup GIT Repositories

The following code will download all GIT repositories from an account.

<?php

/**
  * Script to backup all git repos from CodebaseHQ
  *
  * @author Marcelo Honorio <marcelohonorio@gmail.com>
  *
*/

define('API_URL', 'https://api3.codebasehq.com/');
define('API_USER', '<Your API User>');
define('API_PASSWD', '<Your API Password>');

define('BACKUP_TO', '/storage/');                   // Dir destination
define('DIR_TMP', '/storage/backup_cb/');           // Temp dir to git clones

exec('rm -Rf ' . DIR_TMP . '*');

$projects = request_api('projects');

foreach($projects->project as $p){

    mkdir(DIR_TMP . $p->permalink);

    $repos = request_api($p->permalink . '/repositories');

    foreach($repos->repository as $r){
        $r = (Array)$r;

        exec("git clone --mirror {$r['clone-url']} " . DIR_TMP . $p->permalink . '/' . $r['permalink'] . '.repo');

    }

}

$date = date('Ymd');
exec("cd " . DIR_TMP . "; tar czf " . BACKUP_TO . "codebase_{$date}.tar.gz *");


function request_api($method, $parse_xml = true){
    $ch = curl_init(API_URL . $method);


    curl_setopt($ch, CURLOPT_USERPWD, API_USER . ':' . API_PASSWD);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $ret = curl_exec($ch);
    curl_close($ch);

    if($parse_xml == true){
        $ret = simplexml_load_string($ret);
    }

    return $ret;
}