[英]Deploy Website using Git with multiple committers
我想在我的服务器上运行dokuwiki.org 。 我正在使用基于文件的设置,因此不涉及外部数据库。
我想设置一个包含dokuwiki data
目录的git存储库,这样多个提交者就可以脱机工作并在完成后推送更改。 git存储库中的data
目录没什么大不了的,你可以使用dokuwiki的config-files设置data
目录的位置。
我使用本指南来设置所有内容,并且它按预期工作。
tl;指南博士:
bare
仓库 post-receive
hook导航到htdocs
目录并检查来自bare
仓库的更改。 htdocs
目录自动检查repo的变化。 因此,只有在将静态站点或基于数据库的内容用于指南时,该指南才有用。
我的问题是,每当有人通过基于Web的维基而不是本地存储库中的文件编辑某些东西时, www
目录就会被更改 - >这些更改不会被推回到bare
存储库,因为没有挂钩/方式/ .. 。要做到这一点。
有没有我在这里缺少或更好的方法来处理这个用例?
我想到的唯一一件事就是让网站本身就是一个存储库(称之为www
repo),人们在开发人员推动之前就将其从中拉出来。 您可以使用git插件提交网站上发生的更改。
这有缺点,因为您必须更改设置挂钩的方式。 基本上当有人推送到裸存储库时,你必须检查你的钩子,通过web界面进行的最后修改已经提交到www
repo(这意味着它的工作树是干净的),并且提交被推送包含他们(即他们从网站回购)。 如果是,那么裸存储库的钩子将新提交推送到www
repo。
但是我不知道这是否可行,以及git插件的质量。 但我没有看到任何其他东西让Git使用非提交的外部修改。
有一个相当新的插件可以完全满足您的需求: gitbackend 。 它还支持拉入现场回购。
从您的描述中不明显,但如果您计划“仅”更改data/pages
和data/media
,您将错过对元数据的更改。 这意味着几个提交只会在页面的旧版本上显示为单个修订,而其他数据(如提交消息/更改摘要)将丢失。
上述插件也未实现元数据更改,但可以在内部执行。 如果您更喜欢编写一个在外部执行某些操作的脚本,您可能希望挂钩到XML-RPC API 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.