Автоматизация документирования проектов: Git-скрипт для анализа структуры
Веб-мастера и разработчики часто сталкиваются с необходимостью быстро задокументировать структуру проекта. Сегодня я хочу поделиться мощным, но простым инструментом - bash-скриптом, который автоматически анализирует git-репозиторий и создает подробную текстовую документацию.
Для чего нужен этот скрипт?
Скрипт git_project_tree.sh решает несколько важных задач:
- Быстрый обзор структуры проекта - визуализация каталогов и файлов
- Документирование кода - создание "карты" проекта для новых разработчиков
- Передача информации - компактное представление проекта для коллег
- Анализ зависимостей - просмотр ключевых конфигурационных файлов
Особенность скрипта - он учитывает только файлы, находящиеся под контролем версий (git), что гарантирует актуальность информации и исключает временные/служебные файлы.
Как использовать скрипт?
1. Установка
Создайте файл git_project_tree.sh в корне вашего проекта:
#!/bin/bash
OUTPUT_FILE="git_project_structure.txt"
# Проверка git
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "Ошибка: это не git-репозиторий!" >&2
exit 1
fi
# Очистка файла
> "$OUTPUT_FILE"
# Заголовок
{
echo "Структура git-проекта (сгенерировано $(date))"
echo "=========================================="
echo ""
echo "Ветка: $(git branch --show-current)"
echo "Последний коммит: $(git log -1 --pretty=format:'%h - %s (%ad)' --date=short)"
echo ""
} >> "$OUTPUT_FILE"
# Дерево файлов
echo "Дерево файлов:" >> "$OUTPUT_FILE"
echo "-------------" >> "$OUTPUT_FILE"
git ls-files | sed -e 's|[^/]*/| |g' >> "$OUTPUT_FILE"
# Содержимое файлов
echo "" >> "$OUTPUT_FILE"
echo "Содержимое ключевых файлов:" >> "$OUTPUT_FILE"
echo "--------------------------" >> "$OUTPUT_FILE"
# Получаем все отслеживаемые файлы
git ls-files | while read -r file; do
# Проверяем расширение файла
case "$file" in
*.py|*.sh|Dockerfile|docker-compose.yml|*.html|*.yml|*.yaml|requirements.txt)
# Пропускаем бинарные файлы
if file "$file" | grep -q "text"; then
echo "" >> "$OUTPUT_FILE"
echo "=== Файл: $file ===" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
head -n 200 "$file" | sed 's/^/ /' >> "$OUTPUT_FILE"
[ $(wc -l < "$file") -gt 200 ] && echo " ... (файл сокращен)" >> "$OUTPUT_FILE"
fi
;;
esac
done
echo "" >> "$OUTPUT_FILE"
echo "Готово! Размер файла: $(du -h $OUTPUT_FILE | cut -f1)" >> "$OUTPUT_FILE"
echo "Структура сохранена в $OUTPUT_FILE"
2. Запуск
Дайте права на выполнение и запустите скрипт:
chmod +x git_project_tree.sh
./git_project_tree.sh
3. Результат
Скрипт создаст файл git_project_structure.txt с:
- Информацией о ветке и последнем коммите
- Древовидной структурой файлов
- Содержимым ключевых файлов (первые 200 строк)
Особенности и настройка
Кроссплатформенность
Скрипт работает как на Linux, так и на MacOS. Для Windows рекомендуется использовать WSL или Git Bash.
Фильтрация файлов
По умолчанию скрипт обрабатывает:
*.py|*.sh|Dockerfile|docker-compose.yml|*.html|*.yml|*.yaml|requirements.txt
Чтобы добавить свои расширения, измените case-блок в скрипте.
Важно: Скрипт автоматически пропускает бинарные и слишком большие файлы, чтобы избежать проблем с производительностью.
Пример использования
Представьте, что вам нужно:
- Передать проект новому разработчику
- Сохранить снимок состояния кода
- Проанализировать структуру legacy-проекта
Вместо ручного документирования просто запустите скрипт и отправьте полученный текстовый файл!
Заключение
Этот простой, но мощный инструмент значительно экономит время при работе с проектами. Он особенно полезен для:
- Веб-мастеров, работающих с множеством проектов
- Команд разработчиков
- Фрилансеров, передающих проекты заказчикам
Попробуйте скрипт в своем проекте и адаптируйте под свои нужды!
