Получать данные в реальном времени из Firebase и отображать на графике в Ionic

Простой примерный анализ

Формат в основном совпадает с унифицированным diff diff -u.

Например:

diff -u <(seq 16) <(seq 16 | grep -Ev '^(2|3|14|15)$')

Здесь мы удалили строки 2, 3, 14 и 15. Выход:

@@ -1,6 +1,4 @@
 1
-2
-3
 4
 5
 6
@@ -11,6 +9,4 @@
 11
 12
 13
-14
-15
 16

@@ -1,6 +1,4 @@ означает:

  • -1,6: этот фрагмент соответствует строкам с 1 по 6 первого file:
    1
    2
    3
    4
    5
    6
    
    - означает «старый», как мы обычно вызываем его как diff -u old new.
  • +1,4 говорит, что этот фрагмент соответствует строкам с 1 по 4 второго файла. + означает «новый». У нас есть только 4 строки вместо 6, потому что были удалены 2 строки! Новый hunk:
    1
    4
    5
    6
    

@@ -11,6 +9,4 @@ для второго столбца аналогичен:

  • в старом файле, у нас есть 6 строк, начиная с строки 11 старого файла:
    11
    12
    13
    14
    15
    16
    
  • в новом файле, у нас есть 4 строки, начиная с строки 9 нового файла:
    11
    12
    13
    16
    
    Обратите внимание, что строка 11 является 9-й строка нового файла, потому что мы уже удалили 2 строки в предыдущем hunk: 2 и 3.

Hunk header

В зависимости от вашей версии и конфигурации git вы также может получить строку кода рядом с линией @@, например func1() { в:

@@ -4,7 +4,6 @@ func1() {

Это также можно получить с флагом -p plain diff.

Пример: старый файл:

func1() {
    1;
    2;
    3;
    4;
    5;
    6;
    7;
    8;
    9;
}

Если мы удалим строку 6, diff показывает:

@@ -4,7 +4,6 @@ func1() {
     3;
     4;
     5;
-    6;
     7;
     8;
     9;

Обратите внимание, что это не правильная строка для func1: она пропускает строки 1 и 2 .

Эта удивительная функция часто точно указывает, к какой функции или классу относится каждый кусок, что очень полезно для интерпретации diff.

Как алгоритм выбора заголовка работает точно обсуждается at: Откуда берутся отрывки в заголовке git diff hunk?

0
задан Frank van Puffelen 16 January 2019 в 05:37
поделиться