From d5d37c9b7959a00599682595f7991902ba31a472 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sat, 15 Mar 2025 11:05:33 +0800 Subject: [PATCH] :art: Generate file history before converting doc to heading/moving blocks https://github.com/siyuan-note/siyuan/issues/14359 --- kernel/model/heading.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kernel/model/heading.go b/kernel/model/heading.go index a6d2dedf9..4a66a38c9 100644 --- a/kernel/model/heading.go +++ b/kernel/model/heading.go @@ -26,6 +26,7 @@ import ( "github.com/88250/gulu" "github.com/88250/lute/ast" "github.com/88250/lute/parse" + "github.com/siyuan-note/filelock" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/cache" "github.com/siyuan-note/siyuan/kernel/sql" @@ -162,6 +163,20 @@ func Doc2Heading(srcID, targetID string, after bool) (srcTreeBox, srcTreePath st return } + // 生成文档历史 https://github.com/siyuan-note/siyuan/issues/14359 + historyDir, err := GetHistoryDir(HistoryOpUpdate) + if nil != err { + logging.LogErrorf("get history dir failed: %s", err) + return + } + historyPath := filepath.Join(historyDir, srcTree.Box, srcTree.Path) + absPath := filepath.Join(util.DataDir, srcTree.Box, srcTree.Path) + if err = filelock.Copy(absPath, historyPath); err != nil { + logging.LogErrorf("backup [path=%s] to history [%s] failed: %s", absPath, historyPath, err) + return + } + indexHistoryDir(filepath.Base(historyDir), util.NewLute()) + // 移动前先删除引用 https://github.com/siyuan-note/siyuan/issues/7819 sql.DeleteRefsTreeQueue(srcTree) sql.DeleteRefsTreeQueue(targetTree)