長期維護Hugo網站,有二個事情要考量
一個是Hugo主程式的版本
一個是主題的版本,或者準確的說,使用的主題是第幾個git commit版本
Hugo主程式常常有在更新,語法偶爾會變化,故更新之後要改寫你的主題。若是使用別人做的主題,也要定期追蹤上游變更,否則會建置失敗。
有常常在更新的Hugo主題,多半會指定Hugo主程式版本,Hugo版本太舊或太新都會建置失敗。
故,如何更新Hugo主題便成為一個問題。若是直接套用主題還好,git pull覆蓋即可,但如果你又額外在主題上做了一些layout override,就得手動合併變更。
1. 不更新Hugo的做法#
是的你可以選擇不要更新,讓Hugo版本停留在固定版本。畢竟Hugo主程式只是一個二進位檔,取得舊版本很容易。雲端部署的時候也能夠指定Hugo版本。
如果Linux是透過套件管理器安裝Hugo的,可以用一些手段防止它自動更新(如apt mark
),再不濟還有直接下載特定版本二進位檔的做法。
至於Hugo主題,通常可以用git commit去鎖定版本。在git submodule add時候,它就會自動記住那個版本。日後git clone的時候會自動下載那個commit的主題。
2. 使用git submodule更新主題#
以我用的 Blowfish主題為例,我是透過git submodule安裝的。
更新主題前,請先git push所有變更到遠端儲存庫。
為了不影響到主幹,做一個新branch
git branch dev
git checkout dev
由於我不會直接改主題原始碼,而是用 layout override的方式去覆寫,所以能夠安心的直接拉取最新版。
更新git submodule,拉取遠端最新commit
git submodule update --remote --merge
3. 查看上游變更#
接著開git diff,比對程式碼。
Visual Studio Code是個不錯的工具。
手動比對修改過的檔案,再更新到最新版。
確認可以了之後再git branch -m
回master。