Git Push en producción (FTP)

130

¿Me gustaría saber si hay una manera fácil de llevar un repositorio GIT a producción (en un servidor FTP)? Gracias

Roch
fuente

Respuestas:

162

Algunas herramientas agregadas recientemente a la wiki de Git :

git-ftp de René Moser es un simple script de shell para hacer FTP a la manera de Git. Use git-ftp.sh para cargar solo los archivos rastreados de Git a un servidor FTP, que han cambiado desde la última carga. Esto ahorra tiempo y ancho de banda. Incluso si juegas con diferentes ramas, git-ftp.sh sabe qué archivos son diferentes. Ningún cliente FTP común puede hacer eso.

git-ftp de Edward Z. Yang es un script simple escrito en python para cargar archivos en un repositorio de Git a través de FTP, solo transfiere archivos nuevos y elimina archivos viejos.

Tim Henigan
fuente
3
usando git-ftp, ¿hay alguna manera de insertar solo un subdirectorio (por ejemplo, la carpeta de publicación de html5 boilerplate) en el directorio ftp especificado?
pandilla
Y qué pasa si hay varios desarrolladores en el equipo. ¿Todavía es posible usar estos scripts?
Trilliput
@Trilliput: un poco tarde aquí, pero sí, un servidor intermedio / vm en la red como el lugar donde todos empujan, y luego: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃
github.com/banago/PHPloy también hace algo similar pero funciona con submódulos, con lo que sospecho que algunas de las herramientas mencionadas podrían tener problemas.
Simon East
El principal problema con git-ftp (no estoy seguro de script o python) Lo intenté fue muy malo al cargar grandes fragmentos de archivos y una larga lista de archivos.
indianwebdevil 01 de
14

Si prefiere la GUI, use SourceTree, puede configurar fácilmente una Acción personalizada que use git-ftp mencionado anteriormente. Una breve descripción de la configuración (para Mac) en el repositorio Push a Git a un FTP

ingrese la descripción de la imagen aquí

Geri Borbás
fuente
@Julix Para el artículo mencionado.
Geri Borbás
11

He encontrado que PHPloy es una gran herramienta para enviar sus confirmaciones de Git a servidores remotos a través de FTP. Funciona desde la línea de comandos y está escrito en PHP (e incluso detecta cambios en submódulos).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

¡Hecho!

(Descargo de responsabilidad: después de usarlo por un tiempo, ahora he contribuido con algunos parches de código y mejoras, por lo que es compatible con Windows).

Simon East
fuente
10

Si está en una Mac y tiene Transmitir, recomendaría el siguiente script git-tranmit ( https://gist.github.com/379750 ). Utiliza DockSend para enviar solo los últimos archivos actualizados. Si no está familiarizado con DockSend, visite http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Preparar:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transmitir
  4. Configuración de envío directo para su aplicación en vivo
  5. Ejecute git-transmit en su repositorio git.
Rob Sawyer
fuente
1
Este script es bastante torpe al seleccionar 'últimos archivos actualizados'. Mira este tenedor para una solución más elegante.
quickshiftin
Además de eso, es posible que desee transmitir solo archivos rastreados y no confirmados. Aquí hay un pequeño script que hace exactamente eso: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur
5

Para eso no es git, estrictamente hablando. Sin embargo, si su fuente es algo que no necesita compilarse o procesarse, por ejemplo, un sitio web que consta completamente de archivos html y javascript y similares, podría tener un clon del repositorio en su servidor web y usarlo git pulldesde el servidor para mantenerlo actualizado. -hasta la fecha. Tenga en cuenta que configuraría su servidor web para ocultar el directorio git y demás. Y ese es solo el comienzo de las preocupaciones de seguridad.

Si tiene algún tipo de compilación o procesamiento, debe comenzar a mirar Ant , Maven , BuildR , SBT , etc.

sblundy
fuente
29
El único problema con esto es cuando no tiene acceso al servidor de producción, es decir, puede ser un simple alojamiento compartido, con solo acceso FTP.
dodgy_coder
4

Puede usar Deployhq.com , funciona de maravilla , lo único que debe hacer es configurar su repositorio y cuenta FTP.

Actualmente tienen los siguientes sistemas de control de versiones:

Git, Subversion, Mercurial.

Con repositorio alojado

  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

ingrese la descripción de la imagen aquí

joelmez4
fuente
1

Aquí hay un script de Ruby: Ruby git-deploy a través de FTP o SSH que carga solo los archivos modificados en el repositorio de git a través de FTP o SSH.

Como se mencionó en otra respuesta, aquí está el script Python git-ftp.py que hace algo similar.

Y aquí está la versión de script de shell de git-ftp .

También hay un proyecto de gemas Ruby llamado git-deploy que le permite configurar una implementación personalizada a través de un control remoto git utilizando el git pushcomando, de la misma manera que los servicios Heroku y Azure. Para este, es posible que deba escribir métodos personalizados para implementar a través de FTP y creo que supone que tiene acceso SSH a su servidor de producción.

dodgy_coder
fuente
0

Si está poniendo código en producción, le recomiendo usar un "instalador" como un paquete RPM para instalar su código. De esta forma, se estampará la versión y podrá aprovechar el paquete de instalación para admitir actualizaciones del código de producción. Git no está realmente diseñado para soportar instalaciones de producción, está destinado a rastrear cambios en el código en sí.

En cualquier caso, con un .RPM (o EXE o lo que sea) incorporado, puede simplemente enviarlo por FTP al sistema de producción e instalarlo como cualquier otro paquete.

Justin Ethier
fuente
55
Bueno, git puede aprovecharse bastante bien para este propósito en realidad. Consulte la etiqueta y cree ganchos posteriores a la finalización de la compra, posterior a la fusión, etc. para manejar los procedimientos de instalación necesarios. Solíamos usar paquetes RPM, pero después de pasar a git fue simplemente exagerado.
d11wtq
0

Agréguelo como control remoto, luego puede presionarlo, sin embargo, simplemente presionar el código no es suficiente, debe fusionarse con el árbol de trabajo. La forma más fácil es ir al revés, tener un árbol de trabajo en el servidor y buscar y fusionarse con eso.

d11wtq
fuente
0

Estaba luchando mucho para resolver esto. He descubierto una manera fácil de hacerlo desde varias fuentes ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Puede leer como referencia, pero no es necesario porque he mencionado el proceso paso a paso a continuación.

Primero lo primero: instale git y curl usando brew en MAC OS

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Ejecute los siguientes 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

Actualización usando git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Preparar

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Sube todos los archivos

git ftp init

O si los archivos ya están ahí

git ftp catchup

Trabajar y desplegar

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Si hay un error: la especificación de ruta 'index.txt' no coincide con ningún archivo conocido por git . Significa que el archivo aún no se ha preparado, así que agregue el archivo y luego intente confirmar.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Espero que esto ayude.

Sdembla
fuente
0

Puedes probar FTPloy ...

https://ftploy.com

"Empuje los cambios a GitHub o Bitbucket".

"Implemente cambios automáticamente en su servidor"

Tienes un proyecto gratuito para probarlo. Actualmente estoy usando un pequeño sitio web php y funciona bastante bien. Algunos errores en el sitio, pero es un proyecto activo, por lo que al menos están trabajando en él.

Dave Thompson
fuente
1
Publiqué esta respuesta prematuramente. FTPloy no está "listo para la producción" y hay muchos errores. No pude hacerlo funcionar. Estoy usando DeployHQ que funciona muy bien.
Dave Thompson el
0

Visite https://gitftp-deploy.com/ si está en MacOS y le gustan las GUI.

Es una pequeña y agradable aplicación que usa Git para rastrear cambios y cargar solo los archivos modificados con FTP.

Especialmente útil si no le gusta pagar tarifas mensuales por docenas de proyectos más pequeños con equipos pequeños.

bramchi
fuente