Tengo un proyecto que está controlado por la versión usando git.
Lo que quiero poder hacer es configurar un repositorio en mi paquete de alojamiento compartido GoDaddy (habilitado para ssh) para que pueda implementarlo con solo presionar en lugar de arrastrar y soltar en FTP.
Cualquier consejo sería apreciado. Lo mejor sería una cuenta de alguien que ya lo haya hecho, pero personalmente no pude encontrar ninguna en línea.
Respuestas:
Me encontré con el mismo problema con un sitio que había alojado en un paquete de alojamiento compartido HostNine. También le dan
ssh
acceso, pero desafortunadamente no se hangit
instalado y ni siquiera le dan acceso para ejecutargcc
, lo que dificulta la descarga e instalación de git para su usuario.La única forma en que podía pensar para evitar estas restricciones era copiar los binarios de git desde otra computadora que los tuviera. Quizás la misma solución funcionaría para usted y su host compartido GoDaddy. Esto es lo que hice:
Primero descubra qué arquitectura tiene su servidor. En mi caso fue de 32 bits (i386). Aquí hay un par de formas de resolverlo:
A continuación, debe encontrar otra computadora que ejecute Linux con la misma arquitectura y con git instalado. Ni siquiera tienen que estar ejecutando la misma distribución o versión de Linux, siempre y cuando tengan la misma arquitectura y pueda encontrar los archivos binarios y la biblioteca que necesita.
Para encontrar la ubicación del binario git principal:
Algunos otros archivos binarios importantes (como
git-receive-pack
) también residen en el mismo directorio, por lo que recomiendo simplemente copiar todo/usr/local/bin/git*
para asegurarse de obtener todo lo que necesita.Otros archivos importantes son de los que depende git están bajo un directorio 'libexec' en algún lugar del sistema fuente. Si no los copia, es posible que reciba un mensaje de error sorprendente cuando intente hacer
git push
, como hice yo:Para encontrar el directorio que contiene las bibliotecas principales de git en target_host, puede usar esto:
Recomendaría copiar esos archivos primero y luego intentar ejecutar git para ver si se queja de las bibliotecas compartidas faltantes. Si no es así, entonces eres (presumiblemente) bueno para ir. Si es así, sigue leyendo. (No use copiar sobre bibliotecas compartidas si ya existen en el host de destino y son la versión correcta).
Puede copiar los archivos con
scp
,rsync
,ftp
, o lo que usted se sienta cómodo. Solíascp
algo como esto:Luego ssh a target_host. Deberá agregar algunas líneas como estas a su
~/.bashrc
:Si olvida este paso, es posible que se sorprenda al ver este error cuando hace un
git push
:Esto está documentado en las preguntas frecuentes de Git en git.or.cz:
GIT_EXEC_PATH
está documentado enman git
:Fuente de su nuevo
~/.bashrc
. Ahora intenta corrergit
.Esto es lo que me dio la primera vez:
Pude averiguar la ubicación de las bibliotecas compartidas para copiar ejecutando esto en la máquina de origen:
En mi caso, yo sólo tenía que copiar
/lib/libcrypto.so.4
a~/lib
mitarget_host
y todo estaba bien.¡Ahora debería trabajar
git
en su servidor de alojamiento compartido y debería poder impulsarlo!Ahora debe crear un nuevo repositorio git y un árbol de trabajo en su servidor o copiar su repositorio / árbol de trabajo existente.
Por cierto, no creo que un repositorio desnudo sea lo que desea en el servidor en este caso, ya que dijo que quería implementar los archivos de contenido reales (en lugar de solo los
config HEAD objects/ refs/
archivos que se incluirían en un repositorio desnudo) siempre tu haces agit push
.toolmantim.com explica la diferencia entre un repositorio git regular y un repositorio simple :
Asumiré por el momento que ya ha creado un directorio en el
target_host
que desea implementar su sitio web (o lo que sea que esté implementando). Llamemos a ese directorio~/www/my_site
. Es posible que incluso haya ftp'd sobre todos sus archivos~/www/my_site already
. (Tener o no tener no es importante). También asumiré por el momento que aún no ha copiado el subdirectorio .git~/www/my_site
(aunque debería funcionar bien si lo ha hecho).Como todavía no hay un repositorio de git inicializado en target_host, su primer paso sería crear uno:
Luego, desde el host que tenga el repositorio con los últimos cambios que desea implementar (su cuadro de desarrollo, supongo), solo tiene que hacer algo como esto para implementar:
Es posible que vea una advertencia como esta si su repositorio
target_host
no está actualizado:(En el
git
uso normal , nunca ves ese mensaje, creo, porque normalmente estás presionando a repositorios desnudos . Pero dado que nuestro repositorio remoto en este caso es un repositorio normal con un árbol de trabajo y un índice,git
es comprensiblemente preocupado de que pueda estropear algo.)Sin embargo, creo que es seguro para nosotros configurarlo para 'ignorar' en su servidor, porque no es probable que realice ninguna confirmación directamente en el repositorio allí. (Todos los commits probablemente deberían originarse en su repositorio de desarrollo y luego ser enviados al servidor).
Así que adelante y configure esto para que no vea la advertencia cada vez que presiona:
El
push
solo actualiza el índice, sin embargo, NO los archivos en el árbol de trabajo. Sin embargo, actualizar esos archivos es solo el punto completo de lo que estamos tratando de hacer, por lo que nuestro trabajo no se realiza hasta que le indiquemosgit
que escriba el contenido del índice en el árbol de trabajo, así:(Nota: Cualquier cambio que haya tenido en su árbol de trabajo en el servidor será sobrescrito por lo que está en el repositorio).
También seguí la sugerencia de mattikus y creé un control remoto para mi servidor:
Así que ahora todo lo que tengo que hacer para implementar es:
Incluso fui tan lejos como para lanzar estos comandos en un script que nombré,
script/deploy
así que cada vez que quiero implementar solo tengo que ejecutar un comando.Avíseme si encuentra algún error en estas instrucciones o si conoce una solución mejor.
fuente
Soy SF y GoDaddy n00b, así que tengan paciencia conmigo, pero de todos modos, estoy muy feliz de ver esto discutido aquí.
Solo mis $ 0.02, intenté construir git (dinámicamente) en mi caja de linux, manchándolo a mi cuenta godaddy, e incluso si solo intento empujar a la máquina godaddy pasiva, falla debido a la falta de openssl. Tal vez si intento construir git estáticamente con openssl, pero también parece una mala idea.
Fuera de tema, pero ¿es este el tipo de falta de apoyo que debería esperar de GoDaddy, debería arrepentirme de no haber elegido Dreamhosts?
Saludos cordiales CJ
PD. No es una respuesta, sino una sugerencia de que una vez que git-reciben funciona en godaddy (¿o sí?), Un repositorio con un árbol de trabajo separado es una excelente manera de implementarlo en la web: http://toroid.org/ams/git- sitio web
fuente
La forma más fácil de hacer esto es ejecutar algo como esto en su servidor remoto:
Luego, en su caja de desarrollo:
No se requiere servidor ni nada más, y debería poder obtener / extraer de esa máquina siempre que tenga acceso ssh.
Si también tiene configurado su .ssh / config, debería aprovecharlo y usar las claves privadas que haya configurado.
Si planea enviar muchas actualizaciones, puede agregar un repositorio remoto a su pago de desarrollo:
Entonces a partir de ese momento puedes:
Para obtener más información, consulte los documentos en línea
git push
o ejecútelosgit push --help
para iniciar la página de manual en su local.fuente