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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top