-
Notifications
You must be signed in to change notification settings - Fork 0
How it works
No1se-pi edited this page Jul 10, 2026
·
1 revision
git commit
↓
.git/hooks/pre-commit
↓
custodes check
↓
parser.py читает staged diff
↓
совпадение найдено → exit 1 → коммит остановлен
совпадений нет → exit 0 → коммит продолжается
Сканер получает список подготовленных файлов:
git diff --cached --name-onlyЗатем для каждого файла читает staged diff:
git diff --cached <file>Проверяются только добавленные строки, начинающиеся с +. Служебная строка diff +++ исключается.
Каждая добавленная строка сравнивается с элементами banwords обычным регистрозависимым поиском подстроки.
| Файл | Назначение |
|---|---|
installer.sh |
Устанавливает программу, виртуальное окружение и команду custodes
|
custodes.sh |
Реализует CLI, управление hooks, обновление и удаление |
parser.py |
Получает staged diff и ищет запрещённые строки |
messeges.py |
Хранит сообщения сканера и ASCII-логотип |
.env |
Хранит пользовательские правила и настройки |
requirements.txt |
Содержит Python-зависимости |
~/.local/share/custodes/
├── .env
├── .venv/
├── custodes.sh
├── parser.py
├── messeges.py
├── README.md
└── requirements.txt
~/.local/bin/custodes
Файл ~/.local/bin/custodes — небольшой Bash-wrapper, который передаёт команду в основной custodes.sh.
Custodes уменьшает риск случайного коммита секрета на рабочей машине разработчика. Защита действует до создания коммита, но остаётся локальной:
- hook можно обойти с помощью
git commit --no-verify; - hook не переносится при обычном клонировании репозитория;
- простое совпадение строки не определяет все реальные секреты;
- уже закоммиченные данные не анализируются.
Поэтому Custodes лучше использовать вместе с серверным secret scanning и проверками CI/CD.