0 votes

Comment puis-je amener SnailSvn à exécuter une commande de différence personnalisée ?

Comment puis-je faire en sorte que SnailSvn utilise vimdiff ou tout autre script diff personnalisé ? Il n'a qu'une liste prédéfinie d'options.

Pour configurer son support de diff (pour opendiff aka FileMerge), il vous demande de copier le script suivant à l'adresse : ~/Library/Application Scripts/net.langui.SnailSVN.DiffTool/difftool.sh

#!/bin/bash
pkill -nf ScriptMonitor
sh "$@"

L'argument est un fichier diff-cmd.sh généré qui ressemble à ceci :

#/bin/bash
"/Applications/Xcode.app/Contents/Developer/usr/bin/opendiff" "/var/folders/nn/000000000000000000000000000000/T/net.langui.SnailSVNFree//r422640 Code.cs" "/Users/idbrii/code/game/Assets/Standard Assets/Unlit/Planes/Code.cs"

J'ai essayé de le remplacer par quelque chose comme :

#!/bin/bash
args=$(grep opendiff "$@" | cut -d\  -f2-)
echo mvimdiff $args >> ~/snailsvndifftool.log 2>&1

Mais au lieu de cela, j'obtiens trop de fichiers -- malgré les fichiers contenant des guillemets, ils sont toujours séparés par des espaces.

1voto

Matt Gutting Points 251

À l'aide de cette réponse, j'ai trouvé eval:

#!/bin/bash
args=$(grep opendiff "$@" | sed -e 's,"/Applications/Xcode.app/Contents/Developer/usr/bin/opendiff",/usr/local/bin/mvimdiff,')
echo diff: $args >> ~/snailsvndifftool.log 2>&1
# Qu'est-ce que c'est ce truc louche?
eval       $args >> ~/snailsvndifftool.log 2>&1

Cependant, l'utilisation de eval sur des arguments arbitraires semble inutilement non sécurisée et je n'ai pas pu faire fonctionner les tableaux (c'est-à-dire, mvimdiff ${args[@]}), donc à la place je force mvimdiff à être au début de la ligne et n'autorise qu'un ensemble de caractères:

#!/bin/bash

args=$(grep opendiff "$@" | sed -E 's,"/Applications/Xcode.app/Contents/Developer/usr/bin/opendiff",,; s/[^A-Za-z0-9.~/"_ -]//g; s,^,/usr/local/bin/mvimdiff,')
echo diff: $args >> ~/snailsvndifftool.log 2>&1
eval $args >> ~/snailsvndifftool.log 2>&1

Il y a probablement quelque chose qui m'échappe, donc j'espère que quelqu'un aura une meilleure réponse.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X