From c87bb94a6049808f96585b4935a8ffe51900b41d Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 18 Jan 2023 13:58:03 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E8=87=AA=E5=8A=A8=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E6=97=B6=E6=8E=92=E9=99=A4=E9=9D=9E=20id=20?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E7=9A=84=20.sy=20=E6=96=87=E4=BB=B6=20Fix=20?= =?UTF-8?q?https://github.com/siyuan-note/siyuan/issues/7111?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/repository.go | 12 ++++++++++++ kernel/model/transaction.go | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/kernel/model/repository.go b/kernel/model/repository.go index dc1170b30..374b37b42 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -501,6 +501,8 @@ func InitRepoKey() (err error) { return } +var isCheckoutRepo bool + func CheckoutRepo(id string) (err error) { if 1 > len(Conf.Repo.Key) { err = errors.New(Conf.Language(26)) @@ -523,6 +525,16 @@ func CheckoutRepo(id string) (err error) { Conf.Sync.Enabled = false Conf.Save() + if util.IsMutexLocked(&syncLock) { + err = errors.New("Sync is running, please try again later") + return + } + + isCheckoutRepo = true + defer func() { + isCheckoutRepo = false + }() + _, _, err = repo.Checkout(id, map[string]interface{}{eventbus.CtxPushMsg: eventbus.CtxPushMsgToStatusBarAndProgress}) if nil != err { util.PushClearProgress() diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 96b2b2df2..17098e9a0 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -1244,6 +1244,11 @@ func autoFixIndex() { return } + if isCheckoutRepo { + logging.LogInfof("skip check index caused by checkout repo") + return + } + if util.IsMutexLocked(&autoFixLock) { return } @@ -1286,6 +1291,12 @@ func autoFixIndex() { break } + id := path.Base(p) + id = strings.TrimSuffix(id, ".sy") + if !ast.IsNodeIDPattern(id) { + continue + } + reindexTreeByPath(box.ID, p, i, size) } }