emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/vc-fossil c63995e 074/111: Added ability to cope with rena


From: ELPA Syncer
Subject: [nongnu] elpa/vc-fossil c63995e 074/111: Added ability to cope with renamed files.
Date: Wed, 29 Sep 2021 08:59:24 -0400 (EDT)

branch: elpa/vc-fossil
commit c63995ec0b6351afa2b93b4edb787f5a6f1aada9
Author: pdo <pdo>
Commit: pdo <pdo>

    Added ability to cope with renamed files.
---
 vc/el/vc-fossil.el | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/vc/el/vc-fossil.el b/vc/el/vc-fossil.el
index f127c43..1941a0e 100644
--- a/vc/el/vc-fossil.el
+++ b/vc/el/vc-fossil.el
@@ -139,13 +139,21 @@ If nil, use the value of `vc-diff-switches'.  If t, use 
no switches."
         ((string= code "REMOVE")    'removed)
         ((string= code "UPDATE")    'needs-update)
         ((string= code "MERGE")     'needs-merge)
+        ((string= code "EXTRA")     'unregistered)
+        ((string= code "MISSING")   'missing)
+        ((string= code "RENAMED")   'added)
         (t           nil)))
 
 (defun vc-fossil-state  (file)
   "Fossil specific version of `vc-state'."
-  (let ((line (vc-fossil--run "update" "-n" "-v" "current" (file-truename 
file))))
-    (and line
-         (vc-fossil-state-code (car (split-string line))))))
+  (let* ((line (vc-fossil--run "update" "-n" "-v" "current" (file-truename 
file)))
+         (state (vc-fossil-state-code (car (split-string line)))))
+    ;; if 'fossil update' says file is UNCHANGED check to see if it has been 
RENAMED
+    (when (or (not state) (eql state 'up-to-date))
+      (let ((line (vc-fossil--run "changes" "--classify" "--unchanged" 
"--renamed"
+                                  (file-truename file))))
+        (setq state (and line (vc-fossil-state-code (car (split-string 
line)))))))
+    state))
 
 (defun vc-fossil-working-revision (file)
   "Fossil Specific version of `vc-working-revision'."
@@ -177,10 +185,16 @@ If `files` is nil return the status for all files."
              (status-word (car (split-string line))))
         (if (string-match "-----" status-word)
             (goto-char (point-max))
-          (let ((file (substring line (+ (length status-word) 1))))
+          (let ((file (substring line (+ (length status-word) 1)))
+                (state (vc-fossil-state-code status-word)))
             (setq file (expand-file-name file root))
             (setq file (file-relative-name file dir))
-            (push (list file (vc-fossil-state-code status-word)) result)))
+            ;; if 'fossil update' says file is UNCHANGED check to see if it 
has been RENAMED
+            (when (or (not state) (eql state 'up-to-date))
+              (let ((line (vc-fossil--run "changes" "--classify" "--unchanged" 
"--renamed"
+                                          (file-truename file))))
+                (setq state (and line (vc-fossil-state-code (car (split-string 
line)))))))
+            (push (list file state) result)))
         (forward-line)))
     ;; now collect untracked files
     (delete-region (point-min) (point-max))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]