Git pull logs: что означает% при работе с журналом переименования? [Дубликат]

Хорошо, вот мое занятие:

  • полностью ленив: работает с бесконечными перечислимыми
  • промежуточное копирование / буферизация
  • O (n )
  • работает также, ]

    Пример использования

    var src = new [] {1, 2, 3, 4, 5, 6}; 
    
    var c3 = src.Chunks(3);      // {{1, 2, 3}, {4, 5, 6}}; 
    var c4 = src.Chunks(4);      // {{1, 2, 3, 4}, {5, 6}}; 
    
    var sum   = c3.Select(c => c.Sum());    // {6, 15}
    var count = c3.Count();                 // 2
    var take2 = c3.Select(c => c.Take(2));  // {{1, 2}, {4, 5}}
    

    Пояснения

    Код работает путем вложенности два итератора на основе yield.

    Внешний итератор должен отслеживать, сколько элементов было эффективно использовано внутренним (куском) итератором. Это делается закрытием remaining с помощью innerMoveNext(). Неиспользуемые элементы куска отбрасываются до того, как следующий кусок будет получен внешним итератором. Это необходимо, потому что в противном случае вы получите несогласованные результаты, когда внутренние перечислимые элементы не будут (полностью) потреблены (например, c3.Count() вернет 6).

    Примечание: Ответ был обновлен для устранения недостатков, отмеченных @ aolszowka.

29
задан Jordan Dea-Mattson 18 February 2013 в 21:59
поделиться

1 ответ

Git использует эвристику, чтобы определить, было ли изменение переименованием или копированием файла, а также если это «переписывание» файла. Грубо говоря, если различие между старой и новой версиями больше, чем сама новая версия, это «переписать».

Это настроено на первоначальный вариант использования git для изменения исходных файлов, чаще всего делая локализованные изменения: поскольку он основан на линейном разграничении, такие вещи, как переименование исходного файла, могут вызвать его. Кроме того, поскольку он определяется «на лету», параметры diff, такие как «-b» и «-w», могут изменить оценку того, является ли изменение переписыванием (или копией или переименованием).

Процент - это «индекс несходства» git (в отличие от процентного «индекса подобия» для переименования или копирования). Вероятно, что-то вроде процента строк в файле, который изменился.

33
ответ дан araqnid 20 August 2018 в 18:51
поделиться
  • 1
    Хорошо спасибо за это объяснение. Я выполнил Ctrl + Shift + F в Eclipse в этих java-файлах, то есть автоматическое форматирование и, как следствие, файлы имеют много изменений. Выпускаете ли git-выходы только перезаписывать и переименовывать файлы, а не те, у которых есть «небольшие изменения»? что в моем случае все другие изменения среди 62 являются второстепенными? – Manuel Selva 1 December 2012 в 10:03
  • 2
    да, это сводка после фиксации списков файлов, которые добавляются, удаляются, переименовываются, копируются или переписываются (это вывод git diff --summary HEAD^..). Таким образом, другие изменения являются «нормальными». изменения в файлах - недостаточно для запуска эвристики перезаписи. – araqnid 2 December 2012 в 14:05
Другие вопросы по тегам:

Похожие вопросы: