Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
talisman — Сканер секретов на основе Git-хуков, который обнаруживает токены, пароли и приватные ключи в исходящих наборах изменений, предотвращая попадание конфиденциальных данных в коммиты или пуши в репозитории. | Kitploit
Инструменты/GitHubGitHub/thoughtworks/talisman
Статический анализАнализ КодаDevSecOpsОбнаружение Секретов
GitHubthoughtworks/talisman

talisman

Сканер секретов на основе Git-хуков, который обнаруживает токены, пароли и приватные ключи в исходящих наборах изменений, предотвращая попадание конфиденциальных данных в коммиты или пуши в репозитории.

Репозиторий
2.1k2529 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Talisman

Инструмент для обнаружения и предотвращения попадания секретов в репозиторий

License: MIT Go Report Card contributions welcome Build Status

Содержание

  • Что такое Talisman?
  • Установка
    • Установка в PATH (рекомендуемый способ)
    • Установка в качестве глобального шаблона хуков
  • Настройка проекта
    • Использование с фреймворками хуков
      • Pre-commit
      • Husky
    • Прямой вызов talisman
  • Обновление
  • Talisman в действии
    • Проверки
    • Игнорирование файлов
      • Интерактивный режим
      • Игнорирование определённых детекторов
      • Игнорирование определённых ключевых слов
      • Игнорирование нескольких файлов одного типа (с помощью шаблонов)
      • Игнорирование файлов с указанием языковой области
      • Пользовательские шаблоны поиска
    • Настройка порога серьёзности
    • Talisman как утилита командной строки
      • Интерактивный режим
      • Сканер истории Git
      • Калькулятор контрольных сумм
  • Создание HTML-отчётов Talisman
    • Примеры скриншотов
  • Удаление
    • Удаление из глобального шаблона хуков
    • Удаление из одного репозитория
  • Вклад в развитие Talisman

Что такое Talisman?

Talisman — это инструмент, который проверяет наборы изменений git, чтобы гарантировать, что потенциальные секреты или конфиденциальная информация не покидают рабочую станцию разработчика.

Он проверяет исходящие изменения на предмет подозрительного содержимого, такого как потенциальные SSH-ключи, токены авторизации, закрытые ключи и т.д.

Установка

Talisman поддерживает MAC OSX, Linux и Windows.

Talisman может быть установлен и использован одним из следующих способов:

  1. Как отдельный исполняемый файл
  2. Как хук git в качестве глобального шаблона хуков git и утилита командной строки (для сканирования git-репозиториев)
  3. Как хук git в один репозиторий git

Talisman можно настроить как pre-commit или pre-push хук в git-репозиториях.

Инструкции приведены ниже.

Отказ от ответственности: Talisman не может обнаружить секреты, попадающие в git-репозиторий через принудительный push. Принудительный push считается вредоносным действием, и мы рекомендуем администраторам git-репозиториев применять соответствующие меры для авторизации таких действий.

Установка в PATH (рекомендуемый способ)

Мы рекомендуем установить talisman в PATH, чтобы он был доступен для фреймворков хуков git и скриптов. Выберите правильный двоичный файл для вашей системы на нашей странице релизов или запустите наш скрипт установки:```bash bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"

root@kitploit:~
Или установите переменную окружения `INSTALL_LOCATION`, чтобы указать собственное расположение для бинарного файла:```bash
INSTALL_LOCATION=/usr/local/bin bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"

Или установите переменную окружения VERSION на тег релиза, чтобы установить конкретную версию::```bash VERSION=v1.36.0 bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"

root@kitploit:~
Или используя linuxbrew в Linux и homebrew в macOS, выполнив следующую команду в терминале:```bash
brew install talisman

Установка в качестве глобального шаблона хука

Мы предлагаем скрипты, которые установят Talisman в качестве шаблона хука git pre-commit, так как это обеспечит присутствие Talisman не только в ваших существующих git-репозиториях, но и в любом новом репозитории, который вы инициализируете ('init') или клонируете ('clone').

  1. Выполните следующую команду в терминале, чтобы загрузить и установить бинарный файл в $HOME/.talisman/bin

В качестве хука pre-commit: ``` bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/install.bash)"

root@kitploit:~
ИЛИ

  В качестве pre-push hook:  ```
bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/install.bash)" -- pre-push
  1. Если у вас не задана TALISMAN_HOME в вашем $PATH, вас попросят указать подходящее место для её настройки. Выберите номер опции, где вы указываете источник профиля на вашей машине.

Помните, что нужно выполнить source для файла пути или перезапустить терминал. Если вы решите настроить $PATH позже, экспортируйте TALISMAN_HOME=$HOME/.talisman/bin в путь.

  1. Выберите базовую директорию, в которой Talisman будет сканировать все git-репозитории, и установите git-хук (pre-commit или pre-push, как выбрано на шаге 1) в виде симлинка. Этот скрипт не перезапишет существующие хуки. Если у вас есть существующие хуки, вы можете добавить talisman через фреймворк хуков
  • вы можете установить переменную окружения SEARCH_ROOT с путём к базовой директории перед выполнением установки, чтобы не вводить его вручную во время установки

Configuring a project

Using with hook frameworks

Глобальная установка talisman в качестве хука не перезапишет существующие хуки. Если скрипт установки обнаружит существующие хуки, он только сообщит об этом в консоли. Для запуска нескольких хуков мы рекомендуем использовать фреймворк хуков, такой как pre-commit или husky. Эти инструкции предполагают, что исполняемый файл talisman установлен где-то в вашем системном пути.

Pre-commit

Используйте pre-commit для управления существующими хуками вместе с Talisman. Ссылайтесь на наш pre-commit-hooks в вашем .pre-commit-config.yaml:```yaml

  • repo: https://github.com/thoughtworks/talisman rev: 'v1.32.2' # Update me! hooks:

    both pre-commit and pre-push supported

    - id: talisman-push

    • id: talisman-commit
root@kitploit:~
### Husky

[husky](https://typicode.github.io/husky) — это npm-модуль для управления хуками.
Добавьте следующую строку в конфигурацию pre-commit husky в вашем
`package.json`:```
talisman --githook pre-commit

Прямой запуск talisman

После того как исполняемый файл talisman установлен, вы можете настроить автономный pre-commit хук для git-репозитория:```bash cd my-git-project echo "talisman -g pre-commit" >> .git/hooks/pre-commit chmod +x .git/hooks/pre-commit

root@kitploit:~
# Обновление
Начиная с версии v0.4.4, Talisman <b>автоматически обновляет</b> бинарный файл до последнего релиза при вызове хука (на pre-commit/pre-push, в зависимости от настройки). Так что просто расслабьтесь и продолжайте использовать последнюю версию Talisman без лишних усилий.

Можно задать следующие переменные окружения:

1. TALISMAN_SKIP_UPGRADE: Установите значение true, если хотите пропустить автоматическую проверку обновлений. По умолчанию false.
2. TALISMAN_UPGRADE_CONNECT_TIMEOUT: Максимальное время ожидания соединения перед отменой обновления (в секундах). По умолчанию 10 секунд.

Если вам всё же нужно выполнить обновление вручную, вот шаги:
<br>[Рекомендуется] Обновите бинарный файл Talisman и скрипты хуков до последней версии:```bash
curl --silent  https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/update_talisman.bash > /tmp/update_talisman.bash && /bin/bash /tmp/update_talisman.bash

Обновляйте только бинарный файл Talisman, выполняя:```bash curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/update_talisman.bash > /tmp/update_talisman.bash && /bin/bash /tmp/update_talisman.bash talisman-binary

root@kitploit:~
# Talisman в действии

После успешной установки Talisman будет автоматически выполнять проверки на наличие очевидных секретов перед каждым коммитом или отправкой (в зависимости от выбранного варианта при установке). В случае обнаружения уязвимостей безопасности Talisman отобразит подробный отчет об ошибках:```bash
$ git push
Talisman Report:
+-----------------+-------------------------------------------------------------------------------+
|     FILE        |                                    ERRORS                                     |
+-----------------+-------------------------------------------------------------------------------+
| danger.pem      | The file name "danger.pem"                                                    |
|                 | failed checks against the                                                     |
|                 | pattern ^.+\.pem$                                                             |
+-----------------+-------------------------------------------------------------------------------+
| danger.pem      | Expected file to not contain hex encoded texts such as:                       |
|                 | awsSecretKey=c64e8c79aacf5ddb02f1274db2d973f363f4f553ab1692d8d203b4cc09692f79 |
+-----------------+-------------------------------------------------------------------------------+

В приведенном выше примере файл danger.pem был отмечен как нарушение безопасности по следующим причинам:

  • Имя файла соответствует одному из предварительно настроенных шаблонов.
  • Файл содержит awsSecretKey, который сканируется и отмечается Talisman

Если вы установили Talisman как хук pre-commit, он будет сканировать только diff в каждом коммите. Это означает, что он будет сообщать об ошибках только для тех частей файла, которые были изменены.

Если вы установили Talisman как хук pre-push, он будет сканировать весь файл, в котором были внесены изменения. Как упоминалось выше, рекомендуется использовать Talisman как pre-commit hook.

Проверки

Следующие детекторы выполняются для набора изменений с целью обнаружения секретов/конфиденциальной информации:

  • Закодированные значения — сканирует на наличие закодированных секретов в Base64, hex и т.д.
  • Содержимое файла — сканирует на наличие подозрительного содержимого в файле, которое может быть потенциальными секретами или паролями
  • Размер файла — сканирует на наличие больших файлов, которые могут содержать ключи или другие секреты
  • Энтропия — сканирует содержимое с высокой энтропией, которое, вероятно, содержит пароли
  • Номера кредитных карт — сканирует содержимое, которое может быть потенциальными номерами кредитных карт
  • Имена файлов — сканирует имена файлов и расширения, которые могут указывать на то, что они потенциально содержат секреты, такие как ключи, учетные данные и т.д.

Игнорирование файлов

Если вы действительно уверены, что хотите отправить этот файл, вы можете настроить его в файле .talismanrc в корне проекта. Содержимое, необходимое для игнорирования неудачных файлов, будет выведено Talisman на консоль сразу после отчета об ошибке Talisman:```bash If you are absolutely sure that you want to ignore the above files from talisman detectors, consider pasting the following format in .talismanrc file in the project root fileignoreconfig:

  • filename: danger.pem checksum: cf97abd34cebe895417eb4d97fbd7374aa138dcb65b1fe7f6b6cc1238aaf4d48 ignore_detectors: []
root@kitploit:~
Внесение этого в файл `.talismanrc` гарантирует, что Talisman будет игнорировать файл `danger.pem`, пока контрольная сумма совпадает со значением, указанным в поле `checksum`.

### Интерактивный режим

**Доступен только для пользователей не Windows**

Если вам надоело каждый раз копировать содержимое в `.talismanrc` при возникновении ошибки от Talisman, вы можете включить интерактивный режим и позволить Talisman помочь вам с добавлением файлов для игнорирования.
Просто выполните следующие шаги:
1. Откройте ваш профиль bash, где заданы переменные окружения (`.bashrc`, `.bash_profile`, `.profile` или любое другое место)
2. Вы увидите переменную `TALISMAN_INTERACTIVE` под `# >>> talisman >>>`
3. Если она ещё не установлена в true, добавьте `export TALISMAN_INTERACTIVE=true`
4. Не забудьте сохранить и выполнить source для файла

Вот и всё! Каждый раз, когда хук Talisman находит ошибку во время pre-push/pre-commit, просто следуйте инструкциям, которые предлагает Talisman.
Будьте осторожны и не игнорируйте файл, не проверив его содержимое. Вы должны быть уверены, что никакой секрет не утекает.

### Игнорирование конкретных детекторов

Ниже приведено подробное описание различных полей, которые можно настроить в файле `.talismanrc`:

* `filename` : Это поле должно содержать полное имя файла.
* `checksum` : Это поле всегда должно содержать значение, указанное Talisman в сообщении выше. Если в файл вносятся изменения, это приведёт к новой контрольной сумме, и Talisman снова просканирует файл на предмет потенциальных угроз безопасности.
* `ignore_detectors` : Это поле отключает определённые детекторы для конкретного файла.
Например, если ваш файл `init-env.sh` вызывает предупреждение, вы можете отключить только
это предупреждение, оставаясь при этом в курсе других проблем (например, содержимого файла):```yaml
fileignoreconfig:
- filename: init-env.sh
  checksum: cf97abd34cebe895417eb4d97fbd7374aa138dcb65b1fe7f6b6cc1238aaf4d48
  ignore_detectors: [filename, filesize]

Примечание: Здесь детекторы filename и filesize игнорируются для init-env.sh, но детектор filecontent всё равно сработает на init-env.sh

На данный момент можно игнорировать

  • filecontent
  • filename
  • filesize

Игнорирование определённых ключевых слов

Так как некоторые ваши файлы могут содержать ключевые слова, такие как key или pass, которые не обязательно связаны с секретами, возможно, вы захотите игнорировать эти ключевые слова, чтобы уменьшить количество ложных срабатываний. Это можно сделать с помощью поля allowed_patterns на уровне файла и/или на уровне репозитория:```yaml fileignoreconfig:

  • filename: test allowed_patterns: [key] allowed_patterns:
  • keyword
  • pass
root@kitploit:~
В предыдущем примере `key` разрешено в файле `test`, `keyword` и `pass` разрешены на уровне репозитория.

Поле `allowed_patterns` также поддерживает регулярные выражения Golang. Вот простой пример кода, где может быть полезен Golang RegExp:```sh
export AWS_ACCESS_KEY_ID = AKIAIO5FODNN7EXAMPLE
export AWS_ACCESS_KEY_ID=$(vault read -field=value path/to/aws-access-key-id)

По умолчанию Talisman будет предупреждать для обеих строк. Во второй строке мы извлекаем AWS Access Key ID из Hashicorp Vault, который не раскрывает секрет коду. Если такое использование часто встречается в вашем коде, возможно, вы захотите указать Talisman не предупреждать при использовании Vault. Это можно сделать с помощью конфигурации вида:```yaml allowed_patterns:

  • export\ AWS[ \w]KEY[ \w]=.vault\ read.
root@kitploit:~
### Игнорирование нескольких файлов одного типа (с подстановочными знаками)

Вы можете игнорировать все файлы определённого типа, так как знаете, что они всегда безопасны, и не хотите, чтобы Talisman их сканировал.

Шаги:

1. Отформатируйте шаблон с подстановочными знаками для файлов, которые вы хотите игнорировать. Например, `*.lock`
2. Используйте [калькулятор контрольной суммы](#checksum-calculator), чтобы передать шаблон и получить общую контрольную сумму. Например, `talisman --checksum="*.lock"`
3. Скопируйте блок fileconfig, выведенный на консоль, в файл .talismanrc.

Если какие-либо из файлов будут изменены, Talisman снова просканирует их, если вы не пересчитаете новую контрольную сумму и не замените её в файле .talismanrc.

### Игнорирование файлов с указанием области языка

Вы можете игнорировать файлы, указав область языка для вашего проекта в вашем talismanrc.```yaml
scopeconfig:
  - scope: go
  - scope: node
  - scope: images
  - scope: php
  - scope: python

Talisman настроен игнорировать определенные файлы на основе указанной области. Например, упоминание области node в scopeconfig предотвращает сканирование Talisman таких файлов, как yarn.lock или package-lock.json.

Вы можете указать несколько областей.

В настоящее время .talismanrc поддерживает только области для go, node, php и images. Другие области будут добавлены в ближайшее время.

Пользовательские шаблоны поиска

Вы можете указать пользовательские регулярные выражения для поиска в текущем репозитории```yaml custom_patterns:

  • pattern1
  • pattern2
root@kitploit:~
<br/><i>
**Примечание**: Использование .talismanignore устарело. Файл .talismanrc заменяет его по следующим причинам:

* .talismanrc имеет гораздо более читаемый формат YAML
* Он также обеспечивает более безопасные практики: каждое изменение файла с потенциально конфиденциальным значением должно быть проверено
* Новый формат также обеспечивает расширяемость для добавления новых полезных функций. Следите за обновлениями </i>

## Настройка порога серьезности

Каждая проверка имеет уровень серьезности:
1. Низкий
2. Средний
3. Высокий

Вы можете указать порог в вашем .talismanrc:```yaml
threshold: medium

Это сообщит обо всех проблемах со степенью серьезности «Средняя» и выше (Потенциальные риски, которые находятся ниже порога, будут отмечены в предупреждениях)

  1. Список всех рисков с указанием уровня серьезности можно найти в этом файле конфигурации.
  2. По умолчанию порог установлен на низкий.
  3. Любые добавляемые вами пользовательские шаблоны поиска считаются имеющими высокую степень серьезности.

Настройка пользовательских уровней серьезности

Вы можете настроить уровни безопасности детекторов, предоставляемых Talisman, в файле .talismanrc:```yaml custom_severities:

  • detector: Base64Content severity: medium
  • detector: HexContent severity: low
root@kitploit:~
Используя пользовательские уровни серьезности и порог серьезности, Talisman можно настроить так, чтобы он предупреждал только о том, что важно в вашем контексте. Это может быть полезно для уменьшения количества ложных срабатываний.

## Talisman как утилита командной строки

Если вы выполните `talisman` в командной строке, вы сможете просмотреть все доступные параметры.```
  -c, --checksum string          checksum calculator calculates checksum and suggests .talismanrc format
  -d, --debug                    enable debug mode (warning: very verbose)
  -g, --githook string           either pre-push or pre-commit (default "pre-push")
      --ignoreHistory            scanner scans all files on current head, will not scan through git commit history
  -i, --interactive              interactively update talismanrc (only makes sense with -g/--githook)
  -p, --pattern string           pattern (glob-like) of files to scan (ignores githooks)
  -r, --reportdirectory string   directory where the scan reports will be stored
  -s, --scan                     scanner scans the git commit history for potential secrets
  -w, --scanWithHtml             generate html report (**Make sure you have installed talisman_html_report to use this, as mentioned in Readme**)
  -v, --version                  show current version of talisman

Интерактивный режим

Если у вас регулярно возникает ситуация, когда слишком много файлов помечаются хуком talisman, хотя вы знаете, что они безопасны для фиксации, вы можете использовать эту функцию, чтобы talisman упростил процесс. Интерактивный режим позволит Talisman предложить вам напрямую добавить файлы, которые вы хотите игнорировать, в .talismanrc из командной строки. Чтобы включить эту функцию, необходимо установить переменную TALISMAN_INTERACTIVE в true в вашем bash-файле.

Вы можете вызвать talisman в интерактивном режиме одним из двух способов:

  1. Откройте ваш bash-файл и добавьтеexport TALISMAN_INTERACTIVE=true Don't forget to source the bash file for the variable to take effect!

  2. Alternatively, you can also invoke the interactive mode by using the CLI utility (for using pre-commit hook) talisman -i -g pre-commit Примечание: Если вы используете интеграцию системы контроля версий IDE для операций с git, эта функция не будет работать. Вы всё равно можете использовать предложенное имя файла и контрольную сумму, чтобы ввести их в файл .talismanrc вручную.

Сканер истории Git

Теперь вы можете запускать Talisman из командной строки и, возможно, добавить его в свои конвейеры CI/CD для сканирования истории git вашего репозитория на наличие конфиденциального содержимого. Это также включает сканирование файлов, перечисленных в файле .talismanrc.

Шаги:

  1. Перейдите в каталог git, который нужно просканировать: cd <каталог для сканирования>
  2. Запустите команду сканирования: talisman --scan
    • Выполнение этой команды создаст папку с именем talisman_reports в корне текущего каталога и сохранит там файлы отчёта.
    • Вы также можете указать расположение отчётов, добавив параметр --reportdirectory или --rd
      Например, talisman --scan --reportdirectory=/Users/username/Desktop

Вы также можете использовать другие параметры сканирования, как указано выше.

В настоящее время Talisman не поддерживает игнорирование файлов для сканирования.

Калькулятор контрольных сумм

Калькулятор контрольных сумм Talisman выводит формат yaml, который вы можете напрямую скопировать и вставить в файл .talismanrc, чтобы игнорировать определённые форматы файлов от детекторов Talisman.

Чтобы запустить вычисление контрольной суммы, выполните "cd" в корень вашего репозитория и выполните следующую команду:

Например: talisman --checksum="*.pem *.txt"

  1. Эта команда находит все файлы .pem в репозитории, вычисляет общую контрольную сумму всех этих файлов и выводит формат yaml для .talismanrc. Аналогично она обрабатывает файлы .txt.
  2. Можно указать несколько имён файлов/шаблонов, разделённых пробелами.

Пример вывода:

root@kitploit:~
.talismanrc format for given file names / patterns
fileignoreconfig:
- filename: '*.pem'
  checksum: f731b26be086fd2647c40801630e2219ef207cb1aacc02f9bf0559a75c0855a4
  ignore_detectors: []
- filename: '*.txt'
  checksum: d9e9e94868d7de5b2a0706b8d38d0f79730839e0eb4de4e9a2a5a014c7c43f35
  ignore_detectors: []

Примечание: Калькулятор контрольных сумм учитывает проиндексированные (staged) файлы при вычислении общей контрольной суммы файлов.

Создание HTML-отчётов в Talisman

Работает на

Инструмент командной строки Talisman talisman также имеет возможность создавать подробный HTML-отчёт, которым можно делиться. После установки Talisman следуйте шагам, описанным в talisman-html-report, чтобы установить пакет для создания отчётов в папку .talisman. Для создания HTML-отчёта выполните:

  • talisman --scanWithHtml

Это запустит сканирование репозитория и создаст папку talisman_html_report в сканированном репозитории. Чтобы получить доступ к отчёту, необходимо запустить HTTP-сервер внутри этого репозитория. Ниже приведён рекомендуемый способ запуска HTTP-сервера:

  • python -m SimpleHTTPServer <порт> (например, 8000)

Теперь вы можете получить доступ к отчёту, перейдя по адресу:

http://localhost:8000

Примеры скриншотов

  • Приветствие
  • Сводка
  • Детальный отчёт
  • Отчёт об ошибках

Примечание: Вам не нужно запускать сервер, если вы запускаете Talisman в CI или любой другой хостинговой среде.

Удаление

Процесс удаления зависит от того, как вы установили Talisman. Вы могли выбрать установку в качестве глобального шаблона хука или в отдельный репозиторий.

Пожалуйста, следуйте шагам ниже в зависимости от того, какой вариант вы выбрали при установке.

Удаление из глобального шаблона хука

Выполните следующую команду в терминале, чтобы удалить Talisman глобально с вашего компьютера.

Для предварительного хука (pre-commit):``` bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/uninstall.bash)"

root@kitploit:~
Для хука pre-push:```
bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/uninstall.bash)" -- pre-push

Это

  1. попросит вас указать базовую директорию всех ваших репозиториев, найдёт все git-репозитории внутри неё и удалит хуки talisman
  2. удалит хук talisman из .git-template
  3. удалит talisman из центрального места установки ($HOME/.talisman/bin).

Вам придётся вручную удалить TALISMAN_HOME из переменных окружения

Удаление из одного репозитория

При установке Talisman в вашем репозитории был создан хук pre-commit или pre-push (в зависимости от выбора).

Вы можете удалить хук вручную, удалив хук Talisman pre-commit или pre-push из папки .git/hooks вашего репозитория.

Вклад в Talisman

Чтобы внести вклад в Talisman, ознакомьтесь с нашим руководством по участию.

Скачать инструмент