Block level diff and merge for Logseq
npm install @logseq/diff-mergeid::src. yarn dev to run it.[] at 0 index:
## hello
- world
- nice
- nice
- bingo
- world
`
branch:
`
## Halooooo
- world
- nice
- nice
- bingo
- world
`
result (notice the empty array at 0 index):
`
Array(7) [ [], (2) […], (1) […], (1) […], (1) […], (1) […], (1) […] ]
`
Reason: no insertion is needed before the first base block.
- The op (DELETE/EQUAL/INSERT) represents the one-to-one correspondence between blocks before and after diff-merge. Equal doesn't mean equal in content, it means that the block is the same block as it was before (e.g., same block UUID)Strategy:
- Resolve inner block conflict by line if block are shipped with uuid (e.g., id:: in Logseq Markdown)
- Do not execute delete operation if there is any "modified" equal block in the same position from other branches. This is to avoid deleting a block that is modified by other branches.Dev:
- Experiments: yarn dev
- Build dist: yarn build
- Publish to NPM: yarn publish`