3

我想在我的服务器上运行一个dokuwiki.org 。我正在使用基于文件的设置,因此不涉及外部数据库。

我想设置一个包含 dokuwikidata目录的 git 存储库,以便多个提交者能够脱机工作并在完成后将更改推回。git仓库中的data目录没什么大不了的,你可以data使用dokuwiki的config-files设置目录的位置。

我使用指南进行了所有设置,并且按预期工作。

tl;指南博士:

  • 设置bare回购
  • post-receive挂钩裸仓库以导航到htdocs目录并从仓库签出更改bare
  • 您将某些内容推送到存储库,htdocs目录会自动签出存储库中的更改。

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

我的问题是,www每次有人通过基于 Web 的 wiki 而不是他们本地存储库中的文件编辑某些内容时,目录都会更改 -> 更改不会被推送回bare存储库,因为没有钩子/方式/...到去做。

我在这里有什么遗漏或更好的方法来处理这个用例吗?

4

2 回答 2

0

我唯一想到的就是让网站本身成为一个存储库(称之为wwwrepo),并且人们在开发人员推送之前从中提取。您可以使用git 插件提交网站上发生的更改。

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

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

于 2012-09-16T16:57:44.053 回答
0

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

从您的描述中看不出来,但如果您打算“仅”更改data/pagesand中的内容data/media,您将错过对元数据的更改。这意味着多个提交只会在页面的旧修订版上显示为单个修订版,并且会丢失提交消息/更改摘要等其他数据。

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

于 2012-11-18T12:54:29.570 回答