Журнал всех операций Git - PullRequest
0 голосов
/ 02 июля 2018

Если у вас есть главное (по соглашению) репо, и люди используют свои собственные локальные репо, и кто-то злоупотребляет «не возвращайтесь в прошлое и не сдавайте ваши изменения вместо слияния ветви» или другого (обычного) правила журнал git не будет показывать вам полную историю удаленного репо - только историю, поскольку она относится к текущему состоянию репо, верно? Есть ли способ увидеть каждое последнее изменение, сделанное в удаленном репо, чтобы увидеть, кто не следует правилам? Я ценю, что коммиты пропали и не могут быть возвращены (отсюда проблема), но просто текстовый файл, содержащий данные, SHA и т. Д. Будет полезен. Это существует? Можно ли так настроить?

Чтобы быть ясно; Я заинтересован в том, чтобы увидеть все, что было выполнено в удаленном репо, чтобы отследить его злонамеренное или плохо обученное использование.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Когда вы говорите «master (по соглашению) репо», я предполагаю, что вы имеете в виду (1) есть единственное хранилище «источника правды» для проекта (которое обычно называется origin, а не master ); (2) пользователи / разработчики клонируют origin, работают в своих клонах и вносят изменения в origin.

При таком использовании взаимодействия с origin сводятся к очень немногим - и фактически записи в origin всегда должны быть push es. Такие вещи, как rebase не на самом деле происходят в origin; он просто обновляется, чтобы увидеть результат этих операций.

Если вам нужен какой-либо уровень безопасности или аудита в центральном репо, то это правильный способ его настройки. Но, это означает, что многие вещи, о которых вы говорите, вы не можете "увидеть" напрямую. Вы не будете знать (и, честно говоря, это не должно волновать), какие команды использовались для перевода локального репо пользователя в определенное состояние. Вы просто знаете, что толкается - и любые централизованно-принудительные правила должны быть описаны в терминах того, что толкается.

Это означает, что полезными инструментами являются опции конфигурации для origin и хук pre-receive (и, возможно, хук update) для origin (если только вы не находитесь в размещенной среде, предоставляющей другую модель безопасности). ).

Одна вещь, которую вы можете сделать, это глобально отказаться от переписывания истории. Тогда, если кто-то перебрасывает ветку после того, как она была сдвинута, origin просто не пойдет на нее (Пользователь все еще может работать над веткой, а затем перебазировать ее до того, как в первый раз поделится ею. С этим ничего не поделаешь, и на самом деле нет веской причины для этого.) На origin, который вы установите receive.denyNonFastForwards до true.

Вы можете применить практически любое правило с помощью хука; если вы можете разработать необходимый скрипт. Может быть, вы хотите применить правила топологии фиксации (например, «без слияний в master» в стиле gitflow) или требовать подписанных коммитов (см. Ниже), или чего-то еще.

Если правила относятся к конкретному пользователю или если вы хотите регистрировать потенциальные нарушения вместо (или в дополнение к) их блокировки, то аутентификация является проблемой. Защита доступа к репо - и аутентификация того, кто обращается к репо - это не то, к чему git действительно относится. Существует несколько серверных сред для размещения репозиториев git - таких как github, gitlab, TFS. Эти типы серверов обеспечивают параметры безопасности. Вы также можете настроить свое хранилище так, чтобы единственный способ достичь его - использовать аутентифицированные средства (должным образом аутентифицированные http или ssl).

Принятие коммитов, только если они подписаны (или только если они достижимы из подписанного тега), также является опцией, которая сообщает что-то о том, кто что сделал, но, возможно, не то, что вы хотите знать. (То, что я написал и подписал коммит, ничего не значит о том, кто переместил ссылку на указатель на этот коммит и попытался выдвинуть результат.)

Если вы можете выработать аутентификацию, но не можете записать в сценарий обнаружение каждого правила - или, возможно, не уверены, какими должны быть правила, но узнаете «плохое поведение», когда увидите его, - тогда просто регистрируйте Аутентифицированная личность со списком ссылок push-сообщения расскажет вам, вероятно, все, что вам нужно знать, чтобы разобраться «после факта».

0 голосов
/ 02 июля 2018

Похоже, вам нужно настроить контрольный журнал. Не похоже, что в git есть встроенная поддержка для этого, но вы можете присмотреться к репо с помощью пары хуков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...