Ответ 1
Приложите ?w=1
к URL-адресу на любой странице github.com, в которой отображается diff, и он будет игнорировать пробелы. См. этот пост в блоге.
Есть ли способ показать фиксацию на github.com без изменения пробелов?
Есть ли способ отобразить это с консоли? например, клонировать, а затем просматривать фиксацию (дерево), локально игнорируя все изменения пробела?
Я использую Trac широко; Я ищу что-то похожее на Ignore White space changes
(которое можно найти в представлении изменений).
Приложите ?w=1
к URL-адресу на любой странице github.com, в которой отображается diff, и он будет игнорировать пробелы. См. этот пост в блоге.
Существует три параметра, которые вы можете использовать в командной строке (с любой из команд git diff):
--ignore-space-at-eol
Игнорировать изменения в пробеле в EOL.-b, --ignore-space-change
Игнорировать изменения количества пробелов. Это игнорирует пробелы в конце строки и рассматривает все остальные последовательности одного или нескольких символов пробелов как эквивалентные.-w, --ignore-all-space
Игнорировать пробелы при сравнении строк. Это игнорирует различия, даже если одна строка имеет пробелы, где другая строка не имеет.Я не верю, что github внедрил все, используя эти параметры.
К сожалению, вещь Х исчезла и рядом с предыдущим фрагментом оказывается бесполезной. Вот что должно работать сейчас:
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 (' ' !== 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'; }
}
Изучив исходный 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();