我神不知鬼不觉地成了GitHub开源贡献者
前因后果
最近在写博客文章ChatGPT 广泛应用带来的风险和危机的时候, 需要较多的引用参考文献. 于是我想着找找, 看看hexo有没有插件用于作为参考文献的. 一番机缘之下, 我找到了hexo-reference-new, 遗憾的是, 这个插件只能支持引文的”硬编码”( 即[^1.]
这样的格式), 不支持[^someReference.]
, 自然也无法支持文献的自动编号(auto numbering). 引文无法自动编号简直是反人类好吧~ 😞
巧合的是, 瞌睡来了送枕头. 我在这个repo中看到了这样一个PR: modified render logics to support non-number footnote marks. 这个PR实现功能正是用[^someReference.]
编制引文, 并对引文自动编号.
遗憾的是, hexo-reference-new的管理员对这个2019年并没有兴趣合并. 更遗憾的是, modified render logics to support non-number footnote marks作者的repo也有部分代码是落后于hexo-reference-new的, 难道鱼与熊掌就不可兼得了嘛? 我擦~ 不认命的我显然不会认怂啊.
解决方案
仔细看了看modified render logics to support non-number footnote marks的补丁, 还好代码量不大. 于是我就准备自己从hexo-reference-newfork一份代码, 然后把modified render logics to support non-number footnote marks中的补丁用在我fork的库上, 接着在PR — 至于原作者merge与否, 我也管不了, 至少我得给自己将来的使用做个备份.
工作流程
以前对开源社区的支持, 我都是花钱赞助. 本以为自己要做一辈子的人民币玩家, 没想到我也有做开源贡献者的一天, 而且更莫名其妙的是, 我基本对JavaScript没什么概念, 读别人的js代码都是连猜带蒙的. 🤣
GitHub操作基本流程
回到正题, 我主要参考的是GitHub的官方教程: Get started with GitHub documentation. 在远程操作前, 可以先从Follow this Hello World exercise to get started with GitHub熟悉一下GitHub中repository branch, commit, pull request, merge等的概念:
flowchart TB z("old 'main' thread") --> a("create branch") --> b("edit code") --> c("commit changes") --> d("pull request") --> e("merge") --> f("new 'main' thread") f -.-> a & g("delete branch")
远程代码操作
这一部分主要参考Set up Git. 这一部分其实和GitHub操作基本流程雷同. 但是由于是远程操作, 这里主要涉及到远程登录, 主要参考资料是Cloning with HTTPS URLs. 这里我使用了最新潮的方式:Git Credential Manager.
根据上一段的操作, 大部分人在执行git命令需要验证身份时, 会自动弹出浏览器窗口进行身份验证, 非常方便.
只有一小部分倒霉蛋儿, 不知道上辈子做了什么孽, 需要额外的设置. 其中一部分人是因为在windows下使用wsl.ubuntu
终端系统, 无法自动弹出身份验证窗口. 我就是这些倒霉蛋儿中的一部分, 此时需要额外的操作, 具体方法参见Git Credential Manager setup