1*b08c3d51SMarkus Hoffrogge<?php 2*b08c3d51SMarkus Hoffrogge 3*b08c3d51SMarkus Hoffrogge/* 4*b08c3d51SMarkus Hoffrogge * Git.php 5*b08c3d51SMarkus Hoffrogge * 6*b08c3d51SMarkus Hoffrogge * A PHP git library 7*b08c3d51SMarkus Hoffrogge * 8*b08c3d51SMarkus Hoffrogge * @package Git.php 9*b08c3d51SMarkus Hoffrogge * @version 0.1.4 10*b08c3d51SMarkus Hoffrogge * @author James Brumond 11*b08c3d51SMarkus Hoffrogge * @copyright Copyright 2013 James Brumond 12*b08c3d51SMarkus Hoffrogge * @repo http://github.com/kbjr/Git.php 13*b08c3d51SMarkus Hoffrogge */ 14*b08c3d51SMarkus Hoffrogge 15*b08c3d51SMarkus Hoffroggeif (__FILE__ == $_SERVER['SCRIPT_FILENAME']) die('Bad load order'); 16*b08c3d51SMarkus Hoffrogge 17*b08c3d51SMarkus Hoffrogge// ------------------------------------------------------------------------ 18*b08c3d51SMarkus Hoffrogge 19*b08c3d51SMarkus Hoffrogge/** 20*b08c3d51SMarkus Hoffrogge * Git Interface Class 21*b08c3d51SMarkus Hoffrogge * 22*b08c3d51SMarkus Hoffrogge * This class enables the creating, reading, and manipulation 23*b08c3d51SMarkus Hoffrogge * of git repositories. 24*b08c3d51SMarkus Hoffrogge * 25*b08c3d51SMarkus Hoffrogge * @class Git 26*b08c3d51SMarkus Hoffrogge */ 27*b08c3d51SMarkus Hoffroggeclass Git { 28*b08c3d51SMarkus Hoffrogge 29*b08c3d51SMarkus Hoffrogge /** 30*b08c3d51SMarkus Hoffrogge * Git executable location 31*b08c3d51SMarkus Hoffrogge * 32*b08c3d51SMarkus Hoffrogge * @var string 33*b08c3d51SMarkus Hoffrogge */ 34*b08c3d51SMarkus Hoffrogge protected static $bin = '/usr/bin/git'; 35*b08c3d51SMarkus Hoffrogge 36*b08c3d51SMarkus Hoffrogge /** 37*b08c3d51SMarkus Hoffrogge * Sets git executable path 38*b08c3d51SMarkus Hoffrogge * 39*b08c3d51SMarkus Hoffrogge * @param string $path executable location 40*b08c3d51SMarkus Hoffrogge */ 41*b08c3d51SMarkus Hoffrogge public static function set_bin($path) { 42*b08c3d51SMarkus Hoffrogge self::$bin = $path; 43*b08c3d51SMarkus Hoffrogge } 44*b08c3d51SMarkus Hoffrogge 45*b08c3d51SMarkus Hoffrogge /** 46*b08c3d51SMarkus Hoffrogge * Gets git executable path 47*b08c3d51SMarkus Hoffrogge */ 48*b08c3d51SMarkus Hoffrogge public static function get_bin() { 49*b08c3d51SMarkus Hoffrogge return self::$bin; 50*b08c3d51SMarkus Hoffrogge } 51*b08c3d51SMarkus Hoffrogge 52*b08c3d51SMarkus Hoffrogge /** 53*b08c3d51SMarkus Hoffrogge * Sets up library for use in a default Windows environment 54*b08c3d51SMarkus Hoffrogge */ 55*b08c3d51SMarkus Hoffrogge public static function windows_mode() { 56*b08c3d51SMarkus Hoffrogge self::set_bin('git'); 57*b08c3d51SMarkus Hoffrogge } 58*b08c3d51SMarkus Hoffrogge 59*b08c3d51SMarkus Hoffrogge /** 60*b08c3d51SMarkus Hoffrogge * Create a new git repository 61*b08c3d51SMarkus Hoffrogge * 62*b08c3d51SMarkus Hoffrogge * Accepts a creation path, and, optionally, a source path 63*b08c3d51SMarkus Hoffrogge * 64*b08c3d51SMarkus Hoffrogge * @access public 65*b08c3d51SMarkus Hoffrogge * @param string repository path 66*b08c3d51SMarkus Hoffrogge * @param string directory to source 67*b08c3d51SMarkus Hoffrogge * @param \action_plugin_gitbacked_editcommit plugin 68*b08c3d51SMarkus Hoffrogge * @return GitRepo 69*b08c3d51SMarkus Hoffrogge */ 70*b08c3d51SMarkus Hoffrogge public static function &create($repo_path, $source = null, \action_plugin_gitbacked_editcommit $plugin = null) { 71*b08c3d51SMarkus Hoffrogge return GitRepo::create_new($repo_path, $source, $plugin); 72*b08c3d51SMarkus Hoffrogge } 73*b08c3d51SMarkus Hoffrogge 74*b08c3d51SMarkus Hoffrogge /** 75*b08c3d51SMarkus Hoffrogge * Open an existing git repository 76*b08c3d51SMarkus Hoffrogge * 77*b08c3d51SMarkus Hoffrogge * Accepts a repository path 78*b08c3d51SMarkus Hoffrogge * 79*b08c3d51SMarkus Hoffrogge * @access public 80*b08c3d51SMarkus Hoffrogge * @param string repository path 81*b08c3d51SMarkus Hoffrogge * @param \action_plugin_gitbacked_editcommit plugin 82*b08c3d51SMarkus Hoffrogge * @return GitRepo 83*b08c3d51SMarkus Hoffrogge */ 84*b08c3d51SMarkus Hoffrogge public static function open($repo_path, \action_plugin_gitbacked_editcommit $plugin = null) { 85*b08c3d51SMarkus Hoffrogge return new GitRepo($repo_path, $plugin); 86*b08c3d51SMarkus Hoffrogge } 87*b08c3d51SMarkus Hoffrogge 88*b08c3d51SMarkus Hoffrogge /** 89*b08c3d51SMarkus Hoffrogge * Clones a remote repo into a directory and then returns a GitRepo object 90*b08c3d51SMarkus Hoffrogge * for the newly created local repo 91*b08c3d51SMarkus Hoffrogge * 92*b08c3d51SMarkus Hoffrogge * Accepts a creation path and a remote to clone from 93*b08c3d51SMarkus Hoffrogge * 94*b08c3d51SMarkus Hoffrogge * @access public 95*b08c3d51SMarkus Hoffrogge * @param string repository path 96*b08c3d51SMarkus Hoffrogge * @param string remote source 97*b08c3d51SMarkus Hoffrogge * @param string reference path 98*b08c3d51SMarkus Hoffrogge * @param \action_plugin_gitbacked_editcommit plugin 99*b08c3d51SMarkus Hoffrogge * @return GitRepo 100*b08c3d51SMarkus Hoffrogge **/ 101*b08c3d51SMarkus Hoffrogge public static function &clone_remote($repo_path, $remote, $reference = null, \action_plugin_gitbacked_editcommit $plugin = null) { 102*b08c3d51SMarkus Hoffrogge return GitRepo::create_new($repo_path, $plugin, $remote, true, $reference); 103*b08c3d51SMarkus Hoffrogge } 104*b08c3d51SMarkus Hoffrogge 105*b08c3d51SMarkus Hoffrogge /** 106*b08c3d51SMarkus Hoffrogge * Checks if a variable is an instance of GitRepo 107*b08c3d51SMarkus Hoffrogge * 108*b08c3d51SMarkus Hoffrogge * Accepts a variable 109*b08c3d51SMarkus Hoffrogge * 110*b08c3d51SMarkus Hoffrogge * @access public 111*b08c3d51SMarkus Hoffrogge * @param mixed variable 112*b08c3d51SMarkus Hoffrogge * @return bool 113*b08c3d51SMarkus Hoffrogge */ 114*b08c3d51SMarkus Hoffrogge public static function is_repo($var) { 115*b08c3d51SMarkus Hoffrogge return ($var instanceof GitRepo); 116*b08c3d51SMarkus Hoffrogge } 117*b08c3d51SMarkus Hoffrogge 118*b08c3d51SMarkus Hoffrogge} 119*b08c3d51SMarkus Hoffrogge 120*b08c3d51SMarkus Hoffrogge/* End of file */ 121