Configurando o SVN com dois clientes e um servidor para um site ativo

Configurando o SVN com dois clientes e um servidor para um site ativo

Eu trabalho com um cliente que possui um servidor Plesk dedicado baseado em Linux. O site (digamos example.com) está no ar e, como geralmente são necessárias grandes modificações, é muito difícil fazê-los funcionar diretamente no ar. O servidor não tinha SVN, apenas FTP.

Criei um subdomínio staging.example.come coloquei os arquivos lá via FTP para que o cliente pudesse ver as modificações antes de colocá-las no ar. Escusado será dizer que é uma dor de cabeça para mim lembrar de cada arquivo relacionado a cada tarefa, fazer upload e testar no teste e, em seguida, lembrar novamente quais eram os arquivos e fazer isso novamente para o servidor ativo. Eu 'falhei com sucesso' várias vezes em fazer isso perfeitamente.

Quero usar o SVN agora. Consegui instalar o SVN usando SSH (tenho acesso total a ele) e um repositório (em /var/www/vhosts/example.com/svn/repos), mas outras configurações parecem ambíguas para mim. Quero que a configuração fique assim:

  1. Servidor SVN (em execução svn.example.com- já concluído)
  2. cópia 'master' em staging.example.com, em /var/www/vhosts/example.com/staging(não tenho certeza se 'master' tem alguns significados específicos no SVN. Quero dizer apenas a cópia principal)
  3. Um diretório de trabalho em www.example.com, em /var/www/vhosts/example.com/httpdocspara que eu possa atualizar o svn para ativar minhas alterações
  4. Outro diretório de trabalho no meu computador onde eu faria o trabalho real.

Meu plano é trabalhar no meu computador, enviá-lo para que possa ser testado no teste e, se tudo estiver bem, atualizar do site ativo para colocar minhas alterações no ar.

Por favor, me guie como posso conseguir isso. Observe também que sou um programador, não um administrador de sistema, portanto meu plano pode ter alguns problemas. Se você pensa assim, indique uma solução alternativa. Eu uso o SVN há muito tempo, mas era apenas checkout-commit-update-resolve, sem configuração. É por isso que preciso de ajuda agora.

Responder1

A solução mais fácil é provavelmente apenas verificar o código (apenas o tronco, sem filiais, etc.) nos três locais. Então você só precisa ter certeza de fazer "svn up" nas pastas certas na hora certa.

Então, tente o seguinte (os comentários descrevem cada parte).

#SSH to the server as a user who can modify /var/www/vhosts/...
...

cd /var/www/vhosts/ # Since this is a live server, we need to make the
                    # changeover fast, so work in a new folder. 
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository 
                                                    # into a new folder called
                                                    # "staging".(Change "website"
                                                    # to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"

# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...

cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.   
 # This will make the svn version of the staging site live. Check that it works
 # then do the same with the httpdocs folders.

Uma solução mais complicada seria usar dois ramos de código, um para teste e outro para live. Mas isso provavelmente seria um exagero para isso ...

Responder2

Versão estendida da resposta ed

Prefácio

Você deve adquirir algumas habilidades de administração do Subversion para que tudo funcione corretamente e para entender os processos subjacentes

Face

Você tem que ter:

  • Um repositório
  • Duas ramificações (pelo menos) no repositório (fe STAGINGe LIVE)
  • Gancho pós-commit com lógica de negócios incorporada "publicar no STAGE ou no destino LIVE"
  • Três quatro cópias de trabalho: DEV (seu local de trabalho local, vinculado à ramificação STAGING), MERGE (seu local de trabalho local, vinculado à ramificação LIVE), STAGING (no servidor STAGING, vinculado à ramificação STAGING), LIVE (no servidor LIVE, vinculado ao LIVE filial)
  • Cliente SVN instalado em STAGING e LIVE

Fluxo de trabalho:

  • Edite o código em DEV
  • Commit - o gancho pós-commit atualizará o WC no STAGING
  • Testar alterações no STAGING
  • Mesclar em MERGE WC (testado) alterações do branch STAGING /mesclar do branch STAGING para o branch LIVE efetivamente/
  • Confirmar alterações no branch LIVE - o gancho pós-commit atualizará o WC no LIVE com alterações mescladas (o gancho pode detectar esse tipo de commit por palavra-chave na mensagem de commit / svnlook log | grep KEYWORD/ ou por alterações no branch LIVE / svnlook dirs-changed/)

Observação:

Em vez de WCs em servidores e ssh & svn upvocê pode usar FTP ou scp - menos Subversion, mais dor de cabeça com atualização de sites (arquivos excluídos serãonãoser excluído pelo FTP|scp e o processo em comum parece mais complexo /para mim/)

informação relacionada