Introdução
Quando pensamos em criar um projeto open-source, é preciso pensar na estratégia de publicação, e muitas vezes não queremos trabalhar direto no GitHub ou outro servidor de repositórios aberto durante algumas etapas de desenvolvimento. Pra isso é possível adotar um forma de publicar em dois locais o mesmo código, com os mesmos commits. Neste exemplo vou abordar uma projeto que nasceria no Git privado, dentro de um servidor de TFS da Microsoft e depois seria publicado em um diretório público do GitHub. Vou mostrar duas maneiras de fazer esta publicação dupla, uma onde os commits são simultâneos e outra onde trabalho em um repositório privado e depois envio o código para o espaço compartilhado.
Publicação simultânea
Crie dois repositórios em servidores diferentes, no caso, eu criei um repositório no TFS e outro no GitHub.
- GitTFSProject
- GitHubProject
Abra o GitBash e clone um dos repositórios.
1 |
git clone https://servidor.visualstudio.com/_git/GitTFSProject |
Faça uma alteração no diretório, como incluir um arquivo de texto. Execute o comando:
1 |
git add --all |
E agora execute um commit com a devida mensagem:
1 |
git commit -m "Both.txt file" |
Adicione a configuração de push para o diretório original:
1 |
git remote set-url --add --push origin https://servidor.visualstudio.com/_git/GitTFSProject |
Em seguida a configuração para o outro servidor:
1 |
git remote set-url --add --push origin https://github.com/username/GitHubProject |
Execute finalmente o push:
1 |
git push |
Se quiser ver todos os repositórios que estão configurados, execute:
1 |
git remote -v |
Referência: https://stackoverflow.com/questions/14290113/git-pushing-code-to-two-remotes
Commits em tempos diferentes
Crie dois repositórios em servidores diferentes, no caso, eu criei um repositório no TFS e outro no GitHub.
- GitTFSProject
- GitHubProject
Abra o GitBash e clone um dos repositórios.
1 |
git clone https://servidor.visualstudio.com/_git/GitTFSProject |
Abra o diretório pelo GitBash:
1 |
cd GitTFSProject |
Neste caso, você pode criar uma branch a partir da master, executando o comando:
1 |
git checkout -b version-0-0-1 |
Faça uma alteração no diretório, como incluir um arquivo de texto. Execute o comando:
1 |
git add --all |
E agora execute um commit com a devida mensagem:
1 |
git commit -m "Both.txt file" |
Faça mais algumas alterações, para que tenha ao menos 3 commits.
Execute o push e publique a branch.
1 |
git push --set-upstream origin version-0-0-1 |
Agora temos 3 commits com push no TFS.
Vamos alterar o servidor de repositórios para o GitHub e enviar pra lá estes commits.
1 |
git remote set-url --push origin https://github.com/username/GitHubProject |
Agora precisamos executar novamente o processo de publicação da branch e envio dos commits, com o comando:
1 |
git push --set-upstream origin version-0-0-1 |
Então, temos a mesma branch com os mesmos commits no GitHub!
Agora, retorne a configuração de push para a URL original:
1 |
git remote set-url --push origin https://servidor.visualstudio.com/_git/GitTFSProject |
Referência: https://git-scm.com/docs/git-remote
Conclusão
Assim é possível criar uma estratégia de publicação de códigos, sem precisar lançar em todos os diretórios ao mesmo tempo.