Как мерзавец обнаруживает, что файл был изменен?

Как насчет nikto?

61
задан Acumenus 30 May 2014 в 18:56
поделиться

3 ответа

Есть начальная проверка mtime для отчетов, таких как "git status", но когда вычисляется окончательная фиксация, время не имеет значения ... имеет значение SHA1.

7
ответ дан 24 November 2019 в 17:25
поделиться

Что ж, я рискну предположить, что он использует комбинацию вызовов stat () для определения того, что выглядит так, как будто оно могло измениться, а затем, в свою очередь, фактически связывает, чтобы установить это так.

Вы можете увидеть код для механизма сравнения здесь , чтобы получить некоторое представление. Я проследил кодовую базу, чтобы убедиться, что команда status действительно вызывает этот код (похоже, что многие вещи делают!), И на самом деле все это имеет большой смысл, если вы знаете, что Git довольно плохо работает в Windows, где он использует уровень эмуляции для выполнения этих вызовов типа POSIX: на порядок медленнее выполнить git status на этой платформе.

В любом случае, если не считать чтения всего кода сверху вниз ( что я могу позже, если у меня будет время!

[изменить: см. здесь для объяснения stat () ]

5
ответ дан 24 November 2019 в 17:25
поделиться

В зависимости от платформы вы сможете узнать, какие системные вызовы использует Git. чтобы выяснить его статус. Попробуйте strace git status в Linux, truss git status в SunOS или инструмент, по-видимому, основанный на DTrace, который Apple поставляет со своими инструментами разработчика в Mac OS X.

2
ответ дан 24 November 2019 в 17:25
поделиться
Другие вопросы по тегам:

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