summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-09-12 14:40:11 +0200
committercashmere <cashmere@autistici.org>2026-09-12 14:40:11 +0200
commit9bfc7c38dd8988b4d9923dc0a421c027adcbf514 (patch)
treef27830952d60e6790e59c3e7c63c6be3550a93fe /lisp
parent77d69634bf4029e522d8a09e3a417f21dbd65f4d (diff)
downloademacs-9bfc7c38dd8988b4d9923dc0a421c027adcbf514.tar.gz
relic: 2026-09-12T14:40:15+02:00
Diffstat (limited to 'lisp')
-rw-r--r--lisp/fossil-ui.el17
1 files changed, 11 insertions, 6 deletions
diff --git a/lisp/fossil-ui.el b/lisp/fossil-ui.el
index eeeabc5..33911cf 100644
--- a/lisp/fossil-ui.el
+++ b/lisp/fossil-ui.el
@@ -2462,14 +2462,19 @@ when every content issue is covered by the checkout's effective glob settings."
(fossil-ui--remove-entry root index path)
(let* ((file (expand-file-name path root))
(change (cl-find path changes :key (lambda (candidate) (plist-get candidate :path)) :test #'equal))
- (deleted (equal (plist-get change :status) "DELETED")))
+ (status (plist-get change :status))
+ (missing (and (equal status "MISSING") (not (file-exists-p file))))
+ (deleted (or (equal status "DELETED") missing)))
(fossil-ui--clean-buffer file)
(if deleted
- (condition-case nil
- (let ((base (fossil-ui--base root path)))
- (fossil-ui--put-entry root index (list :path path :base base :staged "" :deleted t)))
- (error
- (fossil-ui--put-entry root index (list :path path :binary t :deleted t))))
+ (let ((entry
+ (condition-case nil
+ (let ((base (fossil-ui--base root path)))
+ (list :path path :base base :staged "" :deleted t))
+ (error (list :path path :binary t :deleted t)))))
+ (when missing
+ (fossil-ui--require-success root "rm" "--soft" "--" path))
+ (fossil-ui--put-entry root index entry))
(let ((content (fossil-ui--file-content root path t)))
(if (plist-get content :binary)
(let ((snapshot (fossil-ui--save-binary-snapshot root path (plist-get content :bytes)))