gitit - 基於 git 版控 wiki 平台

前言

之前使用 Dokuwiki 還算滿意,只可惜我希望能夠透過方便的 git 來做版控以及備份,而 Dokuwiki 上面的 git 套件年久失修,經常會有 bug,剛好想到成大資工有個 wiki 站是使用 gitit,就跳過來了~

安裝

sudo apt install gitit

安裝完後,建議產出預設設定檔

gitit --print-default-config > gitit.conf

常用指令

  • gitit -h 說明
  • gitit 在當前目錄產出相關檔案
  • gitit -f FILE.conf 指定設定檔啟動

優點

  • 支援中文搜尋
  • git 化管理

gitit 好處是支援中文搜尋,外國的產品常因為拉丁語系關係,他們以空白當作分詞判斷,而中文都是連在一起的沒有空白,搜尋自然出問題,幸好 gitit 有支援。

此外 git 管理真的是好的沒話說,方便查看哪些人在哪時候修改,透過 git hook 在每次 commit 時自動 push 到 GitHub repo 當作備份,真的完美!

下面這是我的自動 push 設定

$ cat .git/hooks/post-commit
#!/bin/sh
git push origin master 2>> logit

缺點

  • 編譯不易
  • apt 拿不到最新版

由於 gitit 使用 Hakshell 開發,必須安裝相對應的套件才能編譯,相信許多人對這語言頗陌生(我也是),在我裝完套件要編譯時又出了不少問題,時間壓力之下只好直接從 apt 去裝了,落後了幾個版本,不過沒遇到什麼 bug。

佈景主題

gitit 官方在 wiki 中有列出幾個佈景主題提供參考,成大資工也有釋出。

修改搜尋

在搜尋結果頁面,預設只會列出哪些項目有搜尋所包含的字詞,必須要點下去才會攤開來,顯示其上下文,因此稍微研究了一下程式碼,static/js/search.js 中加入下面的程式即可讓所有搜尋結果自動攤開啦!

$(function() {
    $('span.head').attr('onClick', 'toggleMatches($(this));');
    var pattern = $('#pattern').text();
    $('pre.matches').highlightPattern(pattern);
});

設定 Daemon 服務

Service 設定檔

[Unit]
Description=Wiki
After=network.target

[Service]
WorkingDirectory=/var/www/wiki
EnvironmentFile=/var/www/wiki/gitit.conf
ExecStart=/usr/bin/gitit -f gitit.conf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=3s

[Install]
WantedBy=multi-user.target

記得啟用開機自動登入:

sudo systemctl enable my-service

記得修改 gitit 設定檔中的路徑:

repository-path: /var/www/wiki/wikidata
static-dir: /var/www/wiki/static
templates-dir: /var/www/wiki/templates
cache-dir: /var/www/wiki/static/cache

comments powered by Disqus