83 votes

Comment ignorer les espaces blancs lors de la comparaison des sources dans Visual Studio / TFS ?

L'outil de comparaison dans Visual Source Safe (avant TFS) avait une case à cocher pratique pour sélectionner "Ignorer les espaces blancs".

Maintenant, nous utilisons TFS avec Visual Studio 2010, et la boîte de dialogue de comparaison n'a plus cette option. (Un oubli ridicule de la part de Microsoft !)

Est-il possible de contourner ce problème ?

4 votes

Vous devez être très prudent avec cette option car l'outil de fusion TFS ne peut pas faire la différence entre les espaces blancs dans le code et les espaces blancs dans une chaîne littérale. Une bien meilleure solution consiste à faire en sorte que toute l'équipe utilise les mêmes normes pour les espaces blancs dans le code.

5 votes

@Keith : La question de la littéralité est pratique à savoir - je ne l'avais pas remarqué. Cependant, les normes d'équipe ne sont pas toujours le problème. Si j'enveloppe un bloc de code dans une condition, il s'indentera automatiquement en provoquant des espaces blancs devant chaque ligne. Je ne veux vraiment voir que les déclarations If/End mises en évidence en tant que modifications, pas tout le bloc entre les deux.

1 votes

Je voudrais le contraire - tout ce qui se trouve dans le bloc est mis en évidence. Plus important encore, cela n'affecte pas seulement la mise en évidence de l'interface utilisateur, cela change également la façon dont l'outil effectue les fusions. Supposons que vous fusionnez avec la modification de quelqu'un - une autre If qui chevauche votre If bloc. Si vous ignorez les espaces blancs, vous obtiendrez une fusion "sûre" (4 changements d'une seule ligne), alors que si vous ne le faites pas, vous obtiendrez un conflit à résoudre manuellement (2 blocs se chevauchant). Le pire, c'est que si vous choisissez la première solution, le code sera toujours compilé (il s'agit maintenant d'un code de type If ) donc il ne sera pas évident que la fusion corrompue a gâché vos deux modifications.

81voto

Bill Points 1481

Il s'agit d'une solution de rechange qui semble contourner le problème.

Dans Visual Studio, sélectionnez Outils / Options / Contrôle de la source / Visual Studio Team Foundation System et cliquez sur le bouton Configurer les outils utilisateur.

Dans la boîte de dialogue, ajoutez un élément avec les paramètres suivants.

  • Extension : .*
  • Opération : Comparer
  • Commandement : C:\Program Fichiers \Microsoft Visual Studio 10.0 \Common7\IDE\diffmerge.exe
  • Arguments : %1 %2 %6 %7 %5 /ignorespace

Edit :

En fonction de votre Version de Visual Studio y chemin d'installation (x64/x86), l'option de commande peut être...

VS2010 : C:\Program Fichiers (x86) \Microsoft Visual Studio 10.0 \Common7\IDE\diffmerge.exe
VS2012 : C:\Program Fichiers (x86) \Microsoft Visual Studio 11.0 \Common7\IDE\diffmerge.exe
VS2013 : C:\Program Fichiers (x86) \Microsoft Visual Studio 12.0 \Common7\IDE\vsDiffMerge.exe
VS2015 : C:\Program Fichiers (x86) \Microsoft Visual Studio 14.0 \Common7\IDE\vsDiffMerge.exe
VS2017 : C:\Program Fichiers (x86) \Microsoft Visual Studio \2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer \vsDiffMerge.exe

Dans l'option argument, laissez le même nombre d'arguments que le VS suggère et ajoutez juste /ignorespace à la fin. Par exemple, dans le VS2015 ce sera :

%1 %2 /ignorespace

5 votes

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\vsDiffMerge.exe dans VS13

3 votes

Cela ne semblait pas fonctionner dans VS13... j'ai utilisé WinMerge... qui fonctionne.

0 votes

J'ai utilisé vos instructions pour remplacer la commande compare par KDiff3 Arguments : %1 %2

40voto

Master Points 470

Il y a un bouton "=" sur Barre d'outils Visual Studio 2017 qui permet de comparer les fichiers comme vous le souhaitez. J'espère que cette capture d'écran vous aidera.

Screenshot ofVisual Studio 2017 toolbar. The button with the equal sign is on the right, next to the lock icon. The tooltip for the button states "Ignore trim whitespace Ctrl+\, Ctrl+Space".

10voto

e-mre Points 1599

L'outil de comparaison par défaut dans Visual Studio est extrêmement ennuyeux. Je vous suggère d'utiliser une alternative. WinMerge est mon préféré. Il dispose également d'une option permettant d'ignorer les espaces blancs (menu Modifier -> Options -> Comparez -> Ignorer tout (sous la boîte de groupe "Whitespace" en haut)).

Véase Utilisation de WinMerge avec TFS .

0 votes

+1, bien que j'ajouterais un vote pour SourceGear Diffmerge

0 votes

Merci pour la réponse. Vous pourriez vouloir mettre à jour votre lien vers quelque chose de plus récent qu'une décennie.

6voto

Luis Hernandez Points 109

Dans VS2015, il est possible d'"ignorer l'espace blanc" lorsque l'on compare le fait de cliquer sur une petite icône avec la touche = symbole.
Allez dans "View/Toolbars/Compare Files". Dans la barre d'outils, cliquez sur "Ignore trim whitespace".

Mise à jour 2020 nous avons eu beaucoup de mal à résoudre les conflits entre l'outil de comparaison VS et l'outil SVN Tortoise, donc après une recherche nous avons décidé d'installer Comparaison des codes Devart (version gratuite) qui a une intégration avec VS2015/2017/2019, SVN (Tortoise et Ankh), TFS, Mercurial, GIT, etc. et l'Explorateur Windows, donc plus de cauchemar/confusion entre différents outils de comparaison. Essayez-le, il est extrêmement utile. Il dispose également de Merge pour résoudre les conflits et de Folder diff, ce qui est vraiment utile lorsque SVN ne fusionne pas pour une raison quelconque. De plus, cliquer sur les flèches gauche/droite pour copier les modifications est une fonctionnalité que j'aime beaucoup.

L'image VS ci-dessous provient du site web Devart, mais dans mon cas, j'ai configuré Code Compare pour l'ouvrir en dehors de VS au lieu de l'intégrer, je pense qu'elle se comporte mieux. Et dans VS Options > Source Control > Subversion Environment j'ai ceci :

enter image description here

enter image description here

4voto

Michael Edmison Points 143

Dans VS 2012, cela pourrait être ce que vous recherchez sans aucune modification de l'outil Diff.

En ouvrant l'écran de comparaison dans VS 2012 et en haut, vous voyez l'option suivante dans la barre d'outils. car il pourrait s'agir de la même comparaison que l'utilisateur : Master screenshot.

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X