72、【Ubuntu】【Hugo】搭建私人博客:Git 下载方式对比

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【Hugo】搭建私人博客:添加主题

分析了用 git submodule add 将 PaperMod 主题下载到 themes 目录中,然后进一步分析了 git submodule addgit clone 的区别,下面继续

搭建私人博客

上篇 blog 分析了 git submodule addgit clone 的一些差异,下面继续:

  • 协作一致性 :用 submodule 的话,所有人都可以得到完全相同的主题,而直接 clone,每个人拿到的版本可能都不一致,不利于多人协作开发
  • Git 历史清晰度 :用 submodule 主仓库就只记录博客内容变更,但如果用 clone,每次主题更新都会污染到主仓库历史

OK,下面举个例子,来具体看下

当前 PaperMod 的版本发布了 v1.0 ~ v8.0

假设后面 PaperMod 发布了 v9.0,修复了一个安全漏洞,如果用 git submodule 的话,要更新主题,可以用如下命令进行更新

bash 复制代码
cd themes/PaperMod
git fetch
git checkout v9.0
cd ../..
git add themes/PaperMod
git commit -m "Update theme to v9.0 (security fix)"
git push

只用 5 行 Git 命令,干净利落,主仓库历史清晰,只需要一条主题 commit 更新 Update theme to v9.0 (security fix)

而如果直接用 clone 的话,流程大致如下

  • 首先去 Gitee 下载 v9.0 的 zip 包
  • 解压,手动覆盖 themes/PaperMod 所有文件
  • 到主仓库 git add,发现几百个文件被修改(都是主题目录的)
  • 提交后,主题仓库 Git 历史里全是主题代码变更,和博客内容无关
  • 如果之前改过主题某行 CSS,那么还要手动解决 merge 冲突

可以看到,直接 clone 费时易错,污染历史,还难以回滚,有很多 弊端

另外,从安全与可追溯的角度 ,用 git submodule 的话,别人知道 themes/PaperMod 是来自另一个仓库 https://gitee.com/hitweston/paper-mod.git,而用直接 clone 的话,Git 会认为这些代码也是主仓库的一部分,别人就无法知道它其实是第三方主题,在开源项目中这就很重要,得尊重原作者,明确依赖来源

OK,介绍完 git submodulegit clone 的区别,下面回到主仓库,终端输入

bash 复制代码
git add .
git commit -m "Initial commit with PaperMod submodule"

将 PaperMod 主题 commit 更新到主仓库

在终端输入

bash 复制代码
git submodule status

可以看到当前主仓库依赖的是 PaperMod 哪次 commit 信息(v8.0)

OK,更新 hugo.toml 配置文件为如下内容

bash 复制代码
baseURL = "http://localhost:1313/"
languageCode = "zh-CN"
title = "我的博客"
theme = "PaperMod"

[params]
  defaultTheme = "auto"
  homeInfoParams.title = "欢迎来到我的博客"
  homeInfoParams.content = "这里记录技术与思考。"
  enableTOC = true

在终端输入

bash 复制代码
hugo server -D

可以预览博客网站,这里有几个点说下,首先终端输入

bash 复制代码
hugo server --help

查看命令说明如下

  • 首先,Hugo 自带一个 Web 服务器,能一边构建网站,一边提供服务(不需要额外再启动像 Python http.server 那样的 Web 服务)
  • 虽然 Hugo 性能很高,但也只是一个开发用的简易服务器,不支持像 Nginx/Apache 那样的高级功能,比如 HTTPS,或者反向代理等
  • 默认情况下,Hugo 会把生成的 HTML/CSS/JS 等静态文件写入磁盘,然后提供服务,不过也可以用 --renderToMemory 选项,让 Hugo 完全在内存中渲染,这样速度更快,但也更吃内存(没啥事儿的话,放磁盘就够了)
  • Hugo 会自动监听项目中的源文件,比如文章,配置,主题等,一旦保存了修改,Hugo 会立即重新构建网站(一般时间 < 100ms),并自动刷新浏览器页面,实现所见即所得的协作体验(这点很棒)

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【Hugo】搭建私人博客:Hugo&PaperMod 兼容问题

相关推荐
小义_17 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
梁洪飞18 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
_运维那些事儿18 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
Y1rong19 小时前
linux之文件IO
linux
Trouvaille ~19 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
嵌入小生00719 小时前
Shell | 命令、编程及Linux操作系统的基本概念
linux·运维·服务器
-Try hard-20 小时前
Linuv软件编程 | Shell命令
linux·运维·服务器
释怀不想释怀20 小时前
Linux快捷键,软件安装启动
linux·运维·服务器
Hello World . .21 小时前
Linux:软件编程
linux·运维·服务器·vim
人间打气筒(Ada)21 小时前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s