Tengo un script de shell donde quiero verificar uno de mis repositorios de git. Quiero saber si ese repos tiene todo comprometido y si es empujado a master. Antes de esta prueba, hago git fetch para asegurarme de tener los últimos cambios.Comprueba que el repositorio de git local tenga todo comprometido y lo haya enviado al dominio
he encontrado la manera de comprobar si el repositorio tiene algunos cambios no confirmados:
if ! git --work-tree=$HOME/git/project --git-dir=$HOME/git/project/.git diff-index --quiet HEAD --; then
echo "Has some changes";
fi
Pero esto no es lo único que necesito. También quiero asegurarme de que todas las confirmaciones locales de se envíen al dominio.
¿Cuál es la forma más fácil de hacerlo?
La solución de Mark Longair y la tuya parece perder archivos no rastreados. Entonces, dependiendo de su propósito, el directorio aún puede considerarse sucio. –
@ vlad-didenko tal vez no lo entiendo, pero mi solución muestra archivos sin seguimiento. Captura de pantalla: http://upload.bessarabov.ru/bessarabov/LbYgP0Daba-oJ5vCDa8Wag8a5H8.png Y el código que lo hace: https://metacpan.org/source/BESSARABV/App-IsGitSynced-1.0.0/bin/is_git_synced# L84 – bessarabov
Sí, creo que soy yo no lo suficientemente claro. Los comandos "git diff --exit-code && git diff --cached --exit-code" no capturan archivos sin seguimiento. Su solución es una secuencia de comandos grande (relativamente) que difícilmente es una respuesta a la pregunta "más fácil de hacer" anterior, una pregunta que claramente requiere unos pocos comandos simples. Como alguien que vino aquí desde la búsqueda, no veo una respuesta, ya que pasar por una secuencia de comandos considerable de perl no es una (buena) respuesta. Puede ser que esté allí, pero no aquí :) –