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 兼容问题

相关推荐
___波子 Pro Max.2 小时前
LInux cut 提取Git邮箱用户名命令解析
git
天骄t2 小时前
OSI与TCP/IP:网络协议栈深度解析
linux
无事好时节2 小时前
Linux 进程通信:信号与共享内存详解
linux·网络·网络协议
春日见2 小时前
如何提升手眼标定精度?
linux·运维·开发语言·数码相机·matlab
weixin_462446232 小时前
使用 Ubuntu 构建 code-server Docker 镜像的完整指南
linux·ubuntu·docker
Tipriest_2 小时前
Python 常用特殊变量与关键字详解
linux·python·关键字·特殊变量
一周困⁸天.2 小时前
GitOps 详解与工具链全解析
linux·运维·devops
坐吃山猪2 小时前
Python命令行工具Fire
linux·开发语言·python
叫致寒吧2 小时前
Docker资源限制 与数据卷
linux·运维·docker