📎 背景
Logseq 早期版本集成 GitHub 特性,支持同步文件至 GitHub 仓库, 因此个人也习惯将 Logseq 数据托管在 Git 仓库中, 联动 GitHub Action (pengx17/logseq-publish) 能够实现自动发布,非常方便。
Logseq Roadmap 计划在独立客户端中不再集成 GitHub 同步功能, 目前 Logseq iOS 客户端 (测试版) 仅支持使用本地或 iCloud 保存文件, iOS 上也无法直接操作 Git 仓库的内容。
那么在移动设备上编辑托管在 Git 仓库的 Logseq 数据成为了一个棘手的问题。
📎 以 macOS + unison 作为桥梁
个人目前主要用的设备是
- 办公 Macbook
- 移动 iPhone 和 iPad
在 macOS 上可以方便地管理 Git 以及 iCloud,并通过 unison 同步两侧内容。
📎 整体流程
📎 操作步骤
📎 准备环境
将 Git 仓库克隆至 macOS 本地:
git clone git@github.com:{remote_repo}.git ~/repositories/logseq
在 macOS 创建 iCloud 下的 Logseq 目录
mkdir -p /Users/{username}/Library/Mobile Documents/iCloud~com~logseq~logseq/Documents/graphs
安装 unison
brew install unison
建立 unison profile
mkdir -p ~/.unison vi ~/.unison/logseq.prf
root = /Users/{username}/repositories/logseq/ root = /Users/{username}/Library/Mobile Documents/iCloud~com~logseq~logseq/Documents/graphs/ ignore = Name .DS_Store ignore = Name .git ignore = Name custom.css ignore = Name pages-metadata.edn ignore = Name bak/* merge = Name * -> screen -DmS unisonmerge vimdiff CURRENT1 CURRENT2 merge = Name .* -> screen -DmS unisonmerge vimdiff CURRENT1 CURRENT2
注意:替换 {username}
为实际用户名, {remote_repo}
为实际仓库地址。
📎 执行同步
在 macOS 使用 Logseq 时仅操作 Git 本地目录;在 iOS 使用 Logseq 时操作 iCloud 目录。 当任一端内容发生变更后执行 unison 同步
unison logseq
📎 还有什么缺陷
- 每次变更后需手动执行 unison 同步
- 使用 unison 处理同一文件的冲突较复杂,具体操作参考: