Contribuindo para omegaUp
Obrigado pelo seu interesse em contribuir com o omegaUp! Este guia orientará você no processo de envio de sua primeira contribuição.
Visão geral do processo de desenvolvimento
A ramificação main em seu fork deve sempre ser mantida atualizada com a ramificação main do repositório omegaUp. Nunca se comprometa diretamente com main. Em vez disso, crie um branch separado para cada alteração que você planeja enviar por meio de uma solicitação pull.
Pré-requisitos
Antes de começar:
- ✅ Configure seu ambiente de desenvolvimento
- ✅ Leia as Diretrizes de codificação
- ✅ Entenda como obter ajuda se tiver dúvidas
Requisito de atribuição de problemas
Obrigatório antes de abrir PR
Cada solicitação pull deve estar vinculada a um problema existente do GitHub que é atribuído a você.
Etapas para atribuir o problema
- Encontre ou crie um problema:
- Procure problemas existentes
-
Ou crie um novo problema descrevendo sua correção de bug ou recurso
-
Expressar interesse:
- Comente o assunto manifestando seu interesse em trabalhar nele
-
Espere que um mantenedor o atribua a você
-
Comece a trabalhar:
- Uma vez atribuído, você pode criar sua filial e começar a codificar
- Faça referência ao problema na descrição do seu PR usando:
Fixes #1234ouCloses #1234
PR falhará sem atribuição de problemas
Se o seu PR não estiver vinculado a um problema atribuído, as verificações automatizadas falharão e o seu PR não poderá ser mesclado.
Configurando seu fork e controles remotos
Você só precisa fazer isso uma vez:
1. Bifurque o repositório
Visite github.com/omegaup/omegaup e clique no botão "Fork".
2. Clone seu garfo
git clone https://github.com/YOURUSERNAME/omegaup.git
cd omegaup
3. Configurar controles remotos
Verifique seus controles remotos atuais:
git remote -v
origin https://github.com/YOURUSERNAME/omegaup.git (fetch)
origin https://github.com/YOURUSERNAME/omegaup.git (push)
origin:
git remote add origin https://github.com/omegaup/omegaup.git
upstream:
git remote add upstream https://github.com/YOURUSERNAME/omegaup.git
origin https://github.com/omegaup/omegaup.git (fetch)
origin https://github.com/omegaup/omegaup.git (push)
upstream https://github.com/YOURUSERNAME/omegaup.git (fetch)
upstream https://github.com/YOURUSERNAME/omegaup.git (push)
Atualizando sua filial principal
Mantenha seu branch main sincronizado com o main do omegaUp:
git checkout main # Switch to main branch
git fetch origin # Fetch latest changes
git pull --rebase origin main # Sync with omegaUp/main
git push upstream # Update your fork
Aviso de envio forçado
Se git push upstream falhar, significa que você fez alterações diretamente em main. Use git push upstream -f para forçar o envio, mas evite fazer alterações em main no futuro.
Iniciando uma nova mudança
1. Crie uma ramificação de recursos
Crie uma nova ramificação de origin/main:
git checkout -b feature-name origin/main
git push upstream feature-name
Nomeação de filiais
Use nomes de ramificação descritivos como fix-login-bug ou add-dark-mode-toggle.
2. Faça suas alterações
- Escreva seu código seguindo as diretrizes de codificação
- Escreva testes para suas alterações
- Garantir que todos os testes sejam aprovados
3. Confirme suas alterações
git add .
git commit -m "Write a clear description of your changes"
Confirmar mensagens
Escreva mensagens de commit claras e descritivas. Consulte Commits convencionais para conhecer as práticas recomendadas.
4. Execute validadores
Antes de enviar, execute o script linting:
./stuff/lint.sh
Ganchos pré-empurrados
Esse script também é executado automaticamente por meio de ganchos pré-push, mas executá-lo manualmente garante que suas alterações atendam aos padrões.
5. Configurar usuário Git (somente na primeira vez)
Se você não configurou as informações do usuário do Git:
git config --global user.email "your-email@domain.com"
git config --global user.name "Your Name"
Criando uma solicitação pull
1. Envie suas alterações
git push -u upstream feature-name
-u configura o rastreamento entre sua filial local e a filial remota.
2. Solicitação pull aberta no GitHub
- Acesse github.com/SEU NOME DE USUÁRIO/omegaup
- Clique em "Filial" e selecione sua filial
- Clique em "Solicitação pull"
- Preencha a descrição do PR
3. Modelo de descrição de relações públicas
Sua descrição de RP deve incluir:
## Description
Brief description of what this PR does.
## Related Issue
Fixes #1234 <!-- Replace with your issue number -->
## Changes Made
- Change 1
- Change 2
- Change 3
## Testing
Describe how you tested your changes.
## Screenshots (if applicable)
Add screenshots if your changes affect the UI.
Referência do problema necessária
Sempre inclua Fixes #1234 ou Closes #1234 na descrição do seu PR. Isso fecha automaticamente o problema quando o PR é mesclado.
Atualizando sua solicitação pull
Se você precisar fazer alterações após criar o PR:
git add .
git commit -m "Description of additional changes"
git push # No -u flag needed after first push
O que acontece após o envio
- Verificações automatizadas: GitHub Actions executará testes e validações
- Revisão de código: um mantenedor revisará seu código
- Feedback sobre endereço: faça as alterações solicitadas e envie atualizações
- Mesclar: Depois de aprovado, seu PR será mesclado
- Implantação: as alterações são implantadas nos finais de semana
Implantações de fim de semana
Os PRs mesclados são implantados na produção durante as implantações de fim de semana. Você verá suas alterações ao vivo após a próxima implantação.
Excluindo filiais
Depois que seu PR for mesclado:
Excluir filial local
git branch -D feature-name
Excluir filial remota
- Acesse GitHub e clique em "Ramos"
- Encontre sua filial e clique no ícone excluir
Ou use Git:
git push upstream --delete feature-name
Limpar referências remotas
Remova referências de ramificação remota obsoletas:
git remote prune upstream --dry-run # Preview what will be removed
git remote prune upstream # Actually remove them
Configurações adicionais
Configuração de localidade
A máquina virtual pode não ter en_US.UTF-8 como localidade padrão. Para corrigir isso, siga este guia.
Dependências do compositor
Na primeira configuração, instale as dependências do PHP:
composer install
Configuração MySQL
Se você encontrar erros do MySQL ao enviar, instale e configure o MySQL:
sudo apt install mysql-client mysql-server
cat > ~/.mysql.docker.cnf <<EOF
[client]
port=13306
host=127.0.0.1
protocol=tcp
user=root
password=omegaup
EOF
ln -sf ~/.mysql.docker.cnf .my.cnf
Recursos
- Diretrizes de codificação - Nossos padrões de codificação
- Comandos úteis - Referência de comandos de desenvolvimento
- Guia de testes - Como escrever e executar testes
- Como obter ajuda - Onde fazer perguntas
Próximas etapas
- Revise a Visão geral da arquitetura para entender a base de código
- Confira Guias de desenvolvimento para guias detalhados
- Junte-se ao nosso servidor Discord para se conectar com a comunidade
Pronto para fazer sua primeira contribuição? Escolha um problema, crie um ramo e envie seu PR!