FTP é tão 90’s. Vamos implementar via Git!

Atualização : este artigo foi publicado na edição 42 do Hacker Monthly .


Primeiro, crie um diretório em seu servidor e inicialize um repositório git vazio. Gosto de servir meus sites de ~/www/, então é isso que farei neste exemplo.

mkdir ~/www/example.com && cd ~/www/example.com
git init

A seguir, vamos configurar o repositório git do seu servidor para lidar bem com a implantação via git push.

git config core.worktree ~/www/example.com
git config receive
.denycurrentbranch ignore

Por fim, configuraremos um gancho pós-recebimento para o git fazer o check-out do masterbranch para que seu servidor da web possa servir os arquivos desse branch. (Lembre-se, ^Dé Control + D, ou qualquer que seja o caractere EOT do seu shell .

cat > .git/hooks/post-receive
#!/bin/sh
git checkout
-f
^D
chmod
+x .git/hooks/post-receive

Lembre-se de que você pode adicionar o que quiser ao gancho pós-recebimento se tiver um processo de construção. Por exemplo, um dos meus projetos sinatra usa o seguinte gancho pós-recebimento:

#!/bin/sh
git checkout
-f
bundle install

touch
~/www/example.com/tmp/restart.txt

De volta à sua máquina local, vamos deixar seu repo git pronto para implantação.

cd ~/www-dev/example.com
git remote
add origin
ssh
://user@example.com/home/user/www/example.com

Para o primeiro envio para o seu servidor, execute o seguinte comando.

git push origin master

Agora, sempre que você quiser implantar as alterações feitas localmente, basta executar o seguinte comando!

git push