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) } }