Ver código fonte

fix(git): allow users to push at any time

Tienson Qin 5 anos atrás
pai
commit
1b4b220133
1 arquivos alterados com 29 adições e 26 exclusões
  1. 29 26
      src/main/frontend/handler/repo.cljs

+ 29 - 26
src/main/frontend/handler/repo.cljs

@@ -60,8 +60,7 @@
             (db/reset-file! repo-url path content)
             (db/reset-config! repo-url content)
             (when-not (= content old-content)
-              (git-handler/git-add repo-url path))))
-))))
+              (git-handler/git-add repo-url path))))))))
 
 (defn create-contents-file
   [repo-url]
@@ -324,35 +323,37 @@
                                         (push repo-url {:merge-push-no-diff? true
                                                         :commit-message "Merge push without diffed files"}))))))))
                  (p/catch
-                   (fn [error]
-                     (cond
-                       (string/includes? (str error) "404")
-                       (do (log/error :git/pull-error error)
-                           (show-install-error! repo-url (util/format "Failed to fetch %s." repo-url)))
-
-                       (string/includes? (str error) "401")
-                       (let [remain-times (dec try-times)]
-                         (if (> remain-times 0)
-                           (let [new-opts (merge opts {:try-times remain-times})]
-                             (pull repo-url new-opts))
-                           (let [error-msg
-                                 (util/format "Failed to fetch %s. It may be caused by token expiration or missing." repo-url)]
-                             (log/error :git/pull-error error)
-                             (notification/show! error-msg :error false))))
-
-                       :else
-                       (log/error :git/pull-error error)))))))))))))
+                  (fn [error]
+                    (cond
+                      (string/includes? (str error) "404")
+                      (do (log/error :git/pull-error error)
+                          (show-install-error! repo-url (util/format "Failed to fetch %s." repo-url)))
+
+                      (string/includes? (str error) "401")
+                      (let [remain-times (dec try-times)]
+                        (if (> remain-times 0)
+                          (let [new-opts (merge opts {:try-times remain-times})]
+                            (pull repo-url new-opts))
+                          (let [error-msg
+                                (util/format "Failed to fetch %s. It may be caused by token expiration or missing." repo-url)]
+                            (log/error :git/pull-error error)
+                            (notification/show! error-msg :error false))))
+
+                      :else
+                      (log/error :git/pull-error error)))))))))))))
 
 (defn push
-  [repo-url {:keys [commit-message merge-push-no-diff?]
-             :or {commit-message "Logseq auto save"
+  [repo-url {:keys [commit-message merge-push-no-diff? custom-commit?]
+             :or {custom-commit false
+                  commit-message "Logseq auto save"
                   merge-push-no-diff? false}}]
   (spec/validate :repos/url repo-url)
   (let [status (db/get-key-value repo-url :git/status)]
     (if (and
          (db/cloned? repo-url)
          (not (state/get-edit-input-id))
-         (not= status :pushing))
+         (or (not= status :pushing)
+             custom-commit?))
       (-> (p/let [files (js/window.workerThread.getChangedFiles (util/get-repo-dir (state/get-current-repo)))]
             (when (or (seq files) merge-push-no-diff?)
               ;; auto commit if there are any un-committed changes
@@ -362,7 +363,8 @@
                 (p/let [commit-oid (git/commit repo-url commit-message)
                         token (helper/get-github-token repo-url)
                         status (db/get-key-value repo-url :git/status)]
-                  (when (and token (not= status :pushing))
+                  (when (and token (or (not= status :pushing)
+                                       custom-commit?))
                     (git-handler/set-git-status! repo-url :pushing)
                     (util/p-handle
                      (git/push repo-url token merge-push-no-diff?)
@@ -528,7 +530,7 @@
               (git-handler/git-set-username-email! repo me)
               (pull repo nil)
               ;; (periodically-persist-app-metadata repo)
-              )
+)
             (do
               (clone-and-load-db repo)))
           (periodically-pull-current-repo)
@@ -552,4 +554,5 @@
 (defn git-commit-and-push!
   [commit-message]
   (when-let [repo (state/get-current-repo)]
-    (push repo {:commit-message commit-message})))
+    (push repo {:commit-message commit-message
+                :custom-commit? true})))