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