Разрешение нескольким пользователям писать в хранилище не означает, что вы сможете определить, «кто что сделал».
Это правда, что первый (серверный) пользователь создал конкретный объект(blob, tree, commit, annotated tag) будет владельцем свободного объектного файла объекта (хотя любой другой пользователь с правами записи может, вероятно, удалить и перезаписать файл), но в конечном итоге эти свободные объектные файлы будут эфемерными.Отдельные свободные объекты будут в конечном итоге упакованы и удалены (например, с помощью git gc
, либо вручную, либо автоматически, как только накопится достаточно свободных объектов).
Git не выполняет ни аутентификации, ни авторизации, поэтому не имеет представления о«Пользователь», который делает толчок 1 .Поскольку он не имеет понятия активного пользователя, он не может предоставить журнал «кто что нажал / изменил / удалил что».Если вам нужен такой журнал аудита , вам придется полагаться на любой инструмент, который фактически выполняет аутентификацию.К сожалению, многие инструменты хостинга Git ориентированы на распределенную природу Git, поэтому они, как правило, не предлагают большой поддержки «централизованных» функций, таких как журнал аудита.Однако есть некоторые исключения:
- Gitolite ведет журнал, который может быть использован в качестве журнала аудита (аутентификация выполняется сервером SSH или сервером HTTP, ноGitolite выполняет авторизацию).
- Gerrit , кажется, имеет некоторые встроенные ограничения, которые пытаются более тесно связать информацию пользователя коммиттера (и автора, в зависимости от конфигурации) с аутентифицированными учетными записями пользователей.(см. Идентификация кузницы );хотя это не журнал аудита, этого может быть достаточно, если вы последовательно ограничиваете полномочия «подделки».
(Возможно, есть другие инструменты или службы, которые также имеют некоторые функции ведения журнала / ограничения).
См. Также: Журнал журнала Git
1 Git отслеживает автора и коммиттера для каждого коммита (тегера для каждого аннотированного тега),но их значения не ограничены Git.Любой может изменить действующего автора или коммиттера, изменив (или переопределив) свои переменные конфигурации user.email
и user.name
или установив переменные среды GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME и GIT_COMMITTER_EMAIL при создании коммита или тега.