记一次Hexo Next主题的小小小升级(v6.3.0 → v6.4.0)
软件维护有两种截然不同的思路,一种所有的依赖都追踪最新版,一旦出最新版立即开始试用,出问题马上反馈社区或者解决,这样虽然经常需要适配新版,但每次都是小问题,很快就能解决。这是活着的软件,虽然每天都要吃饭很麻烦,但你能看见它的新陈代谢。
另一种所有的依赖都选择一个不会变的固定版本,能不升级就不升级,旧版本的bug想办法workaround,这种软件的开发者害怕改变,能推到明天的工作绝对不在今天做,并且喜欢以“项目规模太大,客户要求严格,风险太高”为理由,得过且过,这种是死掉的项目,只是还没有埋而已,在这种项目上你会发现做变更也特别困难,许多现代项目里非常常见的功能根本加不进去(因为依赖库不支持)
活着的项目可能会死,死掉的项目是几乎不可能再活过来的,落后太多版本,一旦升到最新版就发现到处都是问题修不过来了,因为没有跟踪过依赖的版本变更,也搞不清楚可能是什么问题。像JDK这种已经算好的了,不兼容的情况一般比较少,但JDK都不肯升,依赖库肯定也全是JDK6版本的了,要把依赖库直接升到10,只能选择死亡了。
作者:灵剑 链接:https://www.zhihu.com/question/30137699/answer/476916096
以上为知乎上的一个回答. 个人觉得如果对于自己非常熟悉的第三方依赖, 并可以把握风险的话, 还是会不断的去追求最新版本. 毕竟对于新事物的好奇心是活在一个优秀程序员血液里的东西.
本文简单记录了Hexo Next主题升级版本(v6.3.0 → v6.4.0)的完整过程.
本地添加远程仓库(upstream)
博主本地的theme/next
文件夹是fork下来到自己的仓库, 再通过submodule管理的:
所以第一次更新主题版本时, 要添加远程仓库(upstream): git remote add upstream git@github.com:theme-next/hexo-theme-next.git
下图可以看到origin
对应的是个人仓库, upstream
对应的是Next项目的仓库.
拉取Next最新代码
git fetch upstream
拉取Next项目最新的代码:
合并分支
git merge v6.4.0
合并代码:
可以看到post-reward.styl
文件出现冲突(conflict)了.
解决冲突后, 马上就大功告成了!!!
git记录
git log
可以清楚的看到 合并Next主题代码和本地代码合并的记录:
其他
升级后NexT的版本还是显示v6.3.0
,
在telegram的群里问里一下, 竟然是..发布tag的时候忘记改version了.
那么问题来了, 这个version变量是哪里来的呢? 再了解了一下, 原来是从package.json
里取的(themes/next/scripts/helpers.js
):
cheers, 笔芯❤️
-eof-