Merge pull request #6582 from logseq/fix/remove-monitor-dirs

fix: remove monitor-dirs
pull/6583/head
rcmerci 2022-09-03 20:02:10 +08:00 committed by GitHub
commit 0f98f92ae5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 43 deletions

View File

@ -153,23 +153,22 @@
;;; ### configs in config.edn
;; - :file-sync/ignore-files
;; - :file-sync/monitor-dirs
(defn- get-ignored-files
[]
(into #{#"logseq/graphs-txid.edn$"
#"logseq/\.recycle/.*"
#"logseq/version-files/.*"
#"logseq/bak/.*"}
#"logseq/version-files/"
#"logseq/bak/"
#"node_modules/"
;; path starts with `.` in the root directory, e.g. .gitignore
#"^\.[^.]+"
;; path includes `/.`, e.g. .git, .DS_store
#"/\."
;; Emacs/Vim backup files end with `~` by default
#"~$"}
(map re-pattern)
(:file-sync/ignore-files (state/get-config))))
(defn- get-monitor-dirs
[]
(into #{#"^assets/" #"^journals/" #"^logseq/" #"^pages/" #"^draws/"}
(map #(re-pattern (str "^" % "/")))
(:file-sync/monitor-dirs (state/get-config))))
;;; ### configs ends
(def ws-addr config/WS-URL)
@ -354,9 +353,6 @@
"\" (updated? " updated? ", renamed? " (.renamed? coll) ", deleted? " deleted?
", txid " txid ", checksum " checksum ")]")))
(defn- contains-path? [regexps path]
(reduce #(when (re-find %2 path) (reduced true)) false regexps))
(defn- assert-filetxns
[filetxns]
(every? true?
@ -441,16 +437,16 @@
(map list ts))))
cat))
(defn- filter-filetxns-by-config
"return transducer.
filter filetxns by `get-ignored-files` and `get-monitored-dirs`"
[]
(let [ignored-files (get-ignored-files)
monitored-dirs (get-monitor-dirs)]
(filter
#(let [path (relative-path %)]
(and (contains-path? monitored-dirs path)
(not (contains-path? ignored-files path)))))))
(defn- contains-path? [regexps path]
(reduce #(when (re-find %2 path) (reduced true)) false regexps))
(defn ignored?
"Whether file is ignored when syncing."
[path]
(->
(get-ignored-files)
(contains-path? (relative-path path))
(boolean)))
(defn- diffs->partitioned-filetxns
"transducer.
@ -465,7 +461,7 @@
(comp
(map diff->filetxns)
cat
(filter-filetxns-by-config)
(remove ignored?)
distinct-update-filetxns-xf
remove-deleted-filetxns-xf
(partition-filetxns n)))
@ -2172,8 +2168,7 @@
true)
(or (string/starts-with? (.-dir e) base-path)
(string/starts-with? (str "file://" (.-dir e)) base-path)) ; valid path prefix
(not (contains-path? (get-ignored-files) (relative-path e))) ;not ignored
(contains-path? (get-monitor-dirs) (relative-path e)) ; dir is monitored
(not (ignored? e)) ;not ignored
;; download files will also trigger file-change-events, ignore them
(let [r (not (contains? (:recent-remote->local-files @*sync-state)
(<! (<file-change-event=>recent-remote->local-file-item e))))]
@ -2220,10 +2215,9 @@
(if (empty? es)
(go {:succ true})
(let [type (.-type ^FileChangeEvent (first es))
ignored-files (get-ignored-files)
es->paths-xf (comp
(map #(relative-path %))
(filter #(not (contains-path? ignored-files %))))]
(remove ignored?))]
(go
(let [es* (<! (<filter-checksum-not-consistent es))
_ (when (not= (count es*) (count es))
@ -2295,18 +2289,13 @@
(let [remote-all-files-meta remote-all-files-meta-or-exp
local-all-files-meta (<! local-all-files-meta-c)
diff-local-files (diff-file-metadata-sets local-all-files-meta remote-all-files-meta)
monitored-dirs (get-monitor-dirs)
ignored-files (get-ignored-files)
change-events
(sequence
(comp
;; convert to FileChangeEvent
(map #(->FileChangeEvent "change" base-path (.get-normalized-path ^FileMetadata %)
{:size (:size %)} (:etag %)))
;; filter ignore-files & monitored-dirs
(filter #(let [path (relative-path %)]
(and (not (contains-path? ignored-files path))
(contains-path? monitored-dirs path)))))
(remove ignored?))
diff-local-files)
change-events-partitions
(sequence

View File

@ -0,0 +1,22 @@
(ns frontend.fs.sync-test
(:require [frontend.fs.sync :as sync]
[clojure.test :refer [deftest are]]))
(deftest ignored?
[]
(are [x y] (= y (sync/ignored? x))
".git" true
".gitignore" true
".DS_store" true
"foo/.DS_store" true
"logseq/graphs-txid.edn" true
"logseq/version-files/1.md" true
"logseq/bak/1.md" true
"node_modules/test" true
"foo/node_modules/" true
"backup~" true
"foo/backup~" true
"foo/.test.md" true
"pages/test.md" false
"journals/2022_01_01.md" false
))

View File

@ -272,16 +272,8 @@
;; :media "[[quick capture]] **{time}**: {url}"}
;; File sync options
;; In addition to those directories created by Logseq,
;; files specified in the `:file-sync/monitor-dirs` directories will be synchronized too.
;;
;; Directories created by Logseq include:
;; ["assets" "journals" "logseq" "pages" "draws"].
:file-sync/monitor-dirs []
;; Ignore these files when syncing, regexp is supported.
:file-sync/ignore-files [".DS_Store$"]
;; :file-sync/ignore-files []
;; dwim (do what I mean) for Enter key when editing.
;; Context-awareness of Enter key makes editing more easily