🎨 数据仓库支持 syncignore 配置 https://github.com/siyuan-note/siyuan/issues/5302

This commit is contained in:
Liang Ding 2022-06-27 22:27:06 +08:00
parent 59bff8376a
commit 6acd563785
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
4 changed files with 45 additions and 29 deletions

View file

@ -1262,10 +1262,31 @@ func getSyncExcludedList(localDirPath string) (ret map[string]bool) {
}
func getSyncIgnoreList() (ret []string) {
lines := getIgnoreLines()
if 1 > len(lines) {
return
}
gi := gitignore.CompileIgnoreLines(lines...)
filepath.Walk(util.DataDir, func(p string, info os.FileInfo, err error) error {
p = strings.TrimPrefix(p, util.DataDir+string(os.PathSeparator))
p = filepath.ToSlash(p)
if gi.MatchesPath(p) {
ret = append(ret, p)
}
return nil
})
return
}
func getIgnoreLines() (ret []string) {
ignore := filepath.Join(util.DataDir, ".siyuan", "syncignore")
os.MkdirAll(filepath.Dir(ignore), 0755)
err := os.MkdirAll(filepath.Dir(ignore), 0755)
if nil != err {
return
}
if !gulu.File.IsExist(ignore) {
if err := gulu.File.WriteFileSafer(ignore, nil, 0644); nil != err {
if err = gulu.File.WriteFileSafer(ignore, nil, 0644); nil != err {
util.LogErrorf("create syncignore [%s] failed: %s", ignore, err)
return
}
@ -1277,23 +1298,14 @@ func getSyncIgnoreList() (ret []string) {
}
dataStr := string(data)
dataStr = strings.ReplaceAll(dataStr, "\r\n", "\n")
lines := strings.Split(dataStr, "\n")
ret = strings.Split(dataStr, "\n")
// 默认忽略帮助文档
lines = append(lines, "20210808180117-6v0mkxr/**/*")
lines = append(lines, "20210808180117-czj9bvb/**/*")
lines = append(lines, "20211226090932-5lcq56f/**/*")
ret = append(ret, "20210808180117-6v0mkxr/**/*")
ret = append(ret, "20210808180117-czj9bvb/**/*")
ret = append(ret, "20211226090932-5lcq56f/**/*")
lines = gulu.Str.RemoveDuplicatedElem(lines)
gi := gitignore.CompileIgnoreLines(lines...)
filepath.Walk(util.DataDir, func(p string, info os.FileInfo, err error) error {
p = strings.TrimPrefix(p, util.DataDir+string(os.PathSeparator))
p = filepath.ToSlash(p)
if gi.MatchesPath(p) {
ret = append(ret, p)
}
return nil
})
ret = gulu.Str.RemoveDuplicatedElem(ret)
return
}