Como posso usar post-commit ganchos para copiar arquivos submetidos a um diretório web do SVN?

StackOverflow https://stackoverflow.com/questions/140614

  •  02-07-2019
  •  | 
  •  

Pergunta

servidor

Meu Ubuntu tem Apache e Subversion instalado. Eu uso este servidor como um servidor de teste, apenas para fins de teste. Eu uso Apache para hospedar o aplicativo web, e Subversion para manter cópias de versões do código-fonte.

O meu fluxo de trabalho atual:

  • Faça alterações em um arquivo
  • Commit o arquivo para o Subversion repositório
  • Enviar o arquivo novo sobre SFTP para o diretório público Apache
  • Veja as alterações na minha web browser

Eu ficaria muito mais feliz se meu trabalho foi como esta:

  • Faça alterações em um arquivo
  • Commit o arquivo para o Subversion repositório
  • No fundo, o Subversion coloca uma cópia do arquivo comprometido para o diretório público Apache
  • Veja as alterações na minha web browser

Eu tenho muito pouca experiência administrador do servidor, e qualquer ajuda ou ponteiros são apreciados. Ouvi dizer que post-commit ganchos são o que eu preciso, e que eu possa escrever scripts bash para fazer isso, mas eu não tenho certeza por onde começar e realmente não encontrar nada depois de um monte de Googling.

Obrigado!

Outras dicas

Pode ser feito, mas empurrando automaticamente a cada comprometer com o site da produção nem sempre é uma boa idéia. Às vezes, há outras mudanças que precisam ir junto, e quebrando o site porque o novo código está lá, mas o esquema de banco de dados ainda não foi atualizado é apenas embaraçoso.

O que eu tendem a fazer em vez disso é fazer o servidor de pagamento uma cópia do svn, então, uma vez que estou pronta com tudo o que tem que acontecer, eu faço uma atualização SVN nele.

Mas se você realmente queria, você pode colocar comandos no post-commit gatilho, que fará tudo automaticamente para você. Isto poderia incluir a execução de um script de migração no servidor (se existir alguma para essa mudança), para cuidar de qualquer não-código de mudanças que precisam acontecer.

Eu acho que o real e abrangente pergunta que você deve estar se perguntando --- que você já deve ter se perguntado é claro --- é esta: "como posso testar o meu código mais facilmente antes implantá-lo? "

Eu acho que uma resposta boa é instalar Apache em sua caixa de desenvolvimento e executá-lo como seu próprio usuário, com webroot e / ou caminho cgi em /home/richardhenry/src/mywebsite (ou onde quer que você verificar se o seu código).

Dessa forma, você pode testar seu código, mesmo sem cometer. Como resultado, você não vai ninhada seu tronco com commits quebrados ou inúteis. Em geral, manter as coisas independentes independente tende a ser uma boa idéia (TM).

Como alternativa, sincronizar o servidor web contra o seu diretório de trabalho com o rsync, ou escrever um script que empurra seu arquivo (s) da caixa de dev para o seu servidor de teste e adicionar uma regra Makefile que é executado o script (ou despertador rsync) . Se você quer ser realmente extravagante, usar inotify ou algum outro monitor notificação de ficheiro para executar o script automaticamente.

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