oblik/kirby-git

在 Kirby 控制面板中显示 Git 变更,并允许您手动或自动添加/提交/推送它们。

资助包维护!
OblikStudio

安装: 8,849

依赖项: 0

建议者: 0

安全性: 0

星星: 84

关注者: 9

分支: 6

开放问题: 14

语言:Vue

类型:kirby 插件

2.0.0 2024-02-04 07:30 UTC

README

有关贡献说明,请查看 CONTRIBUTING.md。谢谢!

注意:一旦 Kirby 3.6 文档出现(特别是UI 套件),我将能够投入一些时间,添加我计划已久的几个功能。

Kirby Git

在 Kirby 控制面板中显示 Git 变更,并允许您手动或自动添加/提交/推送它们。

demo gif in the panel

安装

使用 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 上的更改,合并将失败。

示例流程

  1. 您将 C1(提交 1)和 C2 从您的 dev 推送到 origin/dev
  2. 编辑器将 C3 和 C4 从 live 推送到 origin/live
  3. 您从 origin/live 拉取 C3 和 C4 到您的本地 live
  4. 您将 masterdevlive 合并,结果生成合并提交 C5
  5. 现在您的 master 具有所有 C1、C2、C3 和 C4,并将其推送到 origin/master
  6. 编辑器将能够拉取 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 addgit commitKirby 钩子 数组。例如

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

git status section

视图

在面板视图中,你可以非常简单地添加、提交和推送更改。只需三个列和三个按钮

git panel view

REST API

该插件使用 Kirby 的 REST API 为面板视图提供与 PHP 通信的方式。你同样可以使用它!请查看各种路由 这里

API

你还可以通过 Git 类与 Git 一起工作。例如

use Oblik\KirbyGit\Git;

$git = new Git();
$git->add();
$git->commit('my message');
$git->push();