GNU bug report logs -
#1741
23.0.60; vc fail to register file while logged as /su:: with tramp
Previous Next
Full log
Message #18 received at 1741 <at> emacsbugs.donarmstrong.com (full text, mbox):
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
This bug report was last modified 16 years and 101 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.