Push do Git para a Produção (FTP)

130

Gostaria de saber se existe uma maneira fácil de colocar um repositório GIT em produção (em um servidor FTP)? obrigado

Roch
fonte

Respostas:

162

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.

Tim Henigan
fonte
3
usando git-ftp, existe uma maneira de enviar apenas um subdiretório (por exemplo, a pasta de publicação do html5 boilerplate) para o diretório ftp especificado?
quadrilha
E se houver vários desenvolvedores na equipe. Ainda é possível usar esses scripts?
Trilliput
@Trilliput: Um pouco tarde aqui, mas sim, um servidor intermediário / vm na rede como o lugar onde todo mundo empurra, e então: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃
O github.com/banago/PHPloy também faz uma coisa semelhante, mas funciona com submódulos, com os quais suspeito que algumas das ferramentas mencionadas possam ter dificuldades.
Simon Médio
O principal problema com o git-ftp (não tenho certeza do script ou python) Tentei muito ruim ao fazer upload de grandes pedaços de arquivos e uma longa lista de arquivos.
Indianwebdevil
14

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

insira a descrição da imagem aqui

Geri Borbás
fonte
@Julix Para o artigo mencionado.
Geri Borbás 12/01
11

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.)

Simon East
fonte
10

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:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x transmissão git
  4. Envio de configuração para o seu aplicativo ao vivo
  5. Execute git-transmit no seu repositório git.
Rob Sawyer
fonte
1
Esse script é um pouco desajeitado ao selecionar 'últimos arquivos atualizados'. Confira este garfo para uma solução mais elegante.
quickshiftin
Além disso, você pode querer transmitir apenas arquivos rastreados e não confirmados. Aqui está um pequeno script que faz exatamente isso: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur
5

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 pullda 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.

esplêndido
fonte
29
O único problema é que você não tem acesso ao servidor de produção, ou seja, pode ser uma hospedagem compartilhada simples, com apenas acesso FTP.
dodgy_coder
4

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

  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

insira a descrição da imagem aqui

joelmez4
fonte
1

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 pushcomando, 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.

dodgy_coder
fonte
0

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.

Justin Ethier
fonte
5
Bem, o git pode ser muito bem aproveitado para esse propósito na realidade. Confira a etiqueta e crie ganchos pós-checkout, pós-mesclagem etc. para lidar com os procedimentos de instalação necessários. Costumávamos usar pacotes RPM, mas depois de passar para o git, era simplesmente um exagero.
#
0

Adicione-o como um controle remoto e você poderá enviá-lo por push, mas simplesmente empurrar o código não é suficiente, ele precisa ser mesclado com a árvore de trabalho. A maneira mais fácil é seguir o caminho inverso, ter uma árvore de trabalho no servidor e buscar e mesclar isso.

d11wtq
fonte
0

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.

Sdembla
fonte
0

Você pode tentar o FTPloy ...

https://ftploy.com

"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.

Dave Thompson
fonte
1
Publiquei esta resposta prematuramente. O FTPloy não está 'pronto para produção' e há muitos bugs. Não consegui fazê-lo funcionar. Estou usando o DeployHQ, que funciona muito bem.
26616 Dave Thompson
0

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.

bramchi
fonte