He escrito una secuencia de comandos 'deploy' muy simple ejecutándose como mi gancho post-update
dentro de mi git repo.GIT & Ruby: ¿Cómo puedo desarmar la variable GIT_DIR desde dentro de un script de ruby?
Las variables son las siguientes
live domain = ~/mydomain.com
staging domain = ~/stage.mydomain.com
git repo location = ~/git.mydomain.com/thisrepo.git (bare)
core = ~/git.mydomain.com/thisrepo.git
core == added remote into each live & stage gits
tanto live
& stage
han inicializado repositorios GIT (no desnudos) y he añadido mi repo desnudo como un control remoto para cada uno de ellos (el nombre core
) para que git pull core stage
o git pull core live
obtendría los archivos actualizados de los respectivos branch
del repositorio core
.
El guión es el siguiente:
#!/usr/bin/env ruby
# Loop over each passed in argument
ARGV.each do |branch|
# If it matches the stage then 'update' the staging files
if branch == "refs/heads/stage"
puts ""
puts "Looks like the staging branch was updated."
puts "Running a tree checkout now…"
puts ""
`cd ~/stage.mydomain.com`
`unset GIT_DIR` # <= breaks!
`git pull core stage`
puts ""
puts "Tree pull completed on staging branch."
puts ""
# If it's a live site update, update those files
elsif branch == "refs/heads/live"
puts ""
puts "Looks like the live branch was updated."
puts "Running a tree checkout now…"
puts ""
`cd ~/mydomain.com`
`unset GIT_DIR` # <= breaks!
`git pull core live`
puts ""
puts "Tree checkout completed on live branch."
puts ""
end
end
He intentado adaptar la 'actualización' de archivos de this bash script here que utiliza el unset GIT_DIR
ejecutar el siguiente comando git git pull core stage
por ejemplo. core
es el remote
agregado de mi repositorio bare
en una carpeta diferente en el servidor.
Sin embargo cuando se ejecuta la secuencia de comandos que estoy recibiendo los errores siguientes:
remote: hooks/post-update:35: command not found: unset GIT_DIR
remote: fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
¿Hay alguna manera de hacer lo mismo que unset GIT_DIR
en una escritura del golpe dentro de mi script de Ruby?
Muchas gracias,
Jannis
Esto funciona como magia! Muchas gracias. ¡Lo tengo todo listo y funcionando ahora!Desactivado para saber cómo hacer lo mismo al pasar un comentario especialmente formateado a las notas de confirmación :) Me pregunto si se podría usar algo como '[update: live]' o '[update: stage]' para activar este 'pull 'acción ... – Jannis
Me salvó un montón de frustración. ¡Gracias! ¡No me di cuenta de que estas variables tenían tal significado! –