演示视频

起源

项目要通过 git 进行离线管理,文档希望可以和项目一起走,思源笔记提供的双链模式很适合用于开发文档的编写和二次整理,希望探究一个基于 Git 的 SiYuan 笔记管理方式,实现笔记的另一种协同(可能还是会有多方面问题)。

思路

目标是在 git 项目中管理思源笔记,其本质是可以将任意文件夹启动为思源的工作目录。

  1. 探索需要管理的文件,根据用户手册的说明只管理 data 文件夹即可
  2. 需要以内核模式启动 SiYuan 笔记。
  3. 可以通过脚本将内核关闭,也可以启动的时候使用 非驻留模式,在不访问笔记本时自动关闭内核。
  4. 启动完内核后直接启动APP。

实践

通过 Web 启动

  1. 建立 git 空项目,并在内部建立 docs 文件夹(一般项目都是将 docs 作为文档目录)。
  2. 编写 SiYuan 笔记的内核启动脚本,中间的 ping 是保证 kernel 完全启动后再开启浏览器。
  1. start "siyuan-kernel" "C:\Program Files\SiYuan\resources\kernel\SiYuan-Kernel.exe" --wd="C:\Program Files\SiYuan\resources" --workspace=".\docs" --resident=false
  2. ping -n 2 0.0.0.0 1>nul 2>nul
  3. start http://127.0.0.1:6806
  1. 编写 gitignore 文件 只管理 data 文件夹,同时不管理历史,下面的 gitignore 文件放到文档根目录即可。(这里没有管理思源笔记的)
  1. /sync
  2. /temp
  3. /backup
  4. /conf
  5. /**/.siyuan/history
  1. 至此可以正常使用

通过 App 启动

  1. 还是在刚才的文件夹内修改启动脚本为如下所示
    1. start "siyuan-kernel" "C:\Program Files\SiYuan\resources\kernel\SiYuan-Kernel.exe" --wd="C:\Program Files\SiYuan\resources" --workspace=".\docs" --resident=false
    2. ping -n 2 0.0.0.0 1>nul 2>nul
    3. start "siyuan" "C:\Program Files\SiYuan\SiYuan.exe"
  1. 至此可以正常使用

验证笔记被clone后依然可以使用

  1. 在 git 库中生成 二进制版本文件(这里用了我自己写的小工具,具体情况就不展开了)
  2. 将二进制文件克隆到新的位置,用脚本启动。
  3. 修改笔记内容,保存。
  4. 提交笔记
  5. 在老仓库拉取笔记内容
  6. 验证可以通过 git 管理笔记

小工具

根据上述原理,开发了一个小工具 ys-cli。此软件可以用于生成上述脚本,同时在执行后删除生成的脚本文件。

执行命令如下:

  1. ys-cli tool siyuan -w "./docs"

工具的帮助信息如下:

  1. 介绍:
  2. 在当前目录启动思源内核,以非驻留模式启动
  3. 使用:
  4. ys-cli tool siyuan [命令] [选项]
  5. 选项:
  6. -r,--readonly [节点: app.readonly]
  7. 是否以只读模式启动 SiYuan 内核。
  8. -s,--siyuan [默认值: ] [节点: app.siyuan]
  9. 思源笔记的安装目录,会自动去搜索 SiYuan-Kernal.exe 的路径
  10. -w,--workspace [默认值: ./docs] [节点: app.workspace]
  11. workspace 的路径

这里是一个通用的启动脚本

  • 只读模式启动
    ys-cli tool siyuan --readonly -w ./
    
  • 正常模式启动
    ys-cli tool siyuan -w ./