演示视频
起源
项目要通过 git 进行离线管理,文档希望可以和项目一起走,思源笔记提供的双链模式很适合用于开发文档的编写和二次整理,希望探究一个基于 Git 的 SiYuan 笔记管理方式,实现笔记的另一种协同(可能还是会有多方面问题)。
思路
目标是在 git 项目中管理思源笔记,其本质是可以将任意文件夹启动为思源的工作目录。
- 探索需要管理的文件,根据用户手册的说明只管理 data 文件夹即可
- 需要以内核模式启动 SiYuan 笔记。
- 可以通过脚本将内核关闭,也可以启动的时候使用 非驻留模式,在不访问笔记本时自动关闭内核。
- 启动完内核后直接启动APP。
实践
通过 Web 启动
- 建立 git 空项目,并在内部建立 docs 文件夹(一般项目都是将 docs 作为文档目录)。
- 编写 SiYuan 笔记的内核启动脚本,中间的 ping 是保证 kernel 完全启动后再开启浏览器。
start "siyuan-kernel" "C:\Program Files\SiYuan\resources\kernel\SiYuan-Kernel.exe" --wd="C:\Program Files\SiYuan\resources" --workspace=".\docs" --resident=falseping -n 2 0.0.0.0 1>nul 2>nulstart http://127.0.0.1:6806
- 编写 gitignore 文件 只管理 data 文件夹,同时不管理历史,下面的 gitignore 文件放到文档根目录即可。(这里没有管理思源笔记的)
/sync/temp/backup/conf/**/.siyuan/history
- 至此可以正常使用
通过 App 启动
- 还是在刚才的文件夹内修改启动脚本为如下所示
start "siyuan-kernel" "C:\Program Files\SiYuan\resources\kernel\SiYuan-Kernel.exe" --wd="C:\Program Files\SiYuan\resources" --workspace=".\docs" --resident=falseping -n 2 0.0.0.0 1>nul 2>nulstart "siyuan" "C:\Program Files\SiYuan\SiYuan.exe"
- 至此可以正常使用
验证笔记被clone后依然可以使用
- 在 git 库中生成 二进制版本文件(这里用了我自己写的小工具,具体情况就不展开了)
- 将二进制文件克隆到新的位置,用脚本启动。
- 修改笔记内容,保存。
- 提交笔记
- 在老仓库拉取笔记内容
- 验证可以通过 git 管理笔记
小工具
根据上述原理,开发了一个小工具 ys-cli。此软件可以用于生成上述脚本,同时在执行后删除生成的脚本文件。
执行命令如下:
ys-cli tool siyuan -w "./docs"
工具的帮助信息如下:
介绍:在当前目录启动思源内核,以非驻留模式启动使用:ys-cli tool siyuan [命令] [选项]选项:-r,--readonly [节点: app.readonly]是否以只读模式启动 SiYuan 内核。-s,--siyuan [默认值: ] [节点: app.siyuan]思源笔记的安装目录,会自动去搜索 SiYuan-Kernal.exe 的路径-w,--workspace [默认值: ./docs] [节点: app.workspace]workspace 的路径
这里是一个通用的启动脚本
- 只读模式启动
ys-cli tool siyuan --readonly -w ./
- 正常模式启动
ys-cli tool siyuan -w ./
