Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
emacs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
emacs
emacs
Commits
b1a765b3
Commit
b1a765b3
authored
Dec 02, 2014
by
Eric S. Raymond
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
In vc, abolish the dir-status method.
parent
dd601050
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
68 additions
and
89 deletions
+68
-89
lisp/ChangeLog
lisp/ChangeLog
+3
-0
lisp/vc/vc-arch.el
lisp/vc/vc-arch.el
+3
-2
lisp/vc/vc-bzr.el
lisp/vc/vc-bzr.el
+2
-9
lisp/vc/vc-cvs.el
lisp/vc/vc-cvs.el
+6
-11
lisp/vc/vc-dir.el
lisp/vc/vc-dir.el
+1
-1
lisp/vc/vc-git.el
lisp/vc/vc-git.el
+2
-7
lisp/vc/vc-hg.el
lisp/vc/vc-hg.el
+0
-6
lisp/vc/vc-mtn.el
lisp/vc/vc-mtn.el
+3
-2
lisp/vc/vc-rcs.el
lisp/vc/vc-rcs.el
+4
-6
lisp/vc/vc-sccs.el
lisp/vc/vc-sccs.el
+4
-6
lisp/vc/vc-src.el
lisp/vc/vc-src.el
+5
-6
lisp/vc/vc-svn.el
lisp/vc/vc-svn.el
+7
-9
lisp/vc/vc.el
lisp/vc/vc.el
+28
-24
No files found.
lisp/ChangeLog
View file @
b1a765b3
2014-12-02 Eric S. Raymond <esr@snark.thyrsus.com>
* vc.el, all backends: API simplification: Abolish dir-status.
It's replaced by dir-status-files.
* vc.el, all backends: API simplification: Remove 4th
'default-state' argument from vc-dir-status files and its backend
methods - no backend method ever set it. It was used only in the
...
...
lisp/vc/vc-arch.el
View file @
b1a765b3
...
...
@@ -310,10 +310,11 @@ Only the value `maybe' can be trusted :-(."
'up-to-date
'edited
)))))))))
;; -dir-status called from vc-dir, which loads vc, which loads vc-dispatcher.
;; dir-status-files called from vc-dir, which loads vc,
;; which loads vc-dispatcher.
(
declare-function
vc-exec-after
"vc-dispatcher"
(
code
))
(
defun
vc-arch-dir-status
(
dir
callback
)
(
defun
vc-arch-dir-status
-files
(
dir
_files
callback
)
"Run 'tla inventory' for DIR and pass results to CALLBACK.
CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
`vc-dir-refresh'."
...
...
lisp/vc/vc-bzr.el
View file @
b1a765b3
...
...
@@ -967,9 +967,9 @@ stream. Standard error output is discarded."
(forward-line))
(funcall update-function result)))
(defun vc-bzr-dir-status
(dir
update-function)
(defun vc-bzr-dir-status
-files (dir files
update-function)
"
Return
a
list
of
conses
(
file
.
state
)
for
DIR.
"
(
vc-bzr-command "
status
" (current-buffer) 'async dir "
-v
" "
-S
"
)
(
apply 'vc-bzr-command "
status
" (current-buffer) 'async dir "
-v
" "
-S
" files
)
(vc-run-delayed
(vc-bzr-after-dir-status update-function
;; "
bzr
status
" results are relative to
...
...
@@ -981,13 +981,6 @@ stream. Standard error output is discarded."
;; frob the results accordingly.
(file-relative-name dir (vc-bzr-root dir)))))
(defun vc-bzr-dir-status-files (dir files update-function)
"
Return
a
list
of
conses
(
file
.
state
)
for
DIR.
"
(apply 'vc-bzr-command "
status
" (current-buffer) 'async dir "
-v
" "
-S
" files)
(vc-run-delayed
(vc-bzr-after-dir-status update-function
(file-relative-name dir (vc-bzr-root dir)))))
(defvar vc-bzr-shelve-map
(let ((map (make-sparse-keymap)))
;; Turn off vc-dir marking
...
...
lisp/vc/vc-cvs.el
View file @
b1a765b3
...
...
@@ -1069,13 +1069,14 @@ state."
(
if
basedir
result
(
funcall
update-function
result
))))
(
defun
vc-cvs-dir-status
(
dir
update-function
)
"Create a list of conses (file . state) for
DIR."
;; FIXME check all files in DIR instead?
(
defun
vc-cvs-dir-status
-files
(
dir
files
update-function
)
"Create a list of conses (file . state) for
FILES in DIR.
Query all files in DIR if files is nil."
(
let
((
local
(
vc-cvs-stay-local-p
dir
)))
(
if
(
and
local
(
not
(
eq
local
'only-file
)))
(
if
(
and
(
not
files
)
local
(
not
(
eq
local
'only-file
)))
(
vc-cvs-dir-status-heuristic
dir
update-function
)
(
vc-cvs-command
(
current-buffer
)
'async
dir
"-f"
"status"
)
(
if
(
not
files
)
(
setq
files
(
vc-expand-dirs
(
list
dir
)
'CVS
)))
(
vc-cvs-command
(
current-buffer
)
'async
dir
"-f"
"status"
files
)
;; Alternative implementation: use the "update" command instead of
;; the "status" command.
;; (vc-cvs-command (current-buffer) 'async
...
...
@@ -1084,12 +1085,6 @@ state."
(
vc-run-delayed
(
vc-cvs-after-dir-status
update-function
)))))
(
defun
vc-cvs-dir-status-files
(
dir
files
update-function
)
"Create a list of conses (file . state) for DIR."
(
apply
'vc-cvs-command
(
current-buffer
)
'async
dir
"-f"
"status"
files
)
(
vc-run-delayed
(
vc-cvs-after-dir-status
update-function
)))
(
defun
vc-cvs-file-to-string
(
file
)
"Read the content of FILE and return it as a string."
(
condition-case
nil
...
...
lisp/vc/vc-dir.el
View file @
b1a765b3
...
...
@@ -1097,7 +1097,7 @@ Throw an error if another update process is in progress."
(setq default-directory def-dir)
(erase-buffer)
(vc-call-backend
backend 'dir-status
def-dir
backend 'dir-status
-files def-dir nil
(lambda (entries &optional more-to-come)
;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
;; If MORE-TO-COME is true, then more updates will come from
...
...
lisp/vc/vc-git.el
View file @
b1a765b3
...
...
@@ -50,8 +50,7 @@
;; STATE-QUERYING FUNCTIONS
;; * registered (file) OK
;; * state (file) OK
;; * dir-status (dir update-function) OK
;; - dir-status-files (dir files uf) NOT NEEDED
;; - dir-status-files (dir files uf) OK
;; * working-revision (file) OK
;; - latest-on-branch-p (file) NOT NEEDED
;; * checkout-model (files) OK
...
...
@@ -474,15 +473,11 @@ or an empty string if none."
(vc-run-delayed
(vc-git-after-dir-status-stage stage files update-function)))
(defun vc-git-dir-status
(_dir
update-function)
(defun vc-git-dir-status
-files (_dir files
update-function)
"
Return
a
list
of
(
FILE
STATE
EXTRA
)
entries
for
DIR.
"
;; Further things that would have to be fixed later:
;; - how to handle unregistered directories
;; - how to support vc-dir on a subdir of the project tree
(vc-git-dir-status-goto-stage 'update-index nil update-function))
(defun vc-git-dir-status-files (_dir files update-function)
"
Return
a
list
of
(
FILE
STATE
EXTRA
)
entries
for
FILES
in
DIR.
"
(vc-git-dir-status-goto-stage 'update-index files update-function))
(defvar vc-git-stash-map
...
...
lisp/vc/vc-hg.el
View file @
b1a765b3
...
...
@@ -43,7 +43,6 @@
;; STATE-QUERYING FUNCTIONS
;; * registered (file) OK
;; * state (file) OK
;; - dir-status (dir update-function) OK
;; - dir-status-files (dir files uf) OK
;; - dir-extra-headers (dir) OK
;; - dir-printer (fileinfo) OK
...
...
@@ -613,11 +612,6 @@ REV is the revision to check out into WORKFILE."
;; Follows vc-exec-after.
(
declare-function
vc-set-async-update
"vc-dispatcher"
(
process-buffer
))
(
defun
vc-hg-dir-status
(
dir
update-function
)
(
vc-hg-command
(
current-buffer
)
'async
dir
"status"
"-C"
)
(
vc-run-delayed
(
vc-hg-after-dir-status
update-function
)))
(
defun
vc-hg-dir-status-files
(
dir
files
update-function
)
(
apply
'vc-hg-command
(
current-buffer
)
'async
dir
"status"
"-mardui"
"-C"
files
)
(
vc-run-delayed
...
...
lisp/vc/vc-mtn.el
View file @
b1a765b3
...
...
@@ -126,10 +126,11 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
((
match-end
2
)
(
push
(
list
(
match-string
3
)
'added
)
result
))))
(
funcall
update-function
result
)))
;; -dir-status called from vc-dir, which loads vc, which loads vc-dispatcher.
;; dir-status-files called from vc-dir, which loads vc,
;; which loads vc-dispatcher.
(
declare-function
vc-exec-after
"vc-dispatcher"
(
code
))
(
defun
vc-mtn-dir-status
(
dir
update-function
)
(
defun
vc-mtn-dir-status
-files
(
dir
_files
update-function
)
(
vc-mtn-command
(
current-buffer
)
'async
dir
"status"
)
(
vc-run-delayed
(
vc-mtn-after-dir-status
update-function
)))
...
...
lisp/vc/vc-rcs.el
View file @
b1a765b3
...
...
@@ -157,12 +157,10 @@ For a description of possible values, see `vc-check-master-templates'."
(
autoload
'vc-expand-dirs
"vc"
)
(
defun
vc-rcs-dir-status
(
dir
update-function
)
;; Doing individual vc-state calls is painful but there
;; is no better way in RCS-land.
(
let
((
flist
(
vc-expand-dirs
(
list
dir
)
'RCS
))
(
result
nil
))
(
dolist
(
file
flist
)
(
defun
vc-rcs-dir-status-files
(
dir
files
update-function
)
(
if
(
not
files
)
(
setq
files
(
vc-expand-dirs
(
list
dir
)
'RCS
)))
(
let
((
result
nil
))
(
dolist
(
file
files
)
(
let
((
state
(
vc-state
file
))
(
frel
(
file-relative-name
file
)))
(
when
(
and
(
eq
(
vc-backend
file
)
'RCS
)
...
...
lisp/vc/vc-sccs.el
View file @
b1a765b3
...
...
@@ -134,12 +134,10 @@ For a description of possible values, see `vc-check-master-templates'."
(
autoload
'vc-expand-dirs
"vc"
)
(
defun
vc-sccs-dir-status
(
dir
update-function
)
;; Doing lots of individual VC-state calls is painful, but
;; there is no better option in SCCS-land.
(
let
((
flist
(
vc-expand-dirs
(
list
dir
)
'SCCS
))
(
result
nil
))
(
dolist
(
file
flist
)
(
defun
vc-sccs-dir-status-files
(
dir
files
update-function
)
(
if
(
not
files
)
(
setq
files
(
vc-expand-dirs
(
list
dir
)
'RCS
)))
(
let
((
result
nil
))
(
dolist
(
file
files
)
(
let
((
state
(
vc-state
file
))
(
frel
(
file-relative-name
file
)))
(
when
(
and
(
eq
(
vc-backend
file
)
'SCCS
)
...
...
lisp/vc/vc-src.el
View file @
b1a765b3
...
...
@@ -31,8 +31,7 @@
;; STATE-QUERYING FUNCTIONS
;; * registered (file) OK
;; * state (file) OK
;; * dir-status (dir update-function) OK
;; - dir-status-files (dir files uf) ??
;; - dir-status-files (dir files uf) OK
;; - dir-extra-headers (dir) NOT NEEDED
;; - dir-printer (fileinfo) ??
;; * working-revision (file) OK
...
...
@@ -179,11 +178,11 @@ For a description of possible values, see `vc-check-master-templates'."
(
autoload
'vc-expand-dirs
"vc"
)
(
defun
vc-src-dir-status
(
dir
update-function
)
(
defun
vc-src-dir-status
-files
(
dir
files
update-function
)
;; FIXME: Use one src status -a call for this
(
let
((
flist
(
vc-expand-dirs
(
list
dir
)
'SRC
))
(
result
nil
))
(
dolist
(
file
f
list
)
(
if
(
not
files
)
(
setq
files
(
vc-expand-dirs
(
list
dir
)
'RCS
)
))
(
let
(
(
result
nil
))
(
dolist
(
file
f
iles
)
(
let
((
state
(
vc-state
file
))
(
frel
(
file-relative-name
file
)))
(
when
(
and
(
eq
(
vc-backend
file
)
'SRC
)
...
...
lisp/vc/vc-svn.el
View file @
b1a765b3
...
...
@@ -195,22 +195,20 @@ If you want to force an empty list of arguments, use t."
(
setq
result
(
cons
(
list
filename
state
)
result
)))))
(
funcall
callback
result
)))
;; -dir-status called from vc-dir, which loads vc, which loads vc-dispatcher.
;; dir-status-files called from vc-dir, which loads vc,
;; which loads vc-dispatcher.
(
declare-function
vc-exec-after
"vc-dispatcher"
(
code
))
(
defun
vc-svn-dir-status
(
_dir
callback
)
(
autoload
'vc-expand-dirs
"vc"
)
(
defun
vc-svn-dir-status-files
(
dir
files
callback
)
"Run 'svn status' for DIR and update BUFFER via CALLBACK.
CALLBACK is called as (CALLBACK RESULT BUFFER), where
RESULT is a list of conses (FILE . STATE) for directory DIR."
;; FIXME should this rather be all the files in dir?
(
vc-svn-command
(
current-buffer
)
'async
nil
"status"
"-u"
)
(
if
(
not
files
)
(
setq
files
(
vc-expand-dirs
(
list
dir
)
'SVN
)))
(
vc-svn-command
(
current-buffer
)
'async
nil
"status"
"-u"
files
)
(
vc-run-delayed
(
vc-svn-after-dir-status
callback
)))
(
defun
vc-svn-dir-status-files
(
_dir
files
callback
)
(
apply
'vc-svn-command
(
current-buffer
)
'async
nil
"status"
files
)
(
vc-run-delayed
(
vc-svn-after-dir-status
callback
)))
(
defun
vc-svn-dir-extra-headers
(
_dir
)
"Generate extra status headers for a Subversion working copy."
(
let
(
process-file-side-effects
)
...
...
lisp/vc/vc.el
View file @
b1a765b3
...
...
@@ -130,31 +130,32 @@
;; reliable state computation; it is usually called immediately after
;; C-x v v.
;;
;; - dir-status
(dir
update-function)
;; - dir-status
-files (dir files
update-function)
;;
;; Produce RESULT: a list of lists of the form (FILE VC-STATE EXTRA)
;; for the files in DIR.
;; for FILES in DIR. If FILES is nil. report on all files in DIR.
;; (It is OK, though possibly inefficient, to ignore the FILES argument
;; and always report on all files in DIR.)
;;
;; EXTRA can be used for backend specific information about FILE.
;; If a command needs to be run to compute this list, it should be
;; run asynchronously using (current-buffer) as the buffer for the
;; command. When RESULT is computed, it should be passed back by
;; doing: (funcall UPDATE-FUNCTION RESULT nil).
;; If the backend uses a process filter, hence it produces partial results,
;; they can be passed back by doing:
;; (funcall UPDATE-FUNCTION RESULT t)
;; and then do a (funcall UPDATE-FUNCTION RESULT nil)
;; when all the results have been computed.
;; command.
;;
;; When RESULT is computed, it should be passed back by doing:
;; (funcall UPDATE-FUNCTION RESULT nil). If the backend uses a
;; process filter, hence it produces partial results, they can be
;; passed back by doing: (funcall UPDATE-FUNCTION RESULT t) and then
;; do a (funcall UPDATE-FUNCTION RESULT nil) when all the results
;; have been computed.
;;
;; To provide more backend specific functionality for `vc-dir'
;; the following functions might be needed: `dir-extra-headers',
;; `dir-printer',
`extra-dir-menu' and `dir-status-files
'.
;; `dir-printer',
and `extra-dir-menu
'.
;;
;; - dir-status-files (dir files update-function)
;;
;; This function is identical to dir-status except that it should
;; only report status for the specified FILES. Also it needs to
;; report on all requested files, including up-to-date or ignored
;; files. If not provided, the default is to consider that the files
;; are in 'up-to-date state.
;; This function should report on all requested files, including
;; up-to-date or ignored files. If it is not provided, the default is to
;; consider that all files are in 'up-to-date state.
;;
;; - dir-extra-headers (dir)
;;
...
...
@@ -389,7 +390,6 @@
;; the backend command. It should return a status of either 0 (no
;; differences found), or 1 (either non-empty diff or the diff is
;; run asynchronously).
;;
;; - revision-completion-table (files)
;;
...
...
@@ -580,6 +580,9 @@
;; - INCOMPATIBLE CHANGE: The old fourth 'default-state' argument of
;; vc-dir-status-files is gone; none of the back ends actually used it.
;;
;; - vc-dir-status is no longer a public method; it has been replaced
;; by vc-dir-status-files.
;;
;; - vc-state-heuristic is no longer a public method (the CVS backend
;; retains it as a private one).
;;
...
...
@@ -632,12 +635,13 @@
;;
;;;; Internal cleanups:
;;
;; - Another important thing: merge all the status-like backend operations.
;; We should remove dir-status, state, and dir-status-files, and
;; replace them with just `status' which takes a fileset and a continuation
;; (like dir-status) and returns a buffer in which the process(es) are run
;; (or nil if it worked synchronously). Hopefully we can define the old
;; 4 operations in term of this one.
;; - Another important thing: merge all the status-like backend
;; operations. We should remove dir-status-files and state and
;; replace them with just `status' which takes a fileset and a
;; continuation (like dir-status-files) and returns a buffer in
;; which the process(es) are run (or nil if it worked
;; synchronously). Hopefully we can define the old operations in
;; term of this one.
;;
;;;; Unify two different versions of the amend capability
;;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment