- Detalho o processo e o resultado de migrar meus projetos pessoais e meu site do GitHub para o Codeberg
- Usei a função "migrate from GitHub" do Forgejo para migrar completamente repositórios, issues, PR, wiki e releases
- Realizei a realocação do repositório e a marcação da migração com stubs do GitHub de forma automatizada para deixar explícito que a migração ocorreu
- Na migração de CI/CD, usei o Forgejo Actions do Codeberg e montei workflows mais leves conforme as restrições do ambiente
- O site foi migrado sem downtime usando git-pages e Grebedoc, concluindo a migração inteira durante o fim de semana
Visão geral da migração
- Migrei um site que estava no GitHub Pages e 45 repositórios para o Codeberg
- Não foi algo que terminasse com um simples clique; exigiu várias etapas manuais
- O processo completo foi concluído em um fim de semana, sem grandes inconvenientes
- O objetivo foi mostrar que outros desenvolvedores também conseguem migrar facilmente
1ª etapa: Migração de repositórios
- O Codeberg é baseado no Forgejo e oferece o recurso "migrate from GitHub"
- Com a criação de um Personal Access Token (PAT) no GitHub, é possível trazer também metadados como issues
- Devido ao rate limit da API do GitHub, migrar vários repositórios ao mesmo tempo podia falhar
- Issues, PR, wiki e releases foram totalmente migrados, tornando desnecessário manter referências ao GitHub
2ª etapa: Redirecionamento de links
- Converteu em lote os links do GitHub para endereços do Codeberg no repositório local
- Usei
sed e find para substituir texto de forma automática
- Alterei a URL
git remote de cada repositório para o Codeberg e fiz push em todos os repositórios
3ª etapa: Tratamento de stubs de repositórios do GitHub
- Adicionei um README de anúncio de migração aos repositórios do GitHub e atualizei a descrição e o link da homepage para o Codeberg
- Escrevi um script de automação para aplicar essa alteração em lote em vários repositórios
- Archivei os repositórios com o comando
gh repo archive
4ª etapa: Migração de CI/CD
- A documentação de CI do Codeberg destaca o princípio de minimizar consumo de energia
- Por isso, mantive CI apenas nos projetos em que ela era realmente necessária (site, build de documentação etc.)
- O Codeberg oferece duas opções de CI: Woodpecker e Forgejo Actions
- Escolhi o Forgejo Actions, por ser similar ao GitHub Actions
- Principais diferenças
- A maior parte dos Actions funciona sem alterações
- Só há runners Linux, sem suporte para macOS e Windows
- Há menos software instalado e recursos limitados
- Com lazy runners, é possível ter distribuição de carga e execução mais ecológica
- Para melhorar a performance da CI, usei uma imagem Docker com LaTeX pré-instalado, mas voltei para a imagem Ubuntu padrão por problemas de versão
5ª etapa: Rehospedagem do site
- Tentei migrar o site que rodava no GitHub Pages para Codeberg Pages, porém esse recurso estava em modo de manutenção
- A atualização ficou atrasada por questões de complexidade e performance
- Encontrei e usei git-pages e Grebedoc como alternativa
- Com suporte a upload antes da mudança de DNS, foi possível fazer a transição sem downtime
- Há suporte para redirecionamento no servidor e cabeçalhos customizados
- A migração foi concluída mantendo o link antigo (
eldred.fr/fortISSimO)
- O Codeberg tem planos de fazer uma migração gradual para o git-pages no futuro
- Como o resultado ficou melhor que no GitHub Pages, passei a apoiar no Patreon os desenvolvedores do git-pages
Tempo gasto
- Migração de repositórios (etapas 1~3): meio dia
- Migração de CI (etapa 4): meio dia
- Migração do site (etapa 5): alguns dias, incluindo a quitação de dívida técnica
- No total, concluído dentro de um fim de semana, com trabalho mais simples do que o esperado
Depois da migração
- Nenhuma regressão funcional no site; apenas a branch master no GitHub foi reduzida
- Permalinks continuam funcionando
- A exclusão dos repositórios do GitHub está pendente por falta de redirecionamento
- A conta do GitHub foi mantida para contribuições em outros projetos
- Ao migrar para o Codeberg, pode haver redução no número de contribuidores, mas alguns usuários já criaram conta no Codeberg e seguem contribuindo
Agradecimentos
- Catherine 'whitequark': operação do git-pages e do Grebedoc
- Equipe da SERVFAIL network: provimento de DNS
- Contribuidores do Codeberg e do Forgejo: disponibilização da base para migração
1 comentários
Opiniões do Hacker News
O que chama atenção neste relato de migração não é a parte técnica, mas o fato de que a chamada “paridade de recursos” (
feature parity) não é o verdadeiro obstáculoO Codeberg é suficiente para fluxos de trabalho do dia a dia, mas não tem os efeitos de rede e a inércia que o GitHub acumulou
Com base em protocolos como o Bluesky, eles são projetados para que identidade e conectividade sejam mantidas independentemente de onde o Git estiver hospedado
É difícil reencontrar uma issue que eu tinha certeza de já ter visto antes. O desempenho melhorou recentemente, mas em projetos com centenas de issues vale a pena fazer uma migração de teste primeiro
Em coisas como CI/CD, não é necessário que o time inteiro entenda; basta uma pessoa dominar bem
O Codeberg é um fork do Gitea, e o Gitea é um fork do Gogs
Ambos os forks começaram mais por razões filosóficas do que técnicas, e Joe Chen, criador do Gogs, teve grande mérito nisso
O Gitea surgiu como fork porque um desenvolvedor monopolizou as permissões do repositório, e o Forgejo foi criado como fork para recuperar a marca do Gitea
Fico curioso se alguém já usou Codeberg junto com o F-Droid
Queria saber se ele consegue detectar releases automaticamente, como o GitHub
Parece que agora chegou a um efeito de limiar (
threshold effect)Nos últimos dias vi vários projetos saindo do GitHub
Fico me perguntando se houve algum incidente ou se existe alguma tendência por trás disso
trust thermocline)As reclamações da comunidade open source foram se acumulando até chegar a um limite
A polêmica sobre IA e publicidade em torno da Microsoft como um todo, além do fim do suporte ao Windows 10, também parecem influenciar
O conceito relacionado foi apresentado pela primeira vez nesta thread do Twitter
Acho que a época em que ele era baseado em Rails era melhor
Pode ser apenas algo temporário, recebendo atenção excessiva em relação ao que realmente é
Queria saber se há alguma alternativa ao GitHub adequada para equipes pequenas ou desenvolvedores individuais
O Codeberg parece centrado em FOSS, então não me parece ideal para uso comercial
O GitLab tem muitos recursos, mas é pesado de manter
Além disso, há várias outras forjas FOSS, como Gitea, Gogs e Phorge
Gosto do fato de ele não tentar copiar a UI do GitHub e de ter uma interface imediata tão rápida quanto algo local
Não há necessidade de migrar só porque “não gosto da Microsoft”
No fim, subi projetos novos no Codeberg e mantenho alguns como espelho privado no GCP
Também postei esta thread no Ask HN, mas não houve resposta
Olhando o post do blog em eldred.fr, os motivos do autor parecem razoáveis, mas do ponto de vista do usuário a melhoria percebida é quase nenhuma
Ao usar o Codeberg
Exemplo: https://codeberg.org/dnkl/foot
Seria melhor deixar o README como página principal
Na versão paga, dá até para personalizar as imagens
Se ficar diferente demais, a reação negativa pode ser ainda maior
Esconder o botão de login do GitHub foi uma decisão orientada pela comunidade, e se quiser dá até para sugerir via PR
O objetivo era encontrar uma alternativa ética com os mesmos recursos do GitHub
Se o escaneamento por IA no GitHub não for um problema, fico pensando se há mesmo necessidade de migrar por motivos não políticos
Fico curioso se o Codeberg oferece runners gratuitos de CI
Estima-se que o GitHub gaste mais de 100 milhões de dólares por ano com CI
Mas mencionar o custo ambiental pode acabar desestimulando a participação dos usuários
Para pessoas técnicas, costuma ser mais eficaz abordar isso como uma questão de otimização de desempenho
moat) do GitHubFiquei decepcionado ao ver que o Codeberg, no passado, exagerou um incidente de spam como se fosse uma “campanha de ódio de extrema direita” e ainda usou isso para se autopromover
Bastava ter admitido que falhou na prevenção, mas preferiram enquadrar tudo politicamente
Links relacionados: issue, discussão no HN, post no blog
Se alguém perdeu o respeito por isso, o problema não está no projeto, mas nessa visão
Eu também já migrei repositórios para o Codeberg e depois voltei ao GitHub
Não gosto de vários recursos do GitHub, mas o Codeberg não tem a força de atração para colaboração
Como mantenedor solo, eu preciso muito de visibilidade e efeito de rede