É possível fazer check-outs automaticamente a partir de qualquer VCS?
-
08-06-2019 - |
Pergunta
Vamos pegar um ambiente de desenvolvimento web, onde os desenvolvedores registram um projeto em suas máquinas locais, trabalham nele e verificam as alterações no desenvolvimento.
Essas mudanças são testadas posteriormente no desenvolvimento e colocadas em operação regularmente (por exemplo, semanalmente, mensalmente, etc.).
É possível ter uma movimentação automática da versão marcada mais recente (e não do check-in mais recente, pois pode não ser 100% estável), por exemplo, às 8h das manhãs de segunda-feira, usando um script ou um recurso integrado do VCS?
Solução
Certamente, mas o produto exato pode depender do VCS que você está usando.
O que você pode querer fazer é ter algumas ramificações diferentes e migrar à medida que avança.Por exemplo, Desenvolvimento -> Stable-Dev -> Beta -> Produção.Você pode então simplesmente atualizar automaticamente para a versão mais recente do Stable-Dev e Beta para seus testadores e sempre ser capaz de implantar uma nova versão de produção num piscar de olhos.
Outras dicas
Sim, é possível.Este é geralmente um recurso fornecido por ferramentas de integração contínua.Normalmente, eles obterão a fonte mais recente do controle de versão, construirão o projeto, testarão (executando testes de unidade) e possivelmente implantarão em um servidor (de teste).
Se você não precisar de todas essas etapas, poderá facilmente fazer a mesma coisa com algum script de shell ou similar (ou seja,checkout do controle de versão e cópia para a pasta de produção no servidor).
Qualquer coisa que você possa fazer com o cvs pode ser feito com a linha de comando, e tenho certeza que o svn é o mesmo.Basta descobrir a funcionalidade desejada e colá-la em um script de shell ou arquivo de comando.
Os únicos dois com os quais tenho experiência são SVN e Mercurial.Para o Mercurial, você especifica de qual branch deseja atualizar (digamos o padrão) e sempre que mesclar um branch no padrão, você pode simplesmente executar o servidor:
hg update
O que atualiza seu repositório para a versão mais recente do branch que você definiu.
SVN é o mesmo conceito, você só verifica qual branch deseja inicialmente
svn co http://host/repository/branchname/
então você tem seu servidor atualizado com um cron job, ala
svn up
Em teoria, porém, qualquer VCS que suporte ramificação (todos os bons fazem:git, mercurial, SVN, etc...), deve ser capaz de fazer algo semelhante a isto.
Duvido que muitos VCSs forneçam essa capacidade diretamente, porém deve ser muito simples de criar scripts.Check-out baseado em data ou filial.
Como acompanhamento,
Sou da opinião que um aplicativo deve fazer um trabalho e fazê-lo bem.Muitas vezes, se você começar a combinar ferramentas em um produto, nenhuma delas brilhará e a maioria delas ficará "'tudo bem, mais ou menos".
Se eu estivesse fazendo algo assim, conseguiria algo como SVN, ANT e Subversion Ant Library (http://ant.apache.org/antlibs/svn/index.html) - sua milhagem pode variar.