2012-09-16 43 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能夠使用不是提交的外部修改。