GNT sans publicité, site mobile, fonctionnalitées exclusives...

PCL-CVS et call-process

Le
drkm
Bonsoir

Je tente d'apprendre PCL-CVS. Mon working directory est à jour.
Lorsque je fais :

C-u C-x C-f [ . . . ] / C V S <RET>

il m'affiche la bonne liste de fichiers, avec les bons numéros de
révision, mais tous avec le status « Modified », alors que tout est à
jour. C'est en tout cas ce que me dit CVS lancé à la main.

Je ne sais pas si le problème vient de ce que j'utilise Cygwin.
Mais un truc bizarre est que lorsque je fais :

(setq cvs-program "c:/cygwin/bin/cvs.exe")
(call-process cvs-program nil t nil "-v")
(call-process cvs-program)

les deux appels à `call-process()' me donnent respectivement :

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
call-process("c:/cygwin/bin/cvs.exe" nil t nil "-v")
eval((call-process cvs-program nil t nil "-v"))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp)

et :

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
call-process("c:/cygwin/bin/cvs.exe")
eval((call-process cvs-program))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp)

Tout cela est très étrange. Quelqu'un a-t-il une piste ?

PS: Toujours plus étrange. En écrivant cet article, je me suis
retrouvé dans un buffer d'aide à exécuter par erreur :

M-x ( c a l l - p r o c e s s c v s - p r o g r a m ) <RET>

qui retournait 0x01. J'ai réussi à l'évaluer plusieurs fois. Mais
une fois le buffer tué, je n'ai pas réussi à le réévaluer sans
erreur Vraiment bizarre.

PPS: Merci Matthieu, pour le `fill-nobreak-predicate'. Il marche
nickel.

--drkm
Lire les 7 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Matthieu Moy
Le #21715351
drkm
Bonsoir



Bonsoir,

Je tente d'apprendre PCL-CVS.



Si je puis me permettre de donner mon avis, apprendre CVS et outils
connexes aujourd'hui n'est pas une super idée.

CVS est un gestionnaire de version pleins de limitations assez
pénibles (en particulier, la gestion des répertoires et le renommage
des fichiers). Le successeur logique de CVS, c'est subversion[1], et
oh, miracle, il y a un mode Emacs pour ça aussi[2] !

Après, il y a d'autres gestionnaires de version qui suivent des voies
différentes, mais très intéressantes également. Personnellement,
j'utilise Arch[3], <pub> et, là aussi, il y a un mode Emacs[4] !</pub>

[1] http://subversion.tigris.org/
[2] http://www.xsteve.at/prg/vc_svn/index.html
[3] http://gnuarch.org/
[4] http://wiki.gnuarch.org/moin.cgi/xtla

Mon working directory est à jour. Lorsque je fais :

C-u C-x C-f [ . . . ] / C V S <RET>



Je ne connaissais pas cette méthode. Je faisais M-x cvs-update RET.

[...]

(call-process cvs-program)



[...]

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
call-process("c:/cygwin/bin/cvs.exe")



[...]

qui retournait 0x01. J'ai réussi à l'évaluer plusieurs fois. Mais
une fois le buffer tué, je n'ai pas réussi à le réévaluer sans
erreur ... Vraiment bizarre.



Très bizarre, tout ça. Un simple call-process qui plante comme ça ...

Que vaut la variable `default-directory' dans le buffer d'ou tu essaye
d'executer (call-process ...) ? Est-ce que tu arrives à faire un
`call-process' sur un autre programme dans le même buffer ?

--
Matthieu
drkm
Le #21715341
Matthieu Moy
drkm
Je tente d'apprendre PCL-CVS.



Si je puis me permettre de donner mon avis,



Permets-toi, permets-toi ...

apprendre CVS et outils
connexes aujourd'hui n'est pas une super idée.



[...]

Merci pour ces explications et ces liens. Néanmoins, CVS est fort
employé, il me semble. Ce n'est pas un argument pour l'employer sur
un nouveau projet, mais je n'ai pas le choix pour mon projet sur
SourceForge. C'est CVS, point.

Je pense avoir vu quelque part qu'ils n'excluent de fournir un
support pour Subversion dans le futur. Si c'est le cas, je pourrai
toujours y jeter un oeil, mais d'ici là, je n'ai pas le choix.

Mon working directory est à jour. Lorsque je fais :

C-u C-x C-f [ . . . ] / C V S <RET>



Je ne connaissais pas cette méthode. Je faisais M-x cvs-update RET.



Si je me souviens bien, c'est équivalent.

(call-process cvs-program)

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
call-process("c:/cygwin/bin/cvs.exe")

qui retournait 0x01. J'ai réussi à l'évaluer plusieurs fois. Mais
une fois le buffer tué, je n'ai pas réussi à le réévaluer sans
erreur ... Vraiment bizarre.



Très bizarre, tout ça. Un simple call-process qui plante comme ça ...



Surtout en ce qui concerne l'erreur, `(wrong-type-argument stringp
nil)'. J'ai jeté un oeil rapidement à l'implémentation de
`Fcall_process()', et je n'ai rien trouvé.

Que vaut la variable `default-directory' dans le buffer d'ou tu essaye
d'executer (call-process ...) ? Est-ce que tu arrives à faire un
`call-process' sur un autre programme dans le même buffer ?



Bingo. J'ai un peu galèré, mais apparemment, `default-directory'
vaut "~" et cela n'est pas bon. Avec "~/", ça fonctionne. Est-ce
normal ?

Mouais. _`call-process()'_ fonctionne. Mais PCL-CVS semble
toujours avoir le même problème, tous les fichiers sont à
« Modified ». De toute façon, le problème de `call-process()' ne doit
pas en être la cause, puisqu'il semble faire un change directory.

Sans doute est-ce relatif à une option de PCL-CVS. Il faudrais que
j'investigue un peu, mais je n'ai pas le temps ce soir. Il me semble
tout de même bizarre que PCL-CVS ne me retourne pas d'erreur. Aucun
message, aucune demande de mot de passe, aucun délai. Ce n'est pas
possible qu'il exécute `cvs(1)'. Mais il reste silencieux.
Étrange ...

Merci pour le filon, j'investiguerai plus loin le moment venu.

--drkm
Matthieu Moy
Le #21715331
drkm
Bingo. J'ai un peu galèré, mais apparemment, `default-directory'
vaut "~" et cela n'est pas bon. Avec "~/", ça fonctionne. Est-ce
normal ?



,----[ C-h v default-directory RET ]
| default-directory's value is "~/"
| Local in buffer *followup to drkm |
| Documentation:
| Name of default directory of current buffer. Should end with slash.
| ^^^^^^^^^^^^^^^^^^^^^
| Each buffer has its own value of this variable. To change the
| default directory, use function `cd'.
`----

Effectivement, si la variable ne se termine pas par un slash, le
comportement de pas mal de fonctions est completement déconnant.

Mouais. _`call-process()'_ fonctionne. Mais PCL-CVS semble
toujours avoir le même problème, tous les fichiers sont à
« Modified ».



Dans le buffer *cvs*, il te dit quelle est la dernière commande qu'il
a executé. Regardes la sortie de la commande si tu la lances à la
main.

Sinon, il va falloir débugger, probablement du coté de
`cvs-update-filter'.

--
Matthieu
drkm
Le #21715321
drkm
Matthieu Moy
drkm
Mon working directory est à jour. Lorsque je fais :

C-u C-x C-f [ . . . ] / C V S <RET>



Je ne connaissais pas cette méthode. Je faisais M-x cvs-update RET.



Si je me souviens bien, c'est équivalent.



J'ai vérifié, c'est équivalent à `cvs-examine()', plutôt. Du moins,
c'est ce qu'il renseignent dans Néanmoins, `cvs(1)' n'est exécuté que lors de l'appel de
`cvs-examine()', pas par :

C-u C-x C-f [ . . . ] / C V S <RET>

--drkm
drkm
Le #21715311
Matthieu Moy
,----[ C-h v default-directory RET ]
| Name of default directory of current buffer. Should end with slash.
| ^^^^^^^^^^^^^^^^^^^^^



Un peu gros :-/. Merci.

Dans le buffer *cvs*, il te dit quelle est la dernière commande qu'il
a executé. Regardes la sortie de la commande si tu la lances à la
main.



Oui. Mais justement, le problème était qu'il me donnait des
résultats totalement différents de ce que j'obtenais à la main. Mais
sans me signaler d'erreur de son côté.

En fait, j'ai progressé depuis. J'arrive à lancer effectivement
`cvs(1)'. Mais avec SSH, requis par SF, il doit me demander un mot de
passe de manière interactive, au lieu de quoi il n'affiche rien, et je
vois que `cvs(1)' et `ssh(1)' tournent (sans doute en attente d'une
entrée).

Je vais donc me tourner vers les MLs de PCL-CVS, si personne n'a
expérimenté ce problème ici.

Merci.

--drkm
Publicité
Suivre les réponses
Poster une réponse
Anonyme