2010-01-15 6 views
20

J'ai besoin de savoir si les deux patchs sont effectivement les mêmes.diff différant avec diff?

J'ai un ancien fichier patch et un nouveau fichier patch créé avec la commande unix diff. Il suffit de différencier les différences des rapports de correctifs en raison de l'horodatage lors de la création du correctif.

Y at-il un moyen (avec diff?) Qui peut me dire de façon fiable si les deux patches sont effectivement les mêmes?

+9

nous mettons un diff dans votre diff donc vous pouvez diff pendant que vous diff –

+3

yo, imma vous laisse diff, mais beyonce a eu les meilleurs diffs de tous les temps. tout le temps! – GManNickG

+2

Existe-t-il un badge pour les questions récursives? Il devrait y avoir. –

Répondre

28

Utilisez interdiff à partir de patchutils.

+0

Merci éphémient. C'est juste le billet. – srking

+0

Malheureusement, après être entré dans interdiff m'a échoué. D'abord, il n'y a pas de code de retour comme diff et, deuxièmement, il générait incorrectement des tonnes de différences entre deux gros correctifs identiques. – srking

+0

Hmm. Le code de retour est nul dans les deux cas, mais si les deux diff sont identiques, il ne devrait pas y avoir de sortie du tout. Y a-t-il des noms de fichiers modifiés entre les deux diffs? J'ai testé 'interdiff' en ce moment sur quelques fichiers texte de 80ko avec environ 20ko de changements, et cela a bien fonctionné en reconnaissant des différences. – ephemient

5

Vous pouvez appliquer les deux correctifs aux copies du même fichier source, puis utiliser diff normalement pour vérifier les différences dans les résultats. Les correctifs représentent les modifications apportées aux fichiers d'entrée. Deux correctifs sont donc identiques s'ils ont le même effet sur les fichiers d'entrée. Les différences dans les correctifs sont directement reflétées dans les différences des résultats de ces correctifs.

Les différences entre deux correctifs qui n'entraînent pas de différence dans le résultat de ces correctifs sont sans importance.

+0

Mais comment "vérifier les différences dans les résultats"? Si j'ai deux copies du même code source (disons la même vérification SVN sur deux machines différentes) et que j'applique un patch sur une machine et l'autre sur l'autre machine, je lance 'svn diff' et il me reste, encore une fois, avec deux diffs à vérifier. Votre remarque au sujet de "deux patches sont les mêmes s'ils ont le même effet sur les fichiers d'entrée" est bien prise, mais la question est de savoir comment pouvons-nous déterminer cela? – dimo414

0

Vous pouvez essayer Beyond Compare.

Il peut être configuré pour remplacer les chaînes d'un ou des deux fichiers par quelque chose d'autre, ce qu'il fait ensuite sous les couvertures. Les fichiers à l'écran semblent toujours exister sur le disque, mais les différences sont en fonction des fichiers traités. Avec ceci vous pouvez le configurer pour changer tout le texte qui a un format comme un horodatage à quelque chose de commun dans les deux dossiers, et alors vous comparerez seulement tout le reste. Dans le client Windows, pour modifier ces paramètres, dans la barre d'outils se trouve un bouton avec un petit symbole qui ressemble à un homme, un torse et une tête, et dans la boîte de dialogue qui s'ouvre, il y a un onglet pour les remplacements.

+0

Merci, mais j'ai besoin d'un outil open-source car un nombre inconnu d'utilisateurs vont exécuter la comparaison de patch. – srking

+0

Ok, mais si tout ce que vous devez savoir, c'est si elles sont identiques, sauf pour les horodatages, peut-être que vous devriez juste faire un AWK ou SED ou similaire sur le fichier pour le transformer, de sorte que les timestamps sont égaux, puis vous pouvez exécuter n'importe quel type de diff que vous voulez sur les fichiers. –

+0

Ou est le processus de patch plus comme "donné le fichier original, patcher avec l'un des fichiers, puis patcher le même fichier original avec l'autre fichier, puis comparer les résultats des deux opérations de patch", de sorte que les correctifs réels contiennent des données différentes, mais ils se retrouvent avec le même résultat? –