事情的前因后果,这里不再讲述,直接切入主题进行项目开发,谨以此献给喜欢研究 GIT 的小伙伴

项目结构:

+ router.php // 路由文件
+ app.php // 应用文件
+ git.php // Git 操作核心文件
+ index.php // 入口文件

接下来,将用倒叙的方式,对 git server 进行展开,首先,看一下 index.php

$router = new Router;
$app = new App;$app->gitRoot = 'D:\Code\git-demo';// 设置 git 仓库目录,用于服务器端存放各 git 仓库// get repo info/refs
$router->any(['get', 'head'], '/*\.git/info/refs', [$app, 'getInfoRefs']);$router->post('/*\.git/git-[a-z]+-pack', [$app, 'command']);// access file contents
$router->any(['get', 'head'], '/*\.git/*', function() {return false;});$router->post('/create', function() {echo Git::init('mine');
});$router->run();

动手开发一个简易的 PHP for Git Server 第一章相关推荐

  1. 经典《像素鸟》游戏,难道你不想自己动手开发一个嘛(附源码免费下载)

    经典的飞机大战游戏,难道你不想自己动手开发一个嘛! 语言:Java 代码的编译软件:Eclipse 如果你用的也是eclipse的话 直接导入文件 就可以 ,如果不是的话,自己建一个项目,将代码cop ...

  2. 经典《飞机大战》游戏,难道你不想自己动手开发一个嘛(附源码免费下载)

    经典的飞机大战游戏,难道你不想自己动手开发一个嘛! 语言:Java 代码的编译软件:Eclipse 如果你用的也是eclipse的话  直接导入文件 就可以  ,如果不是的话,自己建一个项目,将代码c ...

  3. 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器...

    [索引页] [×××] 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器 作者:webabcd 介绍 Silverlight 2.0 ...

  4. 动手开发一个有用的 ABAP ALV 工具 - 查看指定用户的 ABAP 传输请求试读版

    本专栏计划的文章数在 150 篇左右,到 2022年10月6日为止,目前已经更新了 56 篇,专栏完成度为 37.3% 零基础 ABAP 学习教程系列文章的目录 1. ABAP 标准培训教程 BC40 ...

  5. python的Tkinter库简单应用——开发一个简易计算器

    利用python的Tkinter库开发一个简易计算器 文章目录 利用python的Tkinter库开发一个简易计算器 前言 一.实验准备 二.开发步骤步骤 1.引入库 2.界面设计 3.关键--实现T ...

  6. arduino智能浇花系统_解放双手!自己动手做一个简易智能浇花系统

    原标题:解放双手!自己动手做一个简易智能浇花系统 面对疫情,宅在家的我们可以以各种方式为战"疫"一线的医护工作者.紧急研究病毒的科研人员.口罩厂日夜工作的人们......加油打气. ...

  7. Angular 原理图 Schematics 学习 - 动手开发一个实际的例子

    当 ng add 命令向项目中添加某个库时,就会运行原理图.ng generate 命令则会运行原理图,来创建应用.库和 Angular 代码块. 一些术语: 规则 在原理图 中,是指一个在文件树上运 ...

  8. Fyne 折腾手记:开发一个简易桌面应用

    文章首发于个人公众号:「阿拉平平」 最近试了下用 Fyne 库开发桌面应用,特此记录和分享一下.本文演示环境为 Windows,Fyne 版本为 1.2.3. 简介 Fyne 是一个 Go 语言开发的 ...

  9. Android 从零开发一个简易的相机App

    本文介绍了实现一个简易Android相机App过程中,遇到的一些问题,对Camera API的选型.通知相册更新.跳转相册.左右滑动界面切换拍照/录像,相机切换时候的高斯模糊虚化效果.相机切换的3D效 ...

最新文章

  1. 创建试图 失败_导致微服务失败的 11 个原因
  2. Building wheel for wrapt (setup.py) ... error的解决办法(图文)
  3. python3爬虫初探(五)之从爬取到保存
  4. c语言不能在函数中求数组大小,C语言中数组长度不能用变量定义吗?
  5. Linux crontab 定时任务命令详解
  6. Spark2.1.0——运行环境准备
  7. PHP获取本月当月,起始结束日期
  8. 锐捷校园网环境下设置统信UOS(Linux)自动连接网络
  9. 英文科技论文写作中常见的问题和技巧(自用整理)
  10. windows下同一台电脑安装两个mysql数据库
  11. android手机可以分屏么,安卓手机怎么分屏操作 安卓手机分屏操作设置教程
  12. html 中的 css 的强制换行与不换行文本
  13. Android 解压 Zip 压缩文件
  14. aws 短信验证_在AWS Kubernetes上进行抛光的rshiny身份验证
  15. [MachineLearning] 机器学习速成笔记 - Bilibili
  16. BGP MPLS VPN(OPTION A)实验笔记
  17. 佳明 Venu 2 Plus评测
  18. 基于政治优化算法的函数寻优算法
  19. web实时长图实践--摘抄
  20. JS面试系列之防抖

热门文章

  1. 无界面(webdriver.PhantomJS)访问有道
  2. oracle having用法
  3. Response笔记
  4. 2021年程序员1月薪资大幅度上涨,你的2021有奔头了吗?
  5. Java编程在线学习靠谱吗?能学会吗?
  6. python 字符串格式符
  7. 算术表达式的实现,支持加减乘除,括号运算,表达式转二叉树
  8. 实现一个简单的模板引擎,输入模板和数据,输出html
  9. Hbase中的列式表映射到hive的外表
  10. linux的lsof命令详解