Requisitos
Um servidor de deploy como configurado e descrito em Configuração e Deploy.
Sincronize suas mudanças
Assim como subir e baixar arquivos para, e de, um servidor de deploy, o PhpStorm pode também sincronizar mudanças. Para fazer isso use o menu de contexto em qualquer arquivo ou diretório ou em todo o projeto, usando a opção Deployment → Sync with Deployed to <nome do servidor>.... Isso irá disparar um diff entre o projeto no PhpStorm e o servidor remoto.
Por padrão, o diff é baseado no conteúdo dos arquivos. Opcionalmente isso pode ser alterado na barra de ferramentas para comparar os arquivos baseado no tamanho deles ou na data de modificação.
A partir deste diff, podemos selecionar o que irá acontecer aos arquivos selecionados. Nós podemos selecionar entre o upload ou download das mudanças do projeto para o servidor de deploy só usando o menu de contexto.
Uma vez que as ações de diff estejam configuradas, podemos usar os ícones na barra de ferramentas para sincronizar a seleção (Synchronize Selected) ou sincronizar tudo (Synchronize All).
Upload Automático
Quando um usuário precisa ter exatamente os mesmos arquivos no servidor como no projeto, o upload automático pode ser de grande ajuda. Upload automático siginifica que qualquer mudança salva no IDE é entregue ao servidor de deploy. A configuração é feita através de Project Settings →Deployment → Options, selecionando a opção Upload changed files automatically to the default server para Always ou On explicit save action.
- Always significa exatamente o que sugere: o IDE enviará os arquivos independente de você invocar a ação de salvar com
Ctrl
+S
ou pelo menu, seja pelo salvamento automático. Isto não é recomendado no cenário de deploys do desenvolvimento direto para produção: código incompleto pode ser subido durante o desenvolvimento, potencialmente quebrando a aplicação em produção_._ - On explicit save action fará com que o upload só aconteça quando o arquivo for salvo manualmente escolhendo File → Save all no menu ou usando o atalho
Ctrl
+S
(Cmd
+S
no Mac)
Assim que o upload automático acontecer o painel de transferências (File Transfer) irá lhe informar a respeito.
Upload Automático ao iniciar uma sessão de depuração
Trabalhando com uma aplicação PHP, podemos ter nosso código fonte entregue a um servidor de deploy automaticamente sempre que rodarmos a aplicação ou iniciar uma sessão de depuração a partir de nosso IDE. Isso pode ser muito útil trabalhando em um servidor de desenvolvimento, por exemplo, para ter a ultima versão do código quando rodamos ou depuramos nossa aplicação remotamente.
A partir da configuração de Execução/Depuração (Run/Debug Configurations), podemos adicionar uma ação a ser lançada antes da execução, Upload files to Remote Host.
Agora podemos especificar quais diretórios devem ser entregues para o servidor de deploy. Pode ser o projeto inteiro ou um subdiretório específico para a configuração de Execução/Depuração.
Upload automático ao comitar no versionamento
O PhpStorm pode subir os arquivos automaticamente ao ser "comitados" no versionamento, a partir da janela Commit Changes. O servidor alvo pode ser especificado e quando a opção Always use selected server estiver selecionada o upload para o servidor de deploy será sempre executada no commit.
Notificações de mudanças remotas
Ao trabalhar com o projeto local e o servidor remoto, poderíamos receber notificações se alguma mudança é feita remotamente, não? Podemos configurar isso nas configurações em Project Settings → Deployment → Options.
Há duas configurações que devem ser habilitadas:
- Warn when uploading over newer file (Avise-me quando subir em um arquivo mais novo) permite-nos selecionar se queremos ser avisados se formos sobrescrever arquivos no servidor de deploy. Por padrão esta opção está desabilitada, mas podemos comparar arquivos baseados em sua data de modificação e tamanho, ou no conteúdo do arquivo. Precisaremos de uma dessas comparações ativas antes de podermos ligar as notificações de mudanças. A razão para isso é que o PhpStorm deve saber quando um arquivo é considerado alterado.
- Notify about remote changes (notifique a cerca de alterações remotas): quando habilitado, seremos notificados sobre mudanças remotas que não estão no nosso projeto local.
Se abrirmos um arquivo no IDE que foi alterado no servidor de deploy, vamos receber uma notificação sobre isso. Podemos também mesclar as mudanças no nosso arquivo local ou simplesmente sobrescrever as mudanças locais baixando o arquivo remoto.