Подтвердить что ты не робот

Зафиксировать без изменения пробелов в github

Есть ли способ показать фиксацию на github.com без изменения пробелов?

Есть ли способ отобразить это с консоли? например, клонировать, а затем просматривать фиксацию (дерево), локально игнорируя все изменения пробела?

Я использую Trac широко; Я ищу что-то похожее на Ignore White space changes (которое можно найти в представлении изменений).

4b9b3361

Ответ 1

Приложите ?w=1 к URL-адресу на любой странице github.com, в которой отображается diff, и он будет игнорировать пробелы. См. этот пост в блоге.

Ответ 2

Существует три параметра, которые вы можете использовать в командной строке (с любой из команд git diff):

  • --ignore-space-at-eol Игнорировать изменения в пробеле в EOL.
  • -b, --ignore-space-change Игнорировать изменения количества пробелов. Это игнорирует пробелы в конце строки и рассматривает все остальные последовательности одного или нескольких символов пробелов как эквивалентные.
  • -w, --ignore-all-space Игнорировать пробелы при сравнении строк. Это игнорирует различия, даже если одна строка имеет пробелы, где другая строка не имеет.

Я не верю, что github внедрил все, используя эти параметры.

Ответ 3

К сожалению, вещь Х исчезла и рядом с предыдущим фрагментом оказывается бесполезной. Вот что должно работать сейчас:

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

Ответ 4

Изучив исходный HTML-код фиксации, я обнаружил, что github отмечает изменения чистого пробела с помощью класса "x" CSS... Что делает возможным следующий oneliner:

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

Что он делает, выполняется через все строки таблицы фиксации и скрывает строки, если задана строка, и одна из них имеет элемент ".x" в них.

Здесь полный 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();