Commit without whitespace changes on github

耗尽温柔 提交于 2019-11-30 10:55:57

Append ?w=1 to the URL on any github.com page that is showing a diff and it will ignore whitespace. See this blog post.

Cascabel

There is a trio of options that you can use at the command line (with any of git's diff commands) for this:

  • --ignore-space-at-eol Ignore changes in whitespace at EOL.
  • -b, --ignore-space-change Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent.
  • -w, --ignore-all-space Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none.

I don't believe github has implemented anything using these options.

Sadly the X thing is gone and alongside the previous snippet is rendered useless. Here is something that should work for now:

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'; }
}

After looking into source HTML of commit page, I've found out that github marks pure whitespace changes with "x" CSS class... Which makes the following oneliner possible:

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();

What it does, is runs through all rows of the commit table, and hides rows if given line and the one after that do have ".x" element in them.

Here's full JS:

// 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();
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!