2012-09-16 26 views
3

我想在我的服务器上运行dokuwiki.org。我正在使用基于文件的设置,因此没有涉及到外部数据库。使用Git与多个提交者部署网站

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

我用this指南来设置一切,它的工作正常。

TL;导向的DR:

  • 设置bare回购
  • post-receive钩在所述裸回购导航到htdocs目录和检出从bare回购的变化。
  • 您将某物推入回购库,并且htdocs目录会自动检查回购库中的更改。

因此,该指南仅在您将其用于静态网站或基于数据库的情况下才有用。

我的问题是,www目录每次改变别人在编辑通过基于Web的维基东西,而不是在他们的本地库中的文件 - >更改不会被推回bare库,因为没有钩/方式/ ...做到这一点。

有什么我在这里失踪或更好的方式来处理这个用例吗?

+0

以与静态文件版本相同的方式,对Web界面影响文件进行更改吗? – CharlesB

+0

网络接口只是将更改写入静态文件,而不是将它们写入数据库 - 因此它以相同的方式影响文件。 – mediocre

回答

0

有一个相当新的插件,它完全符合你的需求:gitbackend。它也支持拉入现场回购。

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

上述插件没有实现元数据或者改变,但能做到内部。如果你想写一个脚本在外部做某些事情,你可能想要登录到XML-RPC API

+0

我们在此期间通过使用dropbox&rsync cronjob来“解决”它。感谢插件,看起来就像我正在寻找的东西。 – mediocre

0

我唯一想到的就是将网站本身作为一个存储库(称之为www回购),并且在开发人员推送之前,人们将其从中拉出。您可以使用git plugin来提交发生在网站上的更改。

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

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