svn propedit dans un script non interactif

Je dois éditer une propriété svn sur un fichier après une validation. Par conséquent, j’aimerais utiliser un script post-commit.

Exemple:

J’ai une propriété appelée export avec une valeur à test lorsque je valide un fichier nommé example.ex Après que mon commit ait réussi, j’ai un hook post-commit, qui fait des choses intelligentes (cela n’a pas d’importance pour ma question) et après en finissant il faut changer (ou supprimer) la propriété export vers une nouvelle valeur comme celle qui a succeeded .

En ligne de commande, j’utiliserais ceci:

 svn propedit "export" file:///svn/repositoryName/path/to/file/in/repository/example.ex 

Cela ouvrira mon éditeur de système vi et je verrai le test valeur. Je peux le changer pour ce que je veux et enregistrer et quitter le fichier avec les commandes vi comme :wq

Subversion renvoie un message comme celui-ci

 "svn-prop.tmp" 1L, 10C written Set new value for property 'export' on file:///svn/repositoryName/path/to/file/in/repository/example.ex' Committed revision 67. 

Tellement bien. Mais comme je l’ai dit, j’ai besoin de cela dans un script post-commit, où je ne peux pas contrôler vi (ou est-ce que je me trompe?).

Donc, Subversion me donne la possibilité d’append un fichier à la commande propedit . Le fichier contient uniquement la nouvelle valeur succeeded .

La nouvelle commande devrait ressembler à ceci:

 svn propedit "export" file:///svn/repositoryName/path/to/file/in/repository/example.ex --file /path/to/propertyValueFile/propValue.file 

Et voici le problème: la dernière commande ne fonctionne pas. Encore une fois, vi s’ouvre et je dois modifier ma valeur manuellement. Pourquoi? Qu’est-ce que je fais mal?

J’ai trouvé la solution qui fonctionne pour moi.

 svn propedit "export" file:///svn/repositoryName/path/to/file/in/repository/example.ex --file /data/svn/intranet/hooks/fileWithLogMessage --editor-cmd "echo succeeded >" 

--editor-cmd donne un autre éditeur et je peux déjouer propedit avec echo newValueForProp .

Et maintenant, cela fonctionne comme un charme.

Essayez d’utiliser svn propset plutôt que svn propedit . Utiliser propedit ouvre toujours un éditeur externe … à quoi ça propedit .