繁体   English   中英

使用Git与多个提交者一起部署网站

[英]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仓库的更改。
  • 你推送一些东西到repo, htdocs目录自动检查repo的变化。

因此,只有在将静态站点或基于数据库的内容用于指南时,该指南才有用。

我的问题是,每当有人通过基于Web的维基而不是本地存储库中的文件编辑某些东西时, www目录就会被更改 - >这些更改不会被推回到bare存储库,因为没有挂钩/方式/ .. 。要做到这一点。

有没有我在这里缺少或更好的方法来处理这个用例?

我想到的唯一一件事就是让网站本身就是一个存储库(称之为www repo),人们在开发人员推动之前就将其从中拉出来。 您可以使用git插件提交网站上发生的更改。

这有缺点,因为您必须更改设置挂钩的方式。 基本上当有人推送到裸存储库时,你必须检查你的钩子,通过web界面进行的最后修改已经提交到www repo(这意味着它的工作树是干净的),并且提交被推送包含他们(即他们从网站回购)。 如果是,那么裸存储库的钩子将新提交推送到www repo。

但是我不知道这是否可行,以及git插件的质量。 但我没有看到任何其他东西让Git使用非提交的外部修改。

有一个相当新的插件可以完全满足您的需求: gitbackend 它还支持拉入现场回购。

从您的描述中不明显,但如果您计划“仅”更改data/pagesdata/media ,您将错过对元数据的更改。 这意味着几个提交只会在页面的旧版本上显示为单个修订,而其他数据(如提交消息/更改摘要)将丢失。

上述插件也未实现元数据更改,但可以在内部执行。 如果您更喜欢编写一个在外部执行某些操作的脚本,您可能希望挂钩到XML-RPC API

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM