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

相关推荐
.小小陈.3 小时前
Linux高频基础实用指南:从文件操作到日志
linux·运维·服务器
Java.熵减码农9 小时前
解决Linux修改环境变量后导致登录循环进不去系统的问题
linux·运维·服务器
天骄t10 小时前
嵌入式系统与51单片机核心原理
linux·单片机·51单片机
jayaccc10 小时前
Git命令大全:从入门到精通
大数据·git·elasticsearch
阿部多瑞 ABU10 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
徐同保11 小时前
nginx转发,指向一个可以正常访问的网站
linux·服务器·nginx
HIT_Weston11 小时前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿11 小时前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin11 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
论迹12 小时前
【Git】-- Git安装 & 卸载(ubuntu)
git·ubuntu·elasticsearch