Thank you for your interest in contributing to AIXCL! This document outlines the workflow for external contributors.
- Visit https://github.com/xencon/aixcl
- Click the "Fork" button in the top right
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/aixcl.git cd aixcl
Before creating any branch, ensure your fork is synchronized with the upstream repository. This prevents merge conflicts and ensures you are building on the latest code.
# Add upstream remote (one-time)
git remote add upstream https://github.com/xencon/aixcl.git
# Fetch upstream state
git fetch upstream
# Sync main
git checkout main
git reset --hard upstream/main
git push origin main --force-with-lease
# Sync dev
git checkout -B dev upstream/dev
git push -u origin devImportant: Never commit directly to main or dev on your fork. Always create feature branches from dev.
# Ensure you're on the latest dev
git checkout dev
git pull upstream dev
# Create feature branch from upstream dev
git checkout -b issue-XXX/short-description- Follow existing code style
- Update documentation if needed
- Test your changes locally
# Standard commit (no GPG required for forks)
git add .
git commit -m "type: description
- Change details
Fixes #XXX"
# Push to your fork
git push -u origin issue-XXX/short-descriptionIf upstream dev moves while your PR is open, rebase your branch to keep it conflict-free:
# Fetch latest upstream dev
git fetch upstream
# Rebase your feature branch
git checkout issue-XXX/short-description
git rebase upstream/dev
# Force-push to update PR (safe on feature branches)
git push origin issue-XXX/short-description --force-with-lease# Create PR targeting upstream dev branch
gh pr create --repo xencon/aixcl \
--base dev \
--head YOUR-USERNAME:issue-XXX/short-description \
--title "description (#XXX)" \
--body "Fixes #XXX"Required: All PRs must target xencon/aixcl:dev. Never open a feature PR directly to main.
If you are a CODEOWNER ():
After a PR is merged to xencon/dev, pull those changes back into your fork:
# Fetch and merge upstream dev
git fetch upstream
git checkout dev
git merge upstream/dev
git push origin dev
# Update main when upstream main advances
git checkout main
git reset --hard upstream/main
git push origin main --force-with-leaseAll commits to main and dev must be GPG-signed:
# Configure Git (one-time)
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_KEY_ID
# All commits automatically signed
git commit -m "feat: add new feature"
# Verify signature
git log --show-signature -1- All PRs must be reviewed by CODEOWNER
- CI checks must pass
- Merge with GPG-signed merge commit
Always create an issue before starting work:
- Check existing issues: https://github.com/xencon/aixcl/issues
- Create new issue with appropriate template
- Wait for assignment/approval
- Create branch referencing issue number
- Shell scripts: POSIX-compliant where possible
- Documentation: Clear, concise, accurate
- Commits: Conventional commit format (
type: description)
- Never commit secrets or credentials
- Use Vault for sensitive data
- Follow security guidelines in SECURITY.md
- Open an issue: https://github.com/xencon/aixcl/issues
- Check docs/ for detailed guides
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.