2010-06-01 10 views

Respuesta

153

Algunas herramientas añadidas recientemente a la Git wiki:

git-ftp by René Moser is a simple shell script for doing FTP the Git way. Use git-ftp.sh to upload only the Git tracked files to a FTP server, which have changed since the last upload. This saves time and bandwith. Even if you play with different branches, git-ftp.sh knows which files are different. No ordinary FTP client can do that.

git-ftp by Edward Z. Yang is a simple script written in python for uploading files in a Git repository via FTP, only transferring new files and removing old files.

+0

eso es perfecto, gracias – Roch

+20

¿Han intentado ambos? ¿Cuál les gusta más a ustedes? – trusktr

+2

usando git-ftp, ¿hay alguna forma de insertar solo un subdirectorio (por ejemplo, la carpeta de publicación de la plantilla HTML html5) en el directorio ftp especificado? – gang

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, tendrá la versión sellada y podrá aprovechar el paquete de instalación para admitir actualizaciones del código de producción. Git no está diseñado para admitir instalaciones de producción, sino para realizar un seguimiento de los cambios en el código.

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

+5

Bueno, git puede aprovecharse muy bien para este propósito en la realidad. Revise la etiqueta y cree ganchos post-checkout, post-merge, etc. para manejar cualquier procedimiento de instalación necesario. Solíamos usar paquetes de RPM, pero después de mudarnos a git, simplemente era exagerado. – d11wtq

0

Añádalo como control remoto, luego puede presionarlo, sin embargo, simplemente presionar el código no es suficiente, necesita 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 fusionar en eso.

5

Eso no es para lo que git es, estrictamente hablando. Sin embargo, si su fuente es algo que no necesita compilación o procesamiento, digamos un sitio web que consiste en completamente de archivos html y javascript y similares, podría tener un clon del repositorio en su servidor web y usar git pull del servidor a mantenerlo actualizado. Tenga en cuenta que configuro su servidor web para ocultar el directorio de git y tal. Y eso es solo el comienzo de las preocupaciones de seguridad.

Si tiene cualquier tipo de compilación o procesamiento, usted debe empezar a buscar en Ant, Maven, BuildR, SBT, etc.

+27

El único problema con esto es cuando no tiene acceso al servidor de producción, es decir, podría tratarse de un simple host compartido, con solo acceso FTP. –

10

Si Estoy en un Mac y tengo Transmit, recomiendo el siguiente script de git-tranmit (https://gist.github.com/379750). Utiliza DockSend para enviar solo los últimos archivos actualizados. Si no está familiarizado con DockSend, consulte http://www.panic.com/blog/2010/11/15-secrets-of-transmit/.

Configuración:

  1. cp git tránsito/usr/sbin /.
  2. cd/usr/sbin
  3. chmod + x git-transmitir
  4. gota CONF.ENVIO para su aplicación en vivo
  5. Ejecutar git-transmisión en su repositorio git.
+1

Esta secuencia de comandos es bastante torpe sobre la selección de "últimos archivos actualizados". Consulte [este tenedor] (https://gist.github.com/quickshiftin/8809435) para obtener una solución más elegante. – quickshiftin

+0

Además de eso, es posible que desee transmitir solo los archivos rastreados y no modificados. Aquí hay un pequeño script que hace precisamente eso: https://gist.github.com/borisdiakur/37b8f512f6f8865b79c7 – borisdiakur

1

Aquí hay un script de Ruby - Ruby git-deploy via FTP or SSH que carga solo los archivos modificados en el repositorio de git mediante FTP o SSH.

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

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

También hay un proyecto Ruby gem llamado git-deploy que le permite configurar una implementación personalizada a través de un control remoto git usando el comando git push, de la misma manera que los servicios Heroku y Azure.Para esto, puede que necesite escribir métodos personalizados para implementar a través de FTP y creo que asume que tiene acceso SSH a su servidor de producción.

13

Si prefiere interfaz gráfica de usuario, utilice SourceTree, se puede configurar fácilmente una acción personalizada que utiliza git -ftp mencionado anteriormente. Una breve descripción de la configuración (para Mac) en Push a Git repository to an FTP

enter image description here

+2

imagen realmente genial, ¿lo hiciste? – Julix

+0

@Julix Para el artículo mencionado. – Geri

9

he encontrado PHPloy una gran herramienta para el envío de su Git se compromete 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 los submódulos).

https://github.com/banago/PHPloy

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

hecho!

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

+1

Buen hallazgo, parece simple y lo suficientemente potente, definitivamente voy a probarlo. – GTCrais

0

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

Primero lo primero: Instalar Git y rizar el uso de cerveza en MAC OS

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

Ejecutar 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 

Actualizando usando git

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

Configuración

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

Subir todos los archivos

git ftp init 

o si los archivos ya están allí

git ftp catchup 

trabajo y desplegar

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

Si hay un error: pathspec 'índice. txt 'no coincide con ninguno de los archivos conocidos de git. Significa que el archivo aún no se ha configurado, por lo tanto, 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.

2

Usted puede intentar FTPloy ...

https://ftploy.com

"Push changes to GitHub or Bitbucket."

"Deploy Changes automatically to your server"

tiene uno proyecto libre de probarlo con. Actualmente estoy usando un sitio web pequeño de php y funciona bastante bien. Algunos errores en el sitio pero es un proyecto activo por lo que al menos están trabajando en ello.

+1

Publiqué esta respuesta prematuramente. FTPloy no está del todo preparado para la producción y hay muchos errores. No pude hacer que funcione. Estoy usando DeployHQ, que funciona muy bien. –