Respostas:
Algumas ferramentas adicionadas recentemente ao wiki do Git :
O git-ftp de René Moser é um shell script simples para fazer o FTP da maneira Git. Use o git-ftp.sh para carregar apenas os arquivos rastreados pelo Git em um servidor FTP, que foram alterados desde o último upload. Isso economiza tempo e largura de banda. Mesmo se você jogar com diferentes ramificações, o git-ftp.sh sabe quais arquivos são diferentes. Nenhum cliente FTP comum pode fazer isso.
git-ftp de Edward Z. Yang é um script simples escrito em python para fazer upload de arquivos em um repositório Git via FTP, apenas transferindo novos arquivos e removendo arquivos antigos.
Se você preferir a GUI, use o SourceTree, poderá configurar facilmente uma Ação Personalizada que use o git-ftp mencionado acima. Uma breve descrição da instalação (para Mac) no repositório Push a Git para um FTP
Eu achei o PHPloy uma ótima ferramenta para enviar suas confirmações do Git para servidores remotos por FTP. Ele funciona a partir da linha de comando e é escrito em PHP (e até detecta alterações nos submódulos).
https://github.com/banago/PHPloy
git commit ...
phploy -s staging
phploy -s production
Feito!
(Isenção de responsabilidade: depois de usá-lo por um tempo, agora eu contribuí com algumas correções e melhorias de código, tornando-o compatível com o Windows.)
Se você estiver em um Mac e tiver o Transmit, recomendo o seguinte script git-tranmit ( https://gist.github.com/379750 ). Ele usa o DockSend para enviar apenas os últimos arquivos atualizados. Se você não estiver familiarizado com o DockSend, consulte http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .
Configuração:
Não é para isso que serve o git, a rigor. No entanto, se sua fonte é algo que não precisa ser compilado ou processado, digamos, um site que consiste inteiramente de arquivos html e javascript e similares, você pode ter um clone do repositório em seu servidor git pull
da Web e usá -lo no servidor para mantê-lo atualizado -Até a presente data. Note, eu configuraria seu servidor web para ocultar o diretório git e tal. E isso é apenas o começo das preocupações de segurança.
Se você tiver algum tipo de compilação ou processamento, comece a analisar Ant , Maven , BuildR , SBT , etc.
Você pode usar o Deployhq.com, que funciona como um encanto, a única coisa que você precisa fazer é configurar seu repositório e sua conta FTP.
Atualmente, eles são os seguintes sistemas de controle de versão:
Git, Subversão, Mercurial.
Com repositório hospedado
Este é um script em PHP para carregar quase automaticamente o git-diff em um servidor FTP:
Gratuito para um projeto e funciona muito bem.
Há um script Ruby aqui - Ruby git-deploy via FTP ou SSH que carrega apenas os arquivos alterados no repositório git via FTP ou SSH.
Como mencionado em outra resposta, aqui está o script git-ftp.py do Python, que faz uma coisa semelhante.
E aqui está a versão do shell script do git-ftp .
Há também um projeto gem Ruby chamado git-deploy, que permite configurar uma implantação personalizada por meio de um git remote usando o git push
comando, da mesma maneira que os serviços Heroku e Azure. Para este, você pode precisar escrever métodos personalizados para implantar via FTP e acho que assume que você tenha acesso SSH ao servidor de produção.
Se você estiver colocando código em produção, recomendo usar um "instalador", como um pacote RPM, para instalar seu código. Dessa forma, a versão será estampada e você poderá aproveitar o pacote do instalador para oferecer suporte a atualizações no código de produção. O Git não é realmente projetado para oferecer suporte a instalações de produção, ele visa rastrear alterações no próprio código.
De qualquer forma, com um .RPM (ou EXE ou o que for) criado, você pode enviá-lo por FTP para o sistema de produção e instalá-lo como qualquer outro pacote.
Você sempre pode tentar montar o ftp em um diretório local usando o http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem .
Então você pode usá-lo da mesma maneira que isso .
Eu estava lutando muito para descobrir isso. Eu descobri uma maneira fácil de fazer isso de várias fontes ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Você pode ler para referência, mas não há necessidade, porque mencionei o processo passo a passo abaixo.
Primeira coisa: instale git e curl usando brew no MAC OS
brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp
Execute os seguintes comandos:
git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install
Atualizando usando git
git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install
Configuração
git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword
Carregar todos os arquivos
git ftp init
Ou se os arquivos já estiverem lá
git ftp catchup
Trabalhar e implantar
echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push
Se houver um erro: pathspec 'index.txt' não correspondeu a nenhum arquivo conhecido pelo git . Isso significa que o arquivo ainda não foi preparado, adicione o arquivo e tente confirmar.
git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
Espero que isto ajude.
Você pode tentar o FTPloy ...
"Enviar alterações para o GitHub ou Bitbucket."
"Implantar alterações automaticamente no seu servidor"
Você tem um projeto gratuito para experimentar. Atualmente, estou usando para um pequeno site php e funciona muito bem. Alguns bugs no site, mas é um projeto ativo, pelo menos eles estão trabalhando nele.
Confira https://gitftp-deploy.com/ se você estiver no MacOS e gostar de GUIs.
É um aplicativo pequeno e agradável que usa o Git para rastrear alterações e fazer upload apenas dos arquivos alterados com FTP.
Especialmente útil se você não gosta de pagar taxas mensais por dezenas de projetos menores com equipes pequenas.