xref: /plugin/gitbacked/classes/Git.php (revision b08c3d51e04f23d878d49c6b945b5f8a1aef6f50)
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