Eu uso 4: tenho um clone no servidor, depois faço um arquivamento disso e implanto isso (como demonstrado no meu git push ferramenta de implantação, Giddyup ).
Os problemas com os outros métodos, na minha experiência, são:
- Check-out do VCS: seu check-out inclui metadados de controle de versão, que (se você negligenciar a proteção adequada com a configuração do servidor da Web) podem expor seu código-fonte a invasores ou a usuários com curiosidade terminal.
- FTP / rsync: Nada particularmente errado com esse método, embora uma implementação ingênua (FTP ou rsync em um diretório vazio) consuma muito mais tempo e largura de banda para transferir tudo. Também tem um hábito desagradável de implantar coisas que não foram verificadas (sempre uma aventura para diagnosticar aquela uma), porque era apenas mentir em torno de sua cópia de trabalho local. (Você pode contornar isso, mas eles geralmente se resumem a "fazer um checkout local", que é devolvido para (1).
- Embora eu seja uma porca de embalagem , eu Descobrimos que o empacotamento da maioria dos aplicativos da web (TM) é um exagero - eles são dados, em vez de programas (do ponto de vista do servidor), então envolvê-los em um pacote acaba sendo desnecessário (supondo que você tenha um bom mecanismo de implantação envolvendo o registro de suas implantações, a revisão exaustiva que os controla e assim por diante).