2010-12-15 105 views
23

Existe-t-il un moyen d'afficher un commit sur github.com sans afficher les modifications d'espaces?Validation sans modifications d'espaces sur github

Existe-t-il un moyen d'afficher cela depuis la console? c'est-à-dire cloner puis regarder commit (arbre) en ignorant tous les changements d'espace blanc?

J'utilise intensivement Trac; Je suis à la recherche de quelque chose de similaire à Ignore White space changes (qui peut être trouvé sur la vue changeset).

+0

https://gist.github.com/xPaw/de6ee132a2e267ef6960: Ajoute un bouton dans l'interface utilisateur GitHub pour ignorer les changements les espaces blancs engage –

Répondre

60

Append ?w=1 à l'URL sur une page github.com qui montre une diff et il ne tient pas compte des espaces. Voir this blog post.

+5

Cela a l'habitude de travailler dans le passé, mais pas plus pour moi. –

+2

Je viens de tester et cela fonctionne pour moi, peut-être qu'ils ont corrigé –

+0

wow! C'est génial, je ne le savais pas :) Merci beaucoup pour le partage! Salutations pour la communauté et les membres comme vous +1 – SGhosh

20

Il y a un trio d'options que vous pouvez utiliser à la ligne de commande (avec l'une des commandes diff GIT) pour cela:

  • --ignore-space-at-eol Ne pas tenir compte dans les espaces à EOL.
  • -b, --ignore-space-change Ignorer les modifications de la quantité d'espaces. Cela ignore les espaces à la fin de la ligne et considère que toutes les autres séquences d'un ou de plusieurs caractères d'espace sont équivalentes. Ignorer les espaces lors de la comparaison de lignes.
  • -w, --ignore-all-space Ceci ignore les différences même si une ligne a des espaces où l'autre ligne n'en a aucune.

Je ne crois pas que github ait implémenté quoi que ce soit en utilisant ces options.

+1

Grande réponse, merci pour corriger les fautes dans la question ... –

+20

A partir de https://github.com/blog/967-github-secrets - vous pouvez ajouter? w = 1 à l'URL pour voir le diff avec les espaces ignorés. – Alexander

+1

malheureusement,? W = 1 ne semble pas ignorer les caractères de nouvelle ligne, ce que le sacrément –

0

Après avoir regardé en HTML source de commettre page, j'ai découvert que github marque des changements purs espaces blancs avec « x » classe CSS ... Ce qui rend les suivantes oneliner possibles:

jQuery.expr[':'].hasX = function(obj) { var $this = $(obj); return ($this.find('.x').length && $this.next().find('.x').length); }; jQuery('.data tbody tr:hasX').toggle().next().toggle(); 

Ce qu'il fait , parcourt toutes les lignes de la table de commit, et cache les lignes si une ligne est donnée et celle qui suit contient l'élément ".x".

est ici JS complet:

// create new selector 
jQuery.expr[':'].hasX = function(obj) { 
    // cache 
    var $this = $(obj); 
    // whether this and next line do have '.x' element as child 
    return $this.find('.x').length && $this.next().find('.x').length; 
} 

// select all rows and hide (ones containing "-") 
jQuery('.data tbody tr:hasX').toggle() 
// hide the ones after selected (ones containing "+") 
    .next().toggle(); 
1

Malheureusement, la chose X est parti et à côté de l'extrait précédent est rendu inutile. Voici quelque chose qui devrait fonctionner pour l'instant:

var i, e, tr, tdL, tdR, textL, textR, text = function (el) { return el.parentNode.children[2].children[1].children[0].textContent.replace(/\s/g, '').substr(1); } 
for (i = 0, e = document.getElementsByClassName('gd'); i < e.length; ++i) { 
    tr = e[i].parentNode.parentNode.parentNode; 
    if ('&nbsp;' !== tr.children[1].innerHTML) { continue; } 
    tdL = tr.children[0]; 
    tdR = document.getElementById(tdL.id.replace(/^L(\d+)L/, 'L$1R')), 
    textL = text(tdL); 
    textR = text(tdR); 
    if (textL === textR) { tdL.parentNode.style.display = tdR.parentNode.style.display = 'none'; } 
} 
+0

Merci pour la mise à jour. –