oblik / kirby-git
在 Kirby 控制面板中显示 Git 变更,并允许您手动或自动添加/提交/推送它们。
Requires
- getkirby/cms: ^4
- getkirby/composer-installer: ^1.2
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-25 06:38:30 UTC
README
有关贡献说明,请查看 CONTRIBUTING.md。谢谢!
注意:一旦 Kirby 3.6 文档出现(特别是UI 套件),我将能够投入一些时间,添加我计划已久的几个功能。
Kirby Git
在 Kirby 控制面板中显示 Git 变更,并允许您手动或自动添加/提交/推送它们。
安装
使用 Composer
composer require oblik/kirby-git
注意:此插件需要 Git 版本 2.22.0
或更高。有关如何在服务器上更新它的说明,请参阅 此处。
用法
为了成功使用此插件(以及 Git),您需要独立的分支以避免覆盖历史记录。
假设您的仓库托管在 GitHub 上。这意味着您有一个名为 origin
的远程仓库,它指向该 GitHub 仓库。示例设置
live
是在实时服务器上检出的分支。内容更改通过此插件从面板推送到origin/live
。您绝对不应该通过其他方式将更改推送到origin/live
。这将允许编辑器始终能够提交和推送新更改。dev
是您在本地机器上本地进行开发工作的分支。您可以自由地进行网站更改和内容更改,并将它们推送到origin/dev
以供其他开发者拉取。master
是您合并其他两个分支的地方。您从origin/live
拉取内容更改,将它们与您的本地dev
上的更改合并,本地解决冲突,并推送到origin/master
。
每当面板中的某人发出拉取请求时,如果可能进行 快速前进 合并,origin/master
分支将被获取并合并到服务器上的本地 live
。这意味着如果 live
上有未反映在 origin/master
上的更改,合并将失败。
示例流程
- 您将 C1(提交 1)和 C2 从您的
dev
推送到origin/dev
- 编辑器将 C3 和 C4 从
live
推送到origin/live
- 您从
origin/live
拉取 C3 和 C4 到您的本地live
- 您将
master
与dev
和live
合并,结果生成合并提交 C5 - 现在您的
master
具有所有 C1、C2、C3 和 C4,并将其推送到origin/master
- 编辑器将能够拉取
origin/master
并快速前进到 C5,该 C5 具有您的 C1 和 C2
如果编辑在合并到 origin/master
之前在自己的 live
上创建了一个新的提交 C6,那么合并将会失败,因为 C6 在 origin/master
上还不存在。因此,他们将 C6 推送到 origin/live
,你将其拉取,与 master
合并,并将其推送到 origin/master
。之后,编辑将能够拉取。
配置
插件期望仓库已经初始化并设置好了。你只需要提供一个指向该仓库的路径,并检出它应该使用的分支。
插件选项使用点表示法在 site/config/config.php
中指定。例如
return [ 'oblik.git.repo' => '/path/to/repo', 'oblik.git.merge' => 'master', ... ];
bin
使用哪个可执行文件。如果你机器上有多个 Git 版本,可能需要指定此选项。
默认: git
repo
包含 Git 仓库(一个 .git
文件夹)的文件夹的路径。
默认: kirby()->root('index')
(项目文件夹)
remote
用于从远程分支拉取和推送到远程分支的远程。
默认: origin
merge
在发出拉取请求时用于合并的分支。
默认: master
hooks
一个用于触发 git add
和 git commit
的 Kirby 钩子 数组。例如
return [ 'oblik.git.hooks' => [ 'site.update:after', 'page.update:after' ] ];
在上面的配置中,每当页面或网站对象更新时,都会创建一个新的提交。然而,这可能会导致你的仓库中充斥着数百(甚至数千)个提交。你可以使用像 user.login:after
这样的钩子,它会更少地触发。
默认: null
log
此插件执行的每个命令都将记录的文件的绝对路径。例如
return [ 'oblik.git.log' => '/path/to/kirby-git.log' ];
日志将看起来像这样
git -C /var/www/site status -u --porcelain 2>&1
git -C /var/www/site rev-list --count master 2>&1
git -C /var/www/site log origin/master..master --format=%h 2>&1
git -C /var/www/site log master --pretty=format:"%h|%an|%ae|%ad|%s" --skip="0" --max-count="15" 2>&1
...
默认: false
部分
要显示 Git 变更的摘要,你可以在 blueprint 中使用 git
部分
title: Page sections: changes: type: git headline: Git Status
视图
在面板视图中,你可以非常简单地添加、提交和推送更改。只需三个列和三个按钮
REST API
该插件使用 Kirby 的 REST API 为面板视图提供与 PHP 通信的方式。你同样可以使用它!请查看各种路由 这里。
API
你还可以通过 Git
类与 Git 一起工作。例如
use Oblik\KirbyGit\Git; $git = new Git(); $git->add(); $git->commit('my message'); $git->push();