* vc-revert broken for Subversion files
@ 2007-07-22 15:21 Bob Rogers
2007-07-22 18:22 ` timotheus
2007-07-22 18:59 ` Dan Nicolaescu
0 siblings, 2 replies; 9+ messages in thread
From: Bob Rogers @ 2007-07-22 15:21 UTC (permalink / raw)
To: emacs-devel
To reproduce:
1. Make a small change to a file registered under Subversion,
"foo.el" for example.
2. "emacs -Q foo.el"
3. "C-x v u". The operation will fail with the following message:
vc-stay-local-p: Symbol's function definition is void: remove-if-not
I am using an emacs built from the trunk about 36 hours ago. FWIW, this
worked in my previous trunk build two week ago. vc-revert also still
works with CVS files.
TIA,
-- Bob Rogers
http://rgrjr.dyndns.org/
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-22 15:21 vc-revert broken for Subversion files Bob Rogers
@ 2007-07-22 18:22 ` timotheus
2007-07-22 21:08 ` Bob Rogers
2007-07-22 18:59 ` Dan Nicolaescu
1 sibling, 1 reply; 9+ messages in thread
From: timotheus @ 2007-07-22 18:22 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1.1: Type: text/plain, Size: 667 bytes --]
Bob Rogers <rogers-emacs@rgrjr.dyndns.org> writes:
> To reproduce:
>
> 1. Make a small change to a file registered under Subversion,
> "foo.el" for example.
>
> 2. "emacs -Q foo.el"
>
> 3. "C-x v u". The operation will fail with the following message:
>
> vc-stay-local-p: Symbol's function definition is void: remove-if-not
>
> I am using an emacs built from the trunk about 36 hours ago. FWIW, this
> worked in my previous trunk build two week ago. vc-revert also still
> works with CVS files.
>
> TIA,
>
> -- Bob Rogers
> http://rgrjr.dyndns.org/
First, please report if `vc-svn' is listed with:
M-x list-load-path-shadows
[-- Attachment #1.2: Type: application/pgp-signature, Size: 188 bytes --]
[-- Attachment #2: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-22 15:21 vc-revert broken for Subversion files Bob Rogers
2007-07-22 18:22 ` timotheus
@ 2007-07-22 18:59 ` Dan Nicolaescu
2007-07-22 21:50 ` Thien-Thi Nguyen
1 sibling, 1 reply; 9+ messages in thread
From: Dan Nicolaescu @ 2007-07-22 18:59 UTC (permalink / raw)
To: Bob Rogers; +Cc: emacs-devel
Bob Rogers <rogers-emacs@rgrjr.dyndns.org> writes:
> To reproduce:
>
> 1. Make a small change to a file registered under Subversion,
> "foo.el" for example.
>
> 2. "emacs -Q foo.el"
>
> 3. "C-x v u". The operation will fail with the following message:
>
> vc-stay-local-p: Symbol's function definition is void: remove-if-not
This is a problem introduced a few days ago by changes to VC. vc now
uses remove-if-not which is a function in cl-seq.el
You can work around this by doing:
M-x load-library RET cl RET
M-x load-library RET cl-seq RET
Hopefully someone will fix the code soon...
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-22 18:22 ` timotheus
@ 2007-07-22 21:08 ` Bob Rogers
0 siblings, 0 replies; 9+ messages in thread
From: Bob Rogers @ 2007-07-22 21:08 UTC (permalink / raw)
To: timotheus; +Cc: emacs-devel
From: timotheus <timotheus@tstotts.net>
Date: Sun, 22 Jul 2007 14:22:22 -0400
Bob Rogers <rogers-emacs@rgrjr.dyndns.org> writes:
> To reproduce:
>
> 1. Make a small change to a file registered under Subversion,
> "foo.el" for example.
>
> 2. "emacs -Q foo.el"
>
> 3. "C-x v u". The operation will fail with the following message:
>
> vc-stay-local-p: Symbol's function definition is void: remove-if-not
>
> I am using an emacs built from the trunk about 36 hours ago. FWIW, this
> worked in my previous trunk build two week ago. vc-revert also still
> works with CVS files.
>
> TIA,
>
> -- Bob Rogers
> http://rgrjr.dyndns.org/
First, please report if `vc-svn' is listed with:
M-x list-load-path-shadows
It is not. (Could it be otherwise with "emacs -Q"?)
-- Bob
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-22 18:59 ` Dan Nicolaescu
@ 2007-07-22 21:50 ` Thien-Thi Nguyen
2007-07-23 18:06 ` Richard Stallman
0 siblings, 1 reply; 9+ messages in thread
From: Thien-Thi Nguyen @ 2007-07-22 21:50 UTC (permalink / raw)
To: Dan Nicolaescu; +Cc: Bob Rogers, emacs-devel
() Dan Nicolaescu <dann@ics.uci.edu>
() Sun, 22 Jul 2007 11:59:37 -0700
This is a problem introduced a few days ago by changes to VC. vc now
uses remove-if-not which is a function in cl-seq.el
You can work around this by doing:
M-x load-library RET cl RET
M-x load-library RET cl-seq RET
Hopefully someone will fix the code soon...
a quick scan shows another problem in the same func where remove-if-not
was introduced (vc-stay-local-p): docstrings sez "return non-nil", but
if FILE is a list, the function returns a symbol, either `yes' or `no'.
furthermore, the docstring makes no mention of the case when FILE is a
list. furthermore, there is no ChangeLog entry. this last problem is
very grave, causing the quick scan mentioned at the beginning of this
paragraph to balloon into lots of time-wasting C-x v g digging. grrr.
below is a patch. here is a ChangeLog entry:
* vc-hooks.el (vc-stay-local-p): Fix bug: Avoid remove-if-not.
Also, when FILE is a list, return non-nil if any of the files
are should stay local. Update docstring.
note to whoever really understands the intent of vc-stay-local-p: the
opposite sense for FILE as list may be what you really want; please
review carefully.
thi
____________________________________________________________
*** vc-hooks.el 22 Jul 2007 19:04:10 -0000 1.195
--- vc-hooks.el 22 Jul 2007 21:42:22 -0000
***************
*** 159,167 ****
(defun vc-stay-local-p (file)
"Return non-nil if VC should stay local when handling FILE.
! This uses the `repository-hostname' backend operation."
(if (listp file)
! (if (remove-if-not (lambda (x) (not (vc-stay-local-p x))) file) 'no 'yes)
(let* ((backend (vc-backend file))
(sym (vc-make-backend-sym backend 'stay-local))
(stay-local (if (boundp sym) (symbol-value sym) t)))
--- 159,169 ----
(defun vc-stay-local-p (file)
"Return non-nil if VC should stay local when handling FILE.
! This uses the `repository-hostname' backend operation.
! If FILE is a list of files, return non-nil if any of them
! individually should stay local."
(if (listp file)
! (delq nil (mapcar 'vc-stay-local-p file))
(let* ((backend (vc-backend file))
(sym (vc-make-backend-sym backend 'stay-local))
(stay-local (if (boundp sym) (symbol-value sym) t)))
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-22 21:50 ` Thien-Thi Nguyen
@ 2007-07-23 18:06 ` Richard Stallman
[not found] ` <87k5sq51lc.fsf@ambire.localdomain>
0 siblings, 1 reply; 9+ messages in thread
From: Richard Stallman @ 2007-07-23 18:06 UTC (permalink / raw)
To: Thien-Thi Nguyen; +Cc: dann, rogers-emacs, emacs-devel
Please install your patch.
a quick scan shows another problem in the same func where remove-if-not
was introduced (vc-stay-local-p): docstrings sez "return non-nil", but
if FILE is a list, the function returns a symbol, either `yes' or `no'.
furthermore, the docstring makes no mention of the case when FILE is a
list. furthermore, there is no ChangeLog entry. this last problem is
very grave,
That sounds bad. Was this part of esr's recent changes?
I see that the change log entries for them are not up to the usual
standards. Was the change part of this?
2007-07-18 Eric S. Raymond <esr@snark.thyrsus.com>
* vc-hooks.el: Generalize stay-local-p to operate on lists of
files. Change two keybindings to point to new function names.
* vc-arch.el, vc-bzr.el, vc-cvs.el, vc-hg.el, vc-mcvs.el, vc-rcs.el,
vc-sccs.el, vc-svn.el: These now implement the NewVC-fileset.
* vc.el: Adapted for NewVC-fileset, but no functional changes yet.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
[not found] ` <87k5sq51lc.fsf@ambire.localdomain>
@ 2007-07-24 16:45 ` Richard Stallman
2007-07-25 19:49 ` Stefan Monnier
0 siblings, 1 reply; 9+ messages in thread
From: Richard Stallman @ 2007-07-24 16:45 UTC (permalink / raw)
To: Thien-Thi Nguyen; +Cc: rogers-emacs, emacs-devel
* vc-hooks.el: Generalize stay-local-p to operate on lists of
files. Change two keybindings to point to new function names.
* vc-arch.el, vc-bzr.el, vc-cvs.el, vc-hg.el, vc-mcvs.el, vc-rcs.el,
vc-sccs.el, vc-svn.el: These now implement the NewVC-fileset.
* vc.el: Adapted for NewVC-fileset, but no functional changes yet.
yes.
unfortunately, even w/ this ChangeLog entry, i am unable to determine the
intent (sense) of the "generalization". my doubt is as follows:
I have asked him to put in a clear and detailed change log entry.
when applied to many files, i can imagine two equally valid policies:
(a) if any file of the list is stay-local-p, enable optimizations.
(b) if all files of the list are stay-local-p, enable optimizations.
as is (just checked in), the code supports (a) but not (b). could
maintainers of client code give this some thought, and confirm or revise
the code accordingly? it comes down to "any" vs "all" semantics, of
which i'm slightly paranoid, having been bitten in a previous life...
the more i think about it, the more (b) would make sense (AND gate),
since optimizations may not be possible if any one file in the list is
NOT stay-local-p. this boolean stuff is (simply ;-) weird...
Could you write to him and Stefan to discuss the question?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-24 16:45 ` Richard Stallman
@ 2007-07-25 19:49 ` Stefan Monnier
2007-07-25 22:16 ` Thien-Thi Nguyen
0 siblings, 1 reply; 9+ messages in thread
From: Stefan Monnier @ 2007-07-25 19:49 UTC (permalink / raw)
To: rms; +Cc: rogers-emacs, Thien-Thi Nguyen, emacs-devel
> when applied to many files, i can imagine two equally valid policies:
> (a) if any file of the list is stay-local-p, enable optimizations.
> (b) if all files of the list are stay-local-p, enable optimizations.
stay-local-p is used to determine not whether to use some optimizations but
whether to use some heuristic rather than the real thing.
I.e. (vc-stay-local-p FILE) should be non-nil if FILE's repository is on
a far away server, i.e. if querying the status of FILE will take a long
time. This is the used to avoid querying the server when it's not
absolutely needed, and also triggers the use of async operations where
supported.
So I think (a) is right, because if any of the files are on a distant
repository, the resulting command will take a long time, even if all the
other files's repositories are nearby.
Stefan
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: vc-revert broken for Subversion files
2007-07-25 19:49 ` Stefan Monnier
@ 2007-07-25 22:16 ` Thien-Thi Nguyen
0 siblings, 0 replies; 9+ messages in thread
From: Thien-Thi Nguyen @ 2007-07-25 22:16 UTC (permalink / raw)
To: Stefan Monnier; +Cc: rogers-emacs, emacs-devel
() Stefan Monnier <monnier@iro.umontreal.ca>
() Wed, 25 Jul 2007 15:49:41 -0400
So I think (a) is right, because if any of the files are on a
distant repository, the resulting command will take a long
time, even if all the other files's repositories are nearby.
thanks for explaining the intent. i'll leave things alone, now.
thi
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-07-25 22:16 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-22 15:21 vc-revert broken for Subversion files Bob Rogers
2007-07-22 18:22 ` timotheus
2007-07-22 21:08 ` Bob Rogers
2007-07-22 18:59 ` Dan Nicolaescu
2007-07-22 21:50 ` Thien-Thi Nguyen
2007-07-23 18:06 ` Richard Stallman
[not found] ` <87k5sq51lc.fsf@ambire.localdomain>
2007-07-24 16:45 ` Richard Stallman
2007-07-25 19:49 ` Stefan Monnier
2007-07-25 22:16 ` Thien-Thi Nguyen
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).