基于Git的维基

2020-09-02 20:49:18

多年来,我一直使用不同的工具来保存以后可能需要的信息。我使用过MS OneNote、Evernote、Workflow、Dynist、Concept、其他几个托管和自托管的维基系统,可能还有很多其他东西。

如果让我从所有这些中挑出一个最喜欢的,我会选Workflow。这是一个超级简单的文本大纲视图。您可以从单个顶级页面开始。每个页面都是一个项目列表,并且每个页面都可以有一个嵌套的子列表,其深度实际上是无限的。但您也可以将焦点放在任何节点上,使其本身成为一个页面。Dynist非常相似,但是你可以得到多个列表,并且可以添加图片、花哨的格式、复选框以及其他各种时髦的功能。从表面上看,它听起来要好一百万倍,但有了这些华而不实的东西,我感觉我正在失去Workflowy优雅的简洁性。

这些系统中有一点我不喜欢,那就是其他人拥有你的数据。如果是在线系统,可能很难离线访问。有些维基系统确实在本地运行,但是您可能会失去在线功能。

几个月前,我想出了一个系统,现在我完全相信这个系统。它非常简单,只涉及GitHub(或GitLab或Bitbucket,或自托管的Git repo或其他任何文件)和标记文件。

老实说,这个系统本身是如此简单,以至于当我开始描述它的时候,似乎几乎是如此明显,我在猜测为什么我甚至不得不描述它。但我确实经历了几次迭代,才把它写成我喜欢的样子。

首先创建一个git回购(在线或本地)。创建一个名为docs的文件夹和一个readme.md文件。在主文件中创建并维护链接项目符号列表。这是指向维基中所有顶级页面的索引。每个链接都应该指向Docs文件夹中的另一个标记文档。下面是一个示例:

之所以会出现顶层的docs文件夹,是因为当您第一次访问wiki时,它将显示所有文件的列表,然后在该列表下面呈现您的readme.md文件。如果您的项目根目录中有大量文档,您的自述文件将滚动到页面之外。使用此设置时,始终只有两个顶级项目,即文件夹和您的自述文件。这是直接转到回购时的样子:

现在,在您的docs文件夹中,为索引中的每个项目创建一个标记文件。我在这里做的一个很好的技巧是创建一个指向主自述文件的链接,作为该文件的第一行。例如:

现在,您将有一个链接返回到您来自的地方。这就是它在行动中的表现:

[家长](../Readme.md)#生日|谁|何时|礼物||-||掌心|01/01/20|威士忌||猫咪|05/08/23|鲜花||Sis|08/09/42|礼品卡。

现在您可以开始为子类别制作文件夹了。例如,项目页面如下所示:

项目A链接指向project_a/index.md,类似于项目B的链接,这两个文件都将作为其父文件链接回docs/projects.md:

将这些文件命名为index.md而不是readme.md打破了最高级别和较低级别之间的对称性,但我不介意。

当然,这些项目可以包含其他文档,甚至可以包含嵌套文件夹。只要您在页面顶部包含这些父链接,并使用这些链接向后导航,您就可以始终查看呈现的标记文件。

这只是设置子类别的一种方式。你想怎么组织完全由你决定。这就是它的美妙之处。

您可以从登录到GitHub的任何位置在线访问您的内容。但同时,您始终可以在您想要的任何计算机上保留完整的本地备份。改变只是一步之遥。没有PITA那种“以json格式导出数据”的流程。让它始终保持最新状态。您甚至可以通过cronjob每天进行一次本地推送/拉送,或者更频繁或更少地进行推送/拉送。

在线内容在Web上以HTML格式很好地呈现,但在您的本地系统上也完全可读和可编辑。当然,如果您使用的是简单的文本编辑器,您可能会错过可点击的链接和图像。

只需点击一下即可在线编辑内容。只需在查看标记文件时单击铅笔图标,即可进入编辑模式。保存后,您将返回到HTML视图。

如果您确实处于脱机状态,您仍然可以编辑本地文件。如果您最终遇到了冲突,在工具将如何解决它的问题上,您不受它的摆布。这是一个您已经熟悉的直截了当的git合并、冲突解决工作流。完全控制。

当然,这是GIT,所以您对每个文件所做的每一次更改都是提交、跟踪、可恢复的,永远不会丢失。

总体而言,我真的开始依赖这个系统了。我一直在想要补充的东西。每当我想出什么,或者找到一些我知道我想要回来的有趣的数据时,它就会出现在维基上。我发现自己一直在积极地使用它。

我考虑过的其中一件事是使一些工作自动化。主自述文件和子类别索引文件可能会自动生成。那就不是火箭科学了。遍历每个标记文件并列出清单。对于每个文件夹,在该文件夹中查找索引文件并将其添加到列表中。然后用更新后的清单重写该自述/索引文件。递归地遍历这些文件夹。如果您有执行此操作的脚本或工具,或许可以通过GitHub操作运行它。

如果我只是在本地编辑,我可以很容易地设置一个编辑器命令来创建文件并链接到它。但我发现自己更多的是在网上使用维基,而不是本地使用。所以我不得不继续考虑这一切。

这里有一个我专门为这篇文章创建的示例维基的链接。(我真正的个人维基是私人的。)

你可以随意修改它,或者直接复制这个想法,让它变得更好。如果你对如何改进它有什么好主意,请回馈给我们。