thathoff / kirby-git-content
插件,用于跟踪git仓库中内容的更改。
Requires
- czproject/git-php: ^4.0.1
- getkirby/composer-installer: ^1.1
Requires (Dev)
- getkirby/cms: ^3.6.0|^4.0.0
README
这是一个为Kirby构建的插件,可以将通过面板进行的更改提交并推送到您的git仓库。
要求
此插件支持从版本3.6(包括Kirby 4)的Kirby,并要求git版本 > 2.24
用法
您可以使用此插件将面板进行的更改提交并推送到您的git仓库。可以是自动的,通过将commit
选项设置为true
,也可以是手动访问面板视图并添加提交。
设置
下载并配置插件
通过composer安装(推荐)
composer require thathoff/kirby-git-content
通过git子模块安装
git submodule add https://github.com/thathoff/kirby-git-content.git site/plugins/git-content
手动安装
- 下载源代码
- 将文件夹复制到
site/plugins/git-content
。
为您的内容创建一个新的git仓库
创建一个新的git仓库,将内容推送到那里以初始化内容仓库并将其推送。
cd content # include .lock files in .gitignore echo ".lock" >> .gitignore # init repo git init git add . git commit -m "Initial Commit"
从当前git仓库中删除content/
文件夹
cd .. git rm --cached -r content git add -A git commit -m "Move Content Folder to separate repository"
配置
默认情况下,此插件仅将更改提交到内容仓库。建议设置一个cron作业,该作业调用yourdomain.com/git-content/push
。这将推送更改到远程仓库。通过使用cron作业,保存页面比启用push
选项要快得多,后者会在每次提交后推送更改。
此插件可通过Kirby选项进行配置。将以下条目添加到您的config.php
。
return [ // other configuration options 'thathoff.git-content.commit' => true, ];
配置选项
path
(字符串): 仓库路径,(默认:kirby()->root("content")
)pull
(布尔值): 首先拉取远程更改?(默认:false
)commit
(布尔值): 提交您的更改?(默认:true
)push
(布尔值): 将您的更改推送到远程?(默认:false
)commitMessage
(字符串): 配置提交信息的模板(默认::action:(:item:): :url:
)cronHooksEnabled
(布尔值): 是否启用/git-content/push
和/git-content/pull
端点。 (默认:true
)cronHooksSecret
(字符串): 当设置时,此秘密必须作为get参数与cronHooks一起发送。注意:如果您设置了一个秘密,则只有GET方法将在webhooks上工作。/git-content/(pull|push)?secret=S0up3rS3c3t
displayErrors
(布尔值): 保存页面时显示git错误(默认:true
)gitBin
(字符串):git
二进制文件路径disable
(布尔值): 如果设置为true
,则插件不会初始化。(默认:false
)disableBranchManagement
(布尔值): 如果设置为true
,则创建和切换分支的选项将隐藏。(默认:false
)helpText
(字符串): 提供在面板UI中显示的自定义帮助文本。(默认:null
)menuIcon
(字符串): 提供面板菜单项的自定义图标。(默认:sitemap
)menuLabel
(字符串): 提供面板菜单项的自定义标签。(默认:Git Content
)
自定义提交信息
默认情况下,提交消息由模板 :action:(:item:): :url:
组成。例如,对页面 example
的更改将以消息 update(page): example
提交。如果您想更改此消息,可以使用 thathoff.git-content.commitMessage
选项覆盖模板。
钩子
插件在内容通过接口或Web端点拉取或推送前后触发钩子。您可以使用这些钩子触发其他操作,例如在推送后部署您的网站或在拉取后清除缓存。
// site/config/config.php return [ // other configuration options 'hooks' => [ 'thathoff.git-content.push:before' => function () { // do something before a push }, 'thathoff.git-content.push:after' => function ($response) { // do something after a push }, 'thathoff.git-content.pull:before' => function () { // do something before a pull }, 'thathoff.git-content.pull:after' => function ($response) { // do something after a pull }, ], ];
Git LFS
随着时间的推移,您的存储库可能会增加,例如添加图片、音频、视频、二进制文件等。克隆和更新内容存储库可能需要很长时间。如果您可以使用 Git LFS,那么您可能应该使用它。以下是一个 .gitattributes 文件的示例:
*.zip filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
作者
由 Markus Denhoff 和 贡献者 维护和开发。初始版本由 Pascal Küsgen 创建。
由 reinorange GmbH 支持。