Maison  >  Article  >  Tutoriel système  >  Remplacer svn diff par vimdiff : un outil pour comparer le code

Remplacer svn diff par vimdiff : un outil pour comparer le code

PHPz
PHPzavant
2024-01-09 19:54:13416parcourir

Sous Linux, il est très difficile d'utiliser directement la commande svn diff pour visualiser les modifications de code, j'ai donc cherché une meilleure solution sur Internet, qui consiste à utiliser vimdiff comme outil de visualisation de code pour svn diff, en particulier pour ceux qui sont habitué à utiliser vim, c'est vraiment pratique.

Lorsque vous utilisez la commande svn diff pour comparer les modifications d'un certain fichier, par exemple, exécutez la commande suivante :

$ svn diff -r4420 ngx_http_limit_req_module.c

Ensuite, la commande suivante sera effectivement envoyée au programme de comparaison par défaut :

-u -L ngx_http_limit_req_module.c (révision 4420) -L ngx_http_limit_req_module.c (copie de travail) .svn/tmp/tempfile.tmp ngx_http_limit_req_module.c

Explication de svn diff dans la FAQ officielle de svn (chinois, anglais) :

Lors de l'utilisation d'une commande diff externe, Subversion génère une ligne de commande très complexe. Le premier paramètre est le --diff-cmd spécifique, suivi des --extensions spécifiques (bien que les extensions soient ignorées lors de l'utilisation d'un symbole -- vide), ou si --extensions n'est pas spécifié ou si --extensions est vide, ajoutez le Paramètre '-u'. Pour les troisième et quatrième arguments, Subversion passera un "-L" et le label du premier fichier (par exemple, ""project_issues.html (révision 11209)"). Les cinquième et sixième arguments sont un autre " -L" et l'étiquette du deuxième fichier. Les septième et huitième arguments sont respectivement les noms du premier et du deuxième fichiers (par exemple, ".svn/text-base/project_issues.html.svn-base" et ".svn/tmp/project_issues). .html.tmp")

Après avoir compris la commande d'appel interne de diff, il est relativement simple d'utiliser vimdiff comme programme de comparaison.

Lorsque vimdiff compare deux fichiers, il lui suffit de connaître les chemins et les noms de fichiers des deux fichiers, qui sont les 7ème et 8ème paramètres de la commande interne diff ci-dessus

 ;

Cela explique également qu'il n'est pas possible d'appeler directement vimdiff avec --diff-cmd en raison d'un trop grand nombre de paramètres dans la commande interne diff (la commande est la suivante).

$ svn diff --diff-cmd vimdiff -r4420 ngx_http_limit_req_module.c

Donc, nous devons écrire nous-mêmes un autre script, laisser ce script être utilisé comme programme de diff, obtenir la commande interne de diff, puis prendre uniquement les 7ème et 8ème paramètres, puis les transmettre à vimdiff, afin que nous puissions résoudre le problème de nombreux paramètres Problème.

Le script (diffwrap.sh) est le suivant :

#!/bin/sh
# 去掉前5个参数
shift 5
# 使用vimdiff比较
vimdiff "$@"

De plus, svn fournit également la fonction de modifier le programme diff par défaut dans le fichier de configuration, de sorte que vous n'avez pas besoin de spécifier --diff-cmd à chaque fois que vous utilisez svn diff.

Modifiez ~/.subversion/config et trouvez la ligne de configuration suivante :

# diff-cmd = diff_program (diff, gdiff, etc.)

Ajoutez simplement le chemin du script ci-dessus, par exemple, remplacez-le par

diff-cmd = /usr/local/bin/diffwrap.sh

À l'avenir, l'utilisation de la commande svn diff ouvrira vimdiff par défaut pour comparer deux fichiers.

Rendu :

使用vimdiff代替svn diff的查看代码工具

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer