🐴 Pony Git Manager (pony-git)
CLI-обёртка над Git, которая упрощает и автоматизирует типичные рабочие процессы. Это не замена Git, а набор высокоуровневых команд, которые объединяют несколько операций в одну и добавляют проверки безопасности.
📋 Содержание
- Что это?
- Зачем?
- Установка
- Быстрый старт
- Доступные команды
- Примеры использования
- Чем НЕ является
- Требования
- Разработка
- Лицензия
🎯 Что это?
pony-git — умный помощник для повседневной работы с Git, который:
- ✅ Объединяет
git add .+git commitв одну команду - ✅ Проверяет наличие
.gitignoreперед коммитом - ✅ Предоставляет встроенные подсказки workflow'ов
- ✅ Упрощает работу с remote, tags и branches
- ✅ Добавляет защиту от типичных ошибок
💡 Зачем?
Проблемы, которые решает pony-git:
| Проблема | Решение pony-git |
|---|---|
| Множество команд для простых операций | Одна команда вместо 3-5 |
Случайные коммиты без .gitignore |
Автоматическая проверка + --force опция |
| Забывание best practices | Встроенные подсказки (pony-git info) |
| Разные подходы в команде | Стандартизированный workflow |
| Ошибки из-за невнимательности | Валидация перед выполнением |
Целевая аудитория:
- 🎓 Начинающие разработчики — упрощение изучения Git
- 🚀 Опытные разработчики — автоматизация рутинных операций
- 👥 Команды — единый процесс работы с репозиторием
📦 Установка
Доступно после публикации первого релиза.
Из PyPI
pip install pony-git
Проверка Установки
pony-git version
🚀 Быстрый старт
Первый push в новый репозиторий
# Подсказка по workflow
pony-git info
# Выполнение команд
pony-git init
pony-git add -m "Initial commit"
pony-git branch -M <branch_name>
pony-git remote add origin https://github.com/username/repo.git
pony-git push -M
Обновление существующего проекта
# Подсказка по обновлению
pony-git info --update
# Выполнение
pony-git status
pony-git add -m "Добавлена новая функция"
pony-git tag -a v1.0.1 -m "Патч релиз" # опционально
pony-git push
pony-git push --tags # если создавали тег
📚 Доступные команды
Основные операции
| Команда | Описание | Пример |
|---|---|---|
init |
Инициализация Git-репозитория | pony-git init |
add |
Добавление файлов + коммит | pony-git add -m "Fix bug" |
push |
Отправка изменений | pony-git push |
status |
Статус репозитория | pony-git status |
version |
Версия Git | pony-git version |
Управление ветками и тегами
| Команда | Описание | Пример |
|---|---|---|
branch |
Создание ветки | pony-git branch -M main |
tag |
Создание аннотированного тега | pony-git tag -a v1.0.0 -m "Release" |
Управление remote
| Команда | Описание | Пример |
|---|---|---|
remote list |
Список удалённых репозиториев | pony-git remote list -v |
remote add |
Добавление remote | pony-git remote add origin <URL> |
remote remove |
Удаление remote | pony-git remote remove origin |
Утилиты
| Команда | Описание | Пример |
|---|---|---|
info |
Подсказки по workflow | pony-git info / pony-git info --update |
remove |
Удаление файлов из Git | pony-git remove file.txt |
💻 Примеры использования
1. Работа с .gitignore
# ❌ Ошибка: нет .gitignore
pony-git add -m "Test"
# Error: .gitignore not found. Use --force to proceed.
# ✅ Принудительный коммит (с предупреждением)
pony-git add -m "Test" --force
# Warning: .gitignore not found
# ✅ Создайте .gitignore и всё будет работать
echo "*.pyc" > .gitignore
pony-git add -m "Test"
2. Статус репозитория
# Короткий формат (по умолчанию)
pony-git status
# Машиночитаемый формат
pony-git status --porcelain
3. Push с тегами
# Обычный push
pony-git push
# Push с тегами (одна команда)
pony-git push --tags
4. Удаление файлов
# Удалить из индекса, но оставить в файловой системе
pony-git remove secrets.txt
# Удалить полностью
pony-git remove secrets.txt --force
5. Работа вне Git-репозитория
cd /tmp/not-a-repo
pony-git status
# Error: Git repository not found
⚠️ Чем НЕ является
❌ Это НЕ замена Git
- Требует установленный Git в системе
- Выполняет Git-команды через
subprocess - Не переопределяет Git-функционал
❌ Это НЕ полноценный Git-клиент
- Ограниченный набор команд: только частые операции
- Нет сложных сценариев:
rebase,cherry-pick,bisect,stash,merge - Для продвинутых задач: используйте оригинальный Git
❌ Это НЕ GUI-приложение
- Только CLI (командная строка)
- Нет визуализации истории
- Нет графического интерфейса
❌ Это НЕ полная автоматизация
- Не разрешает конфликты автоматически
- Не заменяет понимание основ Git
- Не управляет pull-requests, issues, CI/CD
⚠️ Это НЕ production-ready (пока)
- Версия: 0.1.0 (Alpha)
- Ограниченная обработка edge cases
- Нужно больше тестирования в продакшене
🔧 Требования
- Python: >= 3.11
- Git: любая современная версия
- OS: Windows, Linux, macOS (кроссплатформенный)
🛠️ Разработка
Установка для разработки
# Клонирование
git clone https://github.com/PonyPaPony/PonyGM.git
cd PonyGM
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# Установка зависимостей
pip install -e .
pip install -r requirements.txt
Запуск тестов
# Все тесты
pytest
# С покрытием
pytest --cov=pony_git
# Конкретный модуль
pytest pony_git/tests/test_handlers_add.py
Структура проекта
pony_git/
├── parsers/ # Парсинг CLI-аргументов
│ ├── arguments.py # Определения аргументов
│ ├── builder.py # Построение главного парсера
│ └── register.py # Регистрация подкоманд
├── tests/ # Unit и integration тесты
├── config.py # Конфигурация команд
├── exceptions.py # Кастомные исключения
├── handlers.py # Логика обработки команд
├── main.py # Точка входа
├── runner.py # Выполнение Git-команд
└── validators.py # Валидация окружения
📝 Лицензия
Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.
MIT License
Copyright (c) 2026 PonyPaPony (Denis)
🔗 Ссылки
- GitHub: PonyPaPony/PonyGM
- Issues: Сообщить о проблеме
- Автор: PonyPaPony
🎉 Благодарности
Спасибо всем, кто тестирует и улучшает этот проект!
Разработано с 🐴 от PonyPaPony
Release files for pony-git 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pony_git-0.1.0.tar.gz | 17.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pony_git-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.5 kB
Release files / pony_git-0.1.0.tar.gz
| Download URL | pony_git-0.1.0.tar.gz |
|---|---|
| Size | 17.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
075d62bde05eb8fc0079c2ca08534d62ca4b1be0a9fb7d2b7fb4257d05ccaa1a
|
|
BLAKE2b-256 checksum How to use checksums |
9c6528f454241b45da07e598a137b92160e7b7cceae4b1a8860cc1331ce0eb05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / pony_git-0.1.0-py3-none-any.whl
| Download URL | pony_git-0.1.0-py3-none-any.whl |
|---|---|
| Size | 20.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d47c0f93f173a1f9fea27f4c50564289873f1381abdf038866670f95b2425a2
|
|
BLAKE2b-256 checksum How to use checksums |
5beaa5817e4e7976da526b599f9fa4409ddc82b2703e16625087569662453c95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|