¿Cómo escribir un script bash que cree una nueva versión de carpeta?

Supongo que git no es una herramienta de implementación, sin embargo, durante el último año he estado usando git checkout -f dentro de la post-receive sin ningún problema.

gancho post-recepción

 #!/bin/sh git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f 

Ahora quiero hacer más cosas haciendo un control de versiones y labeldo git.

Por ejemplo, tengo una versión actualizada de mi proyecto (v0.2). Creo que es mejor, sin embargo, es posible que se hayan eliminado algunas características bonitas en (v0.1) que aún quiero ver y comparar, también por muchas otras razones como bien.

  • A. ¿Debo manejar esta funcionalidad dentro del script bash?
  • B. ¿Cómo debería ser el código?

Debajo está mi interpretación de lo que le gustaría al código, mi pregunta es ¿cómo hago que el siguiente trabajo funcione de manera óptima?

 #!/bin/sh $version = git tag if ($version != $previousVersion) { mkdir ../../../www/domain.com/$version/ } git --work-tree=/var/www/domain.com/$version --git-dir=/var/repo/site.git checkout -f 

Obviamente algunos defectos arriba, y además, realmente no conozco los scripts de bash, así que voy a leer sobre la creación de variables y booleans.

Con lo anterior, mi pregunta es ¿cuál es la mejor manera de escribir la lógica, es decir, comparar versiones (que ni siquiera es posible verificar anteriormente porque $previousVersion Version $previousVersion no existe, no estoy exactamente seguro de cómo verificar la última versión de commit commit, o si eso es incluso una cosa).

Así que me gustaría saber qué operaciones se deben realizar en la post-receive para que, si hay una nueva git tag se cree una nueva carpeta en my --work-tree alias /var/www/domain.com y el pago y envío empuja los files allí.