Как сделать видимыми основные действия по доступу к файлам в git log?
Я хотел бы визуализировать действия файловой системы, которые вызваны выполнением чего-то вроде git lg -n3
, Я на Mac. Вот я и подумала dtruss git lg -n3
,
К сожалению, это не дает мне ожидаемый результат. Я ожидаю увидеть доступ к файлам для некоторых файлов на .git/objects
,
Является dtruss
не то, что я ищу?
Я должен добавить, что я также не вижу вывод git log
когда я прогоню dtruss
, Если я бегу dtruss git
Я вижу результат обзора команды git по крайней мере. Я делаю это неправильно?
ОБНОВИТЬ
Хорошо, оказывается, это проблема с тем, как dtruss обрабатывает команду из нескольких слов git log
, Если я использую dtruss /usr/local/git/libexec/git-core/git-log
это работает как ожидалось.
Я могу пойти дальше и бежать dtruss /usr/local/git/libexec/git-core/git-log -n3 2>&1 | grep access
и получить в значительной степени то, что я искал. Таким образом, единственный оставшийся вопрос на самом деле заключается в том, почему я должен использовать полный путь к git-log
вместо просто git log
команда.
2 ответа
В системах UNIXoid, таких как Linux (встроенные или настольные), я люблю использовать для этой цели инструменты inotify, например, inotifywait или inotifywatch, в зависимости от моей конкретной цели.
Редактировать: Интересно, почему кто-то отрицал мой ответ. Inotify-tools - это специализированный набор инструментов для мониторинга доступа к файловой системе, о чем и просили. Я был бы признателен за замечание с просьбой о разъяснении в первую очередь, если мой ответ не кажется хорошим или уместным. Спасибо.
Вы, вероятно, хотите попробовать strace
, Например, это может быть результат, который вы ищете:
strace -q -f -e trace='open,stat' git log -n3
или если вы действительно хотите доступ ко всей файловой системе
strace -q -f -e trace=file git log -n3
должен сделать это. Брось -f
расстаться, если вам не нужно отслеживать вещи, сделанные less
и другие возможно выполненные разветвленные процессы. По-прежнему, man strace
будет стоить читать...