PHP的Git类
个人编写,用PHP执行GIT命令 主要编写目地是利用git的push钩子访问该PHP能实现push触发自动部署 只实现了pull方法,其余方法可以以类似方法实现 ?php/** * Class Git * @author Jacky.Zhuo * @time 2015-11-01 *///Git操作类class Git { private $_path; priva
个人编写, 用PHP执行GIT命令
主要编写目地是利用git的push钩子访问该PHP能实现push触发自动部署
只实现了pull方法, 其余方法可以以类似方法实现
<?php /** * Class Git * @author Jacky.Zhuo * @time 2015-11-01 */ //Git操作类 class Git { private $_path; private $_projectName; private $_owner; private $_username; private $_password; private $_host; private $_suffix = 'git'; private $_isHttps = false; private $_url = ''; private $_log; private $_output; private $_descriptorspec; /** * 构造函数 * * 设置git参数 * * @param string $path 项目本地路径 * @param string $projectName 项目名 * @param string $owner 拥有者 * @param string $username 帐号用户名 * @param string $password 帐号密码 * @param string $host 项目所在地址 * @param string $suffix 项目后缀 * @param boolen $isHttps 项目协议是否为https * @param string $log 访问日志文件路径 * @param string $output 命令日志文件路径 * @return void */ public function __construct($path = __DIR__, $projectName, $owner, $username, $password, $host, $suffix = false, $isHttps = false, $log = false, $output = false) { $configFields = array('path', 'projectName', 'owner', 'username', 'password', 'host'); //设置项目信息 foreach($configFields as $field) { if(empty($$field)) { throw new Exception("{$field} is empty!"); return false; } $this->{'_' . $field} = $$field; } //设置路径协议 if($isHttps) { $this->_isHttps = true; } //设置项目后缀 if($suffix) { $this->_suffix = $suffix; } //设置log地址 if($log) { $this->_log = $log; } else { $this->_log = __DIR__ . '/git_log.txt'; } //设置git命令返回记录文件地址 if($output) { $this->_output = $output; } else { $this->_output = __DIR__ . '/git_output.txt'; } //设置git命令参数 $this->_descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('file', $this->_output, 'a') ); //生成远程url $this->_createUrl(); } /** * pull方法 * * 从服务器中pull到本地 * * @param string $branch 默认为 origin master * @return boolen */ public function pull($branch = 'origin master') { $cmd = 'git pull ' . $this->_url . ' ' . $branch; return $this->_runCmd($cmd); } public function fetch() { } public function push() { } public function gclone() { } /* * 生成git地址url * * git地址格式 [https://][username]:[password]@[host]/[owner]/[projectName].[suffix] * * @reutrn void */ private function _createUrl() { $url = ''; //添加协议 if($this->_isHttps) { $url .= 'https://'; } else { $url .= 'http://'; } //添加用户名密码 $url .= urlencode($this->_username) . ':' . urlencode($this->_password); //添加地址 $url .= '@' . $this->_host . '/'; //添加项目地址 $url .= $this->_owner . '/' . $this->_projectName; //添加项目后缀 $url .= '.' . $this->_suffix; $this->_url = $url; } /* * log方法 * * 记录访问日志 * * @param string $msg 日志 * @return void */ private function _writeLog($msg) { $log = date('Y-m-d H:i:s') . ":\n"; $log .= $msg; $log .= "-------------------------------------\n"; file_put_contents($this->_log, $log, FILE_APPEND | LOCK_EX); } /* * 运行命令行 * * 该方法可以运行命令行, 并会自动记录命令行日志 * * @param string $cmd 要运行的命令行 * @return boolen */ private function _runCmd($cmd) { file_put_contents($this->_output, date('Y-m-d H:i:s') . ":\n", FILE_APPEND); $process = proc_open($cmd, $this->_descriptorspec, $pipes, $this->_path); if(is_resource($process)) { $output = stream_get_contents($pipes[1]); fclose($pipes[1]); } else { $output = 'no command'; } $returnValue = proc_close($process); file_put_contents($this->_output, "---------------------------------\n", FILE_APPEND); if($returnValue) { $this->_writeLog('Command faild.' . "\n"); return false; } else { $this->_writeLog('Command success: ' . $output); return true; } } } try { $git = new Git(__DIR__, 'project', 'owner', 'username', 'password', 'host', 'suffix', true); } catch(Exception $e) { echo $e->getMessage(); die; } $git->pull('test');

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

適合新手的加密貨幣數據平台有CoinMarketCap和非小號。 1. CoinMarketCap提供全球加密貨幣實時價格、市值、交易量排名,適合新手與基礎分析需求。 2. 非小號提供中文友好界面,適合中文用戶快速篩選低風險潛力項目。

IIS和PHP可以兼容,通過FastCGI實現。 1.IIS通過配置文件將.php文件請求轉發給FastCGI模塊。 2.FastCGI模塊啟動PHP進程處理請求,提高性能和穩定性。 3.實際應用中需注意配置細節、錯誤調試和性能優化。

在Idea中如何設置SpringBoot項目默認運行配置列表在使用IntelliJ...

關於SpringCloudAlibaba微服務的模塊化開發在使用SpringCloud...

繪製比特幣結構分析圖的步驟包括:1. 確定繪圖目的與受眾,2. 選擇合適的工具,3. 設計框架並填充核心組件,4. 參考現有模板。完整的步驟確保圖表準確且易於理解。

Git和GitHub是现代软件开发的关键工具。Git提供版本控制功能,通过仓库、分支、提交和合并管理代码。GitHub则提供代码托管和协作功能,如Issues和PullRequests。使用Git和GitHub可以显著提升开发效率和团队协作能力。
