J'essaie d'obtenir des changements entre les validations pour un grand nombre de documents HTML, mais j'ai rapidement remarqué que la plupart des changements sont peu importants et sont généralement le résultat de la journalisation ou des scripts externes. Par exemple:Extraire des changements significatifs avec git diff
<a class="support-ga" target="_blank" href="#">0fb63cacd50e/0fb63cacd50e @
-app-151</a>
+app-107</a>
<input type='hidden' name='csrfmiddlewaretoken'
-value='82NB5DdySoICu1mqcl0RZVk5dMCOVEQd'
+value='a0zBgxBevaBugotGpNKI6kMPsIsBbH44'
/>
L'exemple précédent montre que l'examen de ces modifications n'est probablement pas très intéressant ou utile.
Je voudrais savoir s'il existe une commande git diff pour ignorer ce genre de changements. Une autre alternative est d'avoir un classement des différences basées sur la similarité. Jusqu'à présent, j'ai utilisé la commande git diff --word-diff=porcelain --unified=0 HEAD~1 HEAD
, puis le traitement de cette sortie pour extraire les changements, calculer la distance de Levenshtein et supprimer les doublons. Cela aide mais ce n'est pas une bonne solution étant donné que git sait déjà quelles lignes sont supposées être comparées et fournit un nombre configurable de lignes comme contexte.
pas sûr de votre cas d'utilisation est - Journaux et le code généré comme celui-ci sont généralement jamais partie du git. Tout ce qui est généré pendant la construction/l'exécution est généralement ignoré pour éviter ce problème. – TheGeorgeous
Bien sûr. Évidemment, le grand nombre de documents HTML ne font pas partie d'un repo git. La plupart d'entre eux ont été téléchargés via le web grattage et les sites Web utilisent javascript massivement. En passant, j'ai vu que certains clients git offrent déjà une mesure de similarité, mais je crois que c'est seulement à des fins informatives. –
L '"indice de similarité" est intégré à Git et est utilisé pour la détection de renommer: voir http://stackoverflow.com/a/21292993/1256452 (voir les commentaires en particulier: il est basé sur des lignes, moins l'espace blanc, mais cassé en fragments de 60 caractères pour les longues lignes ou les fichiers binaires). – torek