Участие в Разработке HistorySync¶
Спасибо за интерес к участию! Исправления ошибок, новые экстракторы браузеров, улучшения документации, переводы и покрытие тестами особенно приветствуются.
С Чего Начать¶
- Просмотрите открытые Issues — ищите метки
good first issueилиhelp wanted. - Прокомментируйте issue перед началом значительной работы, чтобы избежать дублирования усилий.
- Для небольших исправлений (опечатки, однострочные ошибки) открывайте PR напрямую без предварительного issue.
Настройка Окружения Разработки¶
Требования¶
| Инструмент | Требуемая версия |
|---|---|
| Python | 3.12 рекомендуется (соответствует CI-среде) |
| Git | Любая актуальная версия |
HistorySync поддерживает Python 3.10+, но используйте 3.12 при участии в разработке, чтобы ваша среда соответствовала линтингу, тестам и заблокированным зависимостям.
Шаги¶
# 1. Форкните репозиторий на GitHub, затем клонируйте ваш форк
git clone https://github.com/YOUR_USERNAME/HistorySync.git
cd HistorySync
# 2. Создать и активировать виртуальное окружение
python -m venv venv
source venv/bin/activate # macOS / Linux
.\venv\Scripts\activate # Windows
# 3. Установить зависимости времени выполнения
pip install -r requirements.txt
# 4. Установить зависимости разработки и тестирования
pip install -r requirements-dev.txt
pip install -r requirements-test.txt
# 5. (Рекомендуется) Установить хуки pre-commit
pre-commit install
# 6. Проверить настройку
python -m src.main --fresh
Стиль Кода¶
Этот проект использует Ruff для линтинга и форматирования. Конфигурация находится в ruff.toml.
# Проверить на проблемы
ruff check .
# Автоматически исправить там, где возможно
ruff check . --fix
# Форматировать код
ruff format .
# Запустить все хуки pre-commit вручную
pre-commit run --all-files
Общие заметки по стилю:
- Следуйте существующим паттернам в редактируемом файле.
- Держите код GUI (PySide6) и бизнес-логику строго разделёнными — сервисы не должны импортировать Qt.
- Предпочитайте ясность над хитроумностью.
- Добавляйте или обновляйте докстринги при изменении публичных API.
Запуск Тестов¶
# Запустить полный набор тестов
pytest
# Запустить конкретный файл тестов
pytest tests/test_chromium_extractor.py
# Подробный вывод
pytest -v
# С покрытием (требует pytest-cov, включён в requirements-test.txt)
pytest --cov=src --cov-report=term-missing
# Те же проверки линтера, что и в CI
ruff check src/ tests/
ruff format --check src/ tests/
Все тесты должны проходить перед слиянием PR. При добавлении новой функциональности включайте соответствующие тесты.
Руководство по Коммитам¶
Используйте чёткие, повелительные сообщения коммитов:
Примеры:
fix(extractor): handle missing WAL file during Chromium extraction
feat(browser): add Arc browser support on macOS
docs(webdav): document merge behaviour
test(search): add unit tests for query DSL parser
chore(dev): update Ruff to 0.15
Типы: fix, feat, refactor, docs, test, chore, perf, style, ci, build
Правила:
- Строка темы ≤ 72 символа.
- Используйте повелительный глагол в нижнем регистре (add, fix, remove — не added, fixes).
- Добавляйте тело для объяснения почему для неочевидных изменений.
Сертификат Происхождения Разработчика (DCO)¶
Каждый коммит должен быть подписан. PR с неподписанными коммитами не будут слиты.
git commit -s -m "fix: handle missing WAL file"
# Добавляет: Signed-off-by: Ваше Имя <ваш@email.com>
Убедитесь, что ваша идентификация Git настроена:
Забыли подписать?¶
# Только последний коммит
git commit --amend --no-edit --signoff
git push --force-with-lease
# Несколько коммитов (последние N)
git rebase --signoff HEAD~N
git push --force-with-lease
Рабочий Процесс Pull Request¶
-
Создайте ветку от
main: -
Внесите изменения — делайте коммиты сфокусированными и атомарными.
-
Запустите тесты и линтер локально.
-
Отправьте ветку и откройте PR против
main: -
Следуйте правилам PR:
- Одно изменение или один связанный набор изменений на PR.
- Чёткое описание что изменилось и почему.
- Свяжите соответствующий issue с
Closes #123. - Добавьте скриншоты / записи для UI-изменений.
-
Каждый коммит должен быть подписан.
-
Оперативно отвечайте на отзывы по проверке.
Что Мы Ищем¶
Особенно приветствуется:
- Новые экстракторы браузеров — поддержка дополнительных форков Chromium/Firefox.
- Исправления ошибок — особенно платформенно-специфичные проблемы (пути macOS, разрешения Linux, Windows UAC).
- Улучшения производительности — оптимизация запросов, скорость извлечения, использование памяти.
- Улучшения UI/UX — доступность, навигация с клавиатуры, согласованность тем.
- Покрытие тестами — новые тесты для непроверенных путей кода.
- Документация — улучшение этого сайта, добавление встроенных докстрингов, исправление опечаток.
- Переводы — обновления файлов
.poвsrc/resources/locales/.
Сначала обсудите (откройте issue перед написанием кода):
- Крупные архитектурные изменения.
- Новые сторонние зависимости.
- Изменения в протоколе синхронизации WebDAV или схеме базы данных.
Уязвимости Безопасности¶
Не открывайте публичный GitHub issue для уязвимостей безопасности.
Сообщайте в частном порядке по электронной почте 0x4fe6@gmail.com. Включите описание, шаги воспроизведения и возможное воздействие. Вы получите ответ в течение 72 часов.
Лицензия¶
Отправляя pull request, вы соглашаетесь, что ваш вклад будет лицензирован под Apache 2.0, и подтверждаете DCO для каждого коммита.