Package: emacs;
Reported by: Thierry Volpiatto <thierry.volpiatto <at> gmail.com>
Date: Tue, 30 Dec 2008 11:00:03 UTC
Severity: normal
Done: Dan Nicolaescu <dann <at> ics.uci.edu>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Dan Nicolaescu <dann <at> ics.uci.edu> To: thierry.volpiatto <at> gmail.com Cc: 1741 <at> debbugs.gnu.org Subject: bug#1741: 23.0.60; vc fail to register file while logged as /su:: with tramp Date: Wed, 8 Apr 2009 09:24:06 -0700 (PDT)
thierry.volpiatto <at> gmail.com writes: > Hi Dan! > Thank you to have a look at this bug. > It's a long time, i didn't remember i sent this bug. > The bug is still here.(23.0.92) > > Dan Nicolaescu <dann <at> ics.uci.edu> writes: > > > Thierry Volpiatto <thierry.volpiatto <at> gmail.com> writes: > > > > > Please write in English if possible, because the Emacs maintainers > > > usually do not have translators to read other languages for them. > > > > > > Your bug report will be posted to the emacs-pretest-bug <at> gnu.org mailing list. > > > > > > Please describe exactly what actions triggered the bug > > > and the precise symptoms of the bug: > > > > > > Hi, > > > i can't register a file with vc/rcs when i am logged as root throught > > > tramp. > > > 1) C-x v i > > > 2) Create RCS dir (y/n) ==> The dir is created. > > > 3) But now ==> _Here the debug output_: > > > > > > ,---- > > > | Debugger entered--Lisp error: (wrong-type-argument stringp nil) > > > | file-exists-p(nil) > > > | vc-insert-file(nil "^[0-9]") > > > | vc-rcs-fetch-master-state("/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-rcs-working-revision("/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | apply(vc-rcs-working-revision "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-call-backend(RCS working-revision "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-working-revision("/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-default-mode-line-string(RCS "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | apply(vc-default-mode-line-string RCS "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-call-backend(RCS mode-line-string "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-mode-line("/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | run-hook-with-args(vc-mode-line "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > > | vc-resynch-window("/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh" t t) > > > | vc-resynch-buffer("/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh" t t) > > > | > > > | [...] > > > | > > > | [G70600 G70601 rev comment file --cl-dolist-temp-- > > > | message "Registering %s... " mapc vc-file-clearprops vc-call-backend > > > | register nil vc-file-setprop > > > | vc-backend "Registering %s... done"] 6] (quote --files--) (quote --backend--) --cl-rest--))) > > > | vc-register(nil) > > > | call-interactively(vc-register nil nil) > > > `---- > > > > > > _And if i want to delete RCS directory from dired_: > > > > > > ,---- > > > | (file-error Couldn't delete /su:root <at> tux.homenetwork:/usr/local/bin/RCS) > > > `---- > > > > > > However if i open an emacs root session i can register my file as > > > normal. > > > > What happens is that vc-check-master-templates gets called with > > "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh", and it calls > > (file-exists-p "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > > which returns nil. > No, `file-exists-p' recognize tramp file name and return t. > > (file-exists-p "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh") > ==>t It's a bug in TRAMP: If I create a new file: "/su:root <at> localhost:/tmp/blah" then to C-x v v to register it, it fails. But I can see that the /tmp/RCS/blah,v is created. If after that I do: M-: (file-exists-p "/su:root <at> localhost:/tmp/RCS/blah,v") RET the result is nil. If I start a new emacs and do: M-: (file-exists-p "/su:root <at> localhost:/tmp/RCS/blah,v") RET the result is t. > The problem is, i think, vc call `file-exists-p' with (vc-name fname) as > argument instead of "file_name": > > ,----[ With a tramp filename return error ] > | (file-exists-p (vc-name "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh")) > | ==> > | Debugger entered--Lisp error: (wrong-type-argument stringp nil) > | file-exists-p(nil) > | eval((file-exists-p (vc-name "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh"))) > | eval-expression((file-exists-p (vc-name "/su:root <at> tux.homenetwork:/usr/local/bin/editeur.sh")) nil) > | call-interactively(eval-expression nil nil) > `---- > > ,----[ With a regular filename return t ] > | (file-exists-p (vc-name "~/bin/call-gnus.sh")) > | ==>t > `---- > > So it seem the problem come from vc that try to set properties on > filename with `vc-name' and fail on tramp filename. > (`vc-name' call `vc-file-getprop') > > Thought i didn't look at the code carefully, so i am may be wrong. > > > > There's a few other `file-exists-p' calls in vc*.el, so it's likely that > > other things can go wrong if this one instance is somehow fixed. > > > > If someone familiar with what tramp needs wants to get this to work, > > about all vc calls need to be tested to make sure they don't do > > something that tramp can't do. > > > > -- > A + Thierry Volpiatto > Location: Saint-Cyr-Sur-Mer - France
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.