mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
(vc-cvs-parse-status, vc-cvs-after-dir-status): Detect
missing files.
This commit is contained in:
parent
117d3cc5bb
commit
920fb2b0fd
2 changed files with 37 additions and 30 deletions
|
|
@ -1,5 +1,8 @@
|
|||
2008-03-26 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc-cvs.el (vc-cvs-parse-status, vc-cvs-after-dir-status): Detect
|
||||
missing files.
|
||||
|
||||
* vc-git.el (vc-git-extra-menu-map): New key map.
|
||||
(vc-git-extra-menu, vc-git-extra-status-menu, vc-git-grep):
|
||||
New functions.
|
||||
|
|
|
|||
|
|
@ -823,40 +823,42 @@ For an empty string, nil is returned (invalid CVS root)."
|
|||
Set file properties accordingly. Unless FULL is t, parse only
|
||||
essential information. Note that this can never set the 'ignored
|
||||
state."
|
||||
(let (file status)
|
||||
(let (file status missing)
|
||||
(goto-char (point-min))
|
||||
(while (looking-at "? \\(.*\\)")
|
||||
(setq file (expand-file-name (match-string 1)))
|
||||
(vc-file-setprop file 'vc-state 'unregistered)
|
||||
(forward-line 1))
|
||||
(if (re-search-forward "^File: " nil t)
|
||||
(cond
|
||||
((looking-at "no file") nil)
|
||||
((re-search-forward "\\=\\([^ \t]+\\)" nil t)
|
||||
(setq file (expand-file-name (match-string 1)))
|
||||
(vc-file-setprop file 'vc-backend 'CVS)
|
||||
(if (not (re-search-forward "\\=[ \t]+Status: \\(.*\\)" nil t))
|
||||
(setq status "Unknown")
|
||||
(setq status (match-string 1)))
|
||||
(if (and full
|
||||
(re-search-forward
|
||||
"\\(RCS Version\\|RCS Revision\\|Repository revision\\):\
|
||||
(when (re-search-forward "^File: " nil t)
|
||||
(when (setq missing (looking-at "no file "))
|
||||
(goto-char (match-end 0)))
|
||||
(cond
|
||||
((re-search-forward "\\=\\([^ \t]+\\)" nil t)
|
||||
(setq file (expand-file-name (match-string 1)))
|
||||
(vc-file-setprop file 'vc-backend 'CVS)
|
||||
(if (not (re-search-forward "\\=[ \t]+Status: \\(.*\\)" nil t))
|
||||
(setq status "Unknown")
|
||||
(setq status (match-string 1)))
|
||||
(if (and full
|
||||
(re-search-forward
|
||||
"\\(RCS Version\\|RCS Revision\\|Repository revision\\):\
|
||||
\[\t ]+\\([0-9.]+\\)"
|
||||
nil t))
|
||||
(vc-file-setprop file 'vc-latest-revision (match-string 2)))
|
||||
(vc-file-setprop
|
||||
file 'vc-state
|
||||
(cond
|
||||
((string-match "Up-to-date" status)
|
||||
(vc-file-setprop file 'vc-checkout-time
|
||||
(nth 5 (file-attributes file)))
|
||||
'up-to-date)
|
||||
((string-match "Locally Modified" status) 'edited)
|
||||
((string-match "Needs Merge" status) 'needs-merge)
|
||||
((string-match "Needs \\(Checkout\\|Patch\\)" status) 'needs-patch)
|
||||
((string-match "Locally Added" status) 'added)
|
||||
((string-match "Locally Removed" status) 'removed)
|
||||
(t 'edited))))))))
|
||||
nil t))
|
||||
(vc-file-setprop file 'vc-latest-revision (match-string 2)))
|
||||
(vc-file-setprop
|
||||
file 'vc-state
|
||||
(cond
|
||||
((string-match "Up-to-date" status)
|
||||
(vc-file-setprop file 'vc-checkout-time
|
||||
(nth 5 (file-attributes file)))
|
||||
'up-to-date)
|
||||
((string-match "Locally Modified" status) 'edited)
|
||||
((string-match "Needs Merge" status) 'needs-merge)
|
||||
((string-match "Needs \\(Checkout\\|Patch\\)" status)
|
||||
(if missing 'missing 'needs-patch))
|
||||
((string-match "Locally Added" status) 'added)
|
||||
((string-match "Locally Removed" status) 'removed)
|
||||
(t 'edited))))))))
|
||||
|
||||
(defun vc-cvs-dir-state-heuristic (dir)
|
||||
"Find the CVS state of all files in DIR, using only local information."
|
||||
|
|
@ -879,6 +881,7 @@ state."
|
|||
(status-str nil)
|
||||
(file nil)
|
||||
(result nil)
|
||||
(missing nil)
|
||||
(subdir default-directory))
|
||||
(goto-char (point-min))
|
||||
(while
|
||||
|
|
@ -901,8 +904,9 @@ state."
|
|||
(forward-line 1))
|
||||
;; A file entry.
|
||||
(when (re-search-forward "^File: " nil t)
|
||||
(when (setq missing (looking-at "no file "))
|
||||
(goto-char (match-end 0)))
|
||||
(cond
|
||||
((looking-at "no file") nil)
|
||||
((re-search-forward "\\=\\([^ \t]+\\)" nil t)
|
||||
(setq file (file-relative-name
|
||||
(expand-file-name (match-string 1) subdir)))
|
||||
|
|
@ -915,7 +919,7 @@ state."
|
|||
((string-match "Locally Modified" status-str) 'edited)
|
||||
((string-match "Needs Merge" status-str) 'needs-merge)
|
||||
((string-match "Needs \\(Checkout\\|Patch\\)" status-str)
|
||||
'needs-patch)
|
||||
(if missing 'missing 'needs-patch))
|
||||
((string-match "Locally Added" status-str) 'added)
|
||||
((string-match "Locally Removed" status-str) 'removed)
|
||||
(t 'edited)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue