只放拖鞋的鞋櫃: Gitit - git based wiki

Monday, November 14, 2011

Gitit - git based wiki

最近又換了新的 wiki 系統來做個人筆記,雖然使用了 [pmwiki] 很長一段時間,遇上 [gitit] 之後我還是毅然決然地換過來。只因我發現原本希望 pmwiki + git 能夠做到的事情,在 gitit 上面更完整地做完了。

簡單來說 gitit 非常適合 git 狂熱份子

前些日子因為接案的需求,使用了不少 github 上面的 wiki。github 的 wiki 使用 markdown 的語法,甚至可以把整個 wiki clone 下來,在 local 端寫完東西之後直接 push 上去。這樣的使用情境非常符合我的需求,想說有沒有類似的 open source 工具,果不其然,用 haskell 寫成的 gitit 就擺在那裡。

gitit 有以下的特色是我特別重視的

  • 有搜尋功能,包括中文搜尋
  • 不要有 mysql 之類的 database
  • 不需要 Apache
  • 可以直接用 vim 等工具來編輯,紀錄東西就像寫文字檔一樣簡單
  • 使用 markdown 語法,寫完的文件能夠與其他工具接軌
  • 因此,網頁介面可以直接匯出 epub, odt...之類的檔案
  • 直接使用 git 管理 wiki 內容,寫程式習慣用 git 的人,寫起來毫無窒礙感
  • 由於使用 git 管理純文字檔,因此容易備份、重建


debian 系要安裝 gitit 非常簡單,一行指令就裝完了

$ sudo aptitude install gitit

啟動也非常簡單,只要開一個空目錄,在該目錄下執行指令

$ gitit

就會自動產生需要的檔案,並且啟動一個網頁伺服器。瀏覽器只要打開 http://localhost:5001 就可以存取了。在網頁介面上頭編寫內容之後,記下 comment 並儲存,檔案內容就會透過 git 紀錄在 wikidata 目錄底下。換句話說,只要備份 wikidata 這個目錄就不必擔心筆記會隨著硬碟損壞而消失。



gitit 有些預設的選項我不是很喜歡,譬如說
  • 預設要註冊一個帳號才能編輯 # 我是個人私用,理論上使用者只會有我一個人
  • 檔案上傳限制太小  # 所謂上傳檔案,就是把某個檔案加進 git 裡面
  • 預設版面我不喜歡  # 雖然我的螢幕不小,但我習慣 1024px 的寬度,太寬會讓文字排版變很醜
  • 我不喜歡原來的 logo
  • 預設的 html table 或是 code block 沒有特別的背景或是邊框

總而言之,我自己把我所需要的 config 打包了起來,大致看起來如下圖



使用方法也很簡單

# 產生一個目錄叫 wiki,取出我打包的東西之後在裡面產生一個 branch 叫 mynote
$ mkdir wiki && cd wiki
$ git clone git://github.com/walkingice/gitice.git wikidata
$ git --git-dir=`pwd`/wikidata/.git branch mynote
# 用來備份,別忘了在 myhost.net 上面產生一個 backup.git 的 git 目錄
$ git --git-dir=`pwd`/wikidata.git remote add myhost foo@myhost.net:~/path/to/backup.git
# 以後只要一行指令就可以備份了,放進 crontab 更是備份地神不知鬼不覺
$ git push myhost mynote:master
# 指定 config 檔來執行
$ gitit -f wikidata/gitit/config

必須注意的是,因為我更改了 config 檔,指定 static 與 templates 目錄位在 wikidata/gitit/ 底下,所以執行 gitit 的位置影響著 gitit 尋找 static templates 這兩個目錄。換言之,你要在 wikidata 這個目錄的上層目錄執行 gitit,才會正確找到這兩個目錄。

此外,gitit 還有 plugin 的功能,不過我不懂 haskell,就還沒有試過了。

你如果注意到有個 Category 的分類,其實它更像是 gmail 裡面的 label 功能,只要在某一個 page 的最上方加入

---
categories: Geek Tool
...

上方三個減號,下方三個點,中間補上 categories,這個 page 就會出現於 Geek 與 Tool 兩個分類之中。

0 意見:

Post a Comment