Робочий процес внеску
Цей посібник проведе вас через повний процес внеску в XOOPS, від початкового налаштування до об’єднаного запиту на отримання.
Передумови
Section titled “Передумови”Перш ніж почати робити внески, переконайтеся, що у вас є:
- Git встановлено та налаштовано
- GitHub акаунт (безкоштовно)
- PHP 7.4+ для розробки XOOPS
- Composer для керування залежностями
- Базові знання робочих процесів Git
- Знайомство з Кодексом поведінки
Крок 1: форк репозиторію
Section titled “Крок 1: форк репозиторію”У веб-інтерфейсі GitHub
Section titled “У веб-інтерфейсі GitHub”- Перейдіть до репозиторію (наприклад,
XOOPS/XoopsCore27) - Натисніть кнопку Fork у верхньому правому куті
- Виберіть місце форку (ваш особистий рахунок)
- Зачекайте, поки розгалуження завершиться
Чому Fork?
Section titled “Чому Fork?”- Ви отримуєте власну копію для роботи
- Обслуговувачам не потрібно керувати багатьма філіями
- Ви маєте повний контроль над своєю виделкою
- Pull Requests посилаються на ваш форк і вищестояще репо
Крок 2: клонуйте свій форк локально
Section titled “Крок 2: клонуйте свій форк локально”# Clone your fork (replace YOUR_USERNAME)git clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# Add upstream remote to track original repositorygit remote add upstream https://github.com/XOOPS/XoopsCore27.git
# Verify remotes are set correctlygit remote -v# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (fetch)# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (push)# upstream https://github.com/XOOPS/XoopsCore27.git (fetch)# upstream https://github.com/XOOPS/XoopsCore27.git (nofetch)Крок 3: Налаштуйте середовище розробки
Section titled “Крок 3: Налаштуйте середовище розробки”Встановити залежності
Section titled “Встановити залежності”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installНалаштувати Git
Section titled “Налаштувати Git”# Set your Git identitygit config user.name "Your Name"git config user.email "your.email@example.com"
# Optional: Set global Git configgit config --global user.name "Your Name"git config --global user.email "your.email@example.com"Виконайте тести
Section titled “Виконайте тести”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitКрок 4: Створіть гілку функції
Section titled “Крок 4: Створіть гілку функції”Угода про іменування гілок
Section titled “Угода про іменування гілок”Дотримуйтеся цього шаблону: <type>/<description>
Типи:
feature/- Нова функціяfix/- Виправлено помилкуdocs/- Лише документаціяrefactor/- Рефакторинг кодуtest/- Тестові доповненняchore/- Технічне обслуговування, інструменти
Приклади:
# Feature branchgit checkout -b feature/add-two-factor-auth
# Bug fix branchgit checkout -b fix/prevent-xss-in-forms
# Documentation branchgit checkout -b docs/update-api-guide
# Always branch from upstream/main (or develop)git checkout -b feature/my-feature upstream/mainПідтримуйте філію в актуальному стані
Section titled “Підтримуйте філію в актуальному стані”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainКрок 5: Внесіть зміни
Section titled “Крок 5: Внесіть зміни”Практики розробки
Section titled “Практики розробки”- Напишіть код відповідно до стандартів PHP
- Напишіть тести для нових функцій
- Оновіть документацію, якщо потрібно
- Запустіть лінтери та засоби форматування коду
Перевірка якості коду
Section titled “Перевірка якості коду”# Run all tests./vendor/bin/phpunit
# Run with coverage./vendor/bin/phpunit --coverage-html coverage/
# Run PHP CS Fixer./vendor/bin/php-cs-fixer fix --dry-run
# Run PHPStan static analysis./vendor/bin/phpstan analyse class/ src/Внесіть хороші зміни
Section titled “Внесіть хороші зміни”# Check what you changedgit statusgit diff
# Stage specific filesgit add class/MyClass.phpgit add tests/MyClassTest.php
# Or stage all changesgit add .
# Commit with descriptive messagegit commit -m "feat(auth): add two-factor authentication support"Крок 6: синхронізуйте гілку
Section titled “Крок 6: синхронізуйте гілку”Під час роботи над вашою функцією основна гілка може просуватися:
# Fetch latest changes from upstreamgit fetch upstream
# Option A: Rebase (preferred for clean history)git rebase upstream/main
# Option B: Merge (simpler but adds merge commits)git merge upstream/main
# If conflicts occur, resolve them then:git add .git rebase --continue # or git merge --continueКрок 7: натисніть на вилку
Section titled “Крок 7: натисніть на вилку”# Push your branch to your forkgit push origin feature/my-feature
# On subsequent pushesgit push
# If you rebased, you might need force push (use carefully!)git push --force-with-lease origin feature/my-featureКрок 8: Створіть запит на отримання
Section titled “Крок 8: Створіть запит на отримання”У веб-інтерфейсі GitHub
Section titled “У веб-інтерфейсі GitHub”- Перейдіть до розгалуження на GitHub
- Ви побачите сповіщення про створення PR з вашої філії
- Натисніть “Порівняти та отримати запит”
- Або вручну натисніть “Новий запит на отримання” та виберіть свою гілку
PR Назва та опис
Section titled “PR Назва та опис”Формат назви:
<type>(<scope>): <subject>приклади:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceШаблон опису:
## DescriptionBrief explanation of what this PR does.
## Changes- Changed X from A to B- Added feature Y- Fixed bug Z
## Type of Change- [ ] New feature (adds new functionality)- [ ] Bug fix (fixes an issue)- [ ] Breaking change (API/behavior change)- [ ] Documentation update
## Testing- [ ] Added tests for new functionality- [ ] All existing tests pass- [ ] Manual testing performed
## Screenshots (if applicable)Include before/after screenshots for UI changes.
## Related IssuesCloses #123Related to #456
## Checklist- [ ] Code follows style guidelines- [ ] Self-reviewed own code- [ ] Commented complex code- [ ] Updated documentation- [ ] No new warnings generated- [ ] Tests pass locallyКонтрольний список PR огляду
Section titled “Контрольний список PR огляду”Перед подачею переконайтеся, що:
- Код відповідає стандартам PHP
- Тести включені та успішні
- Оновлення документації (за потреби)
- Немає конфліктів злиття
- Повідомлення про фіксацію зрозумілі
- Посилання на пов’язані питання
- Детальний опис PR
- Немає коду налагодження або журналів консолі
Крок 9: Відповідь на відгук
Section titled “Крок 9: Відповідь на відгук”Під час перевірки коду
Section titled “Під час перевірки коду”- Уважно читайте коментарі - Розумійте відгуки
- Ставте запитання - якщо незрозуміло, попросіть роз’яснення
- Обговоріть альтернативи - Шанобливо обговоріть підходи
- Внесіть потрібні зміни - Оновіть свою гілку
- Примусове надсилання оновлених комітів - якщо переписується історія
# Make changesgit add .git commit --amend # Modify last commitgit push --force-with-lease origin feature/my-feature
# Or add new commitsgit commit -m "Address feedback on PR review"git push origin feature/my-featureОчікуйте ітерацію
Section titled “Очікуйте ітерацію”- Більшість PR вимагають кількох раундів перевірки
- Будьте терплячі та конструктивні
- Розглядайте відгук як можливість навчання
- Супроводжувачі можуть запропонувати рефактори
Крок 10: Об’єднання та очищення
Section titled “Крок 10: Об’єднання та очищення”Після затвердження
Section titled “Після затвердження”Після того, як супроводжувачі затвердять і об’єднають:
- GitHub автоматично зливає або супроводжуючий натискає об’єднання
- Ваша гілка видалена (зазвичай автоматично)
- Зміни вгорі
Локальна очистка
Section titled “Локальна очистка”# Switch to main branchgit checkout main
# Update main with merged changesgit fetch upstreamgit merge upstream/main
# Delete local feature branchgit branch -d feature/my-feature
# Delete from your fork (if not auto-deleted)git push origin --delete feature/my-featureСхема робочого процесу
Section titled “Схема робочого процесу”graph LR A[Fork Repository] --> B[Clone Fork] B --> C[Create Branch] C --> D[Make Changes] D --> E[Commit & Push] E --> F[Create PR] F --> G{Review} G -->|Approved| H[Merge] G -->|Changes Needed| I[Update PR] I --> G H --> J[Cleanup] J --> K[Done]Поширені сценарії
Section titled “Поширені сценарії”Синхронізація перед початком
Section titled “Синхронізація перед початком”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainДодавання додаткових комітів
Section titled “Додавання додаткових комітів”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingВиправлення помилок
Section titled “Виправлення помилок”# Last commit has wrong messagegit commit --amend -m "Correct message"git push --force-with-lease
# Revert to previous state (careful!)git reset --soft HEAD~1 # Keep changesgit reset --hard HEAD~1 # Discard changesОбробка конфліктів злиття
Section titled “Обробка конфліктів злиття”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseНайкращі практики
Section titled “Найкращі практики”- Тримайте філії зосередженими на окремих питаннях
- Робіть невеликі логічні зобов’язання
- Напишіть описові повідомлення комітів
- Часто оновлюйте свою гілку
- Перевірте перед натисканням
- Зміни в документі
- Будьте чуйними до відгуків
Не треба
Section titled “Не треба”- Працюйте безпосередньо на гілці main/master
- Змішайте непов’язані зміни в одному PR
- Зафіксуйте згенеровані файли або node_modules
- Примусовий push після того, як PR стане публічним (використовуйте —force-with-lease)
- Ігноруйте відгуки про перевірку коду
- Створіть величезні PR (розбийте на більш дрібні)
- Передача конфіденційних даних (ключі API, паролі)
Поради для успіху
Section titled “Поради для успіху”Спілкуйся
Section titled “Спілкуйся”- Ставте запитання у випусках перед початком роботи
- Попросіть вказівок щодо складних змін
- Обговоріть підхід в описі PR
- Швидко реагуйте на відгуки
Дотримуйтеся стандартів
Section titled “Дотримуйтеся стандартів”- Перегляньте стандарти PHP
- Перевірте вказівки щодо звітування про проблеми
- Прочитайте огляд вкладу
- Дотримуйтеся вказівок щодо запитів на вилучення
Вивчіть кодову базу
Section titled “Вивчіть кодову базу”- Читайте існуючі шаблони коду
- Вивчіть подібні реалізації
- Розуміти архітектуру
- Перевірте основні поняття
Пов’язана документація
Section titled “Пов’язана документація”- Кодекс поведінки
- Інструкції щодо запиту на отримання
- Звіт про проблему
- Стандарти кодування PHP
- Огляд внеску
#xoops #git #github #contributing #workflow #pull-request