Capistrano: agregue una tarea para actualizar el repository del server antes de la implementación si la versión del server es más reciente

Así que estoy usando Capistrano (v2) para implementar sitios web creados con Perch (grabaperper.com). Cuando un usuario (en el server directo) crea una 'página' en Perch, el sistema crea un file .php real con una inclusión para cualquier 'página maestra' que use esa página. Obviamente, esto hace que el repository esté desactualizado.

Para resolver esto, me preguntaba si podría usar uno de los ganchos de Capistranos para verificar el estado de los files en el server y solicitar al usuario que elija:

a) actualice el repository al volver a colocar los files nuevos en el repository

b) ignorar (no estoy seguro por qué pero esto puede ser útil)

Además, esto podría (¿posiblemente?) Hacerse por file (o carpeta) para tener más control sobre lo que termina siendo controlado por la versión.

Siendo un recién llegado relativo para Capistrano y Ruby, no tengo mucha idea de cómo o si se puede hacer.

Así que mi pregunta es esta:

a) una buena idea

b) posible

c) si (a && b) ¿cómo?

(disculpe si esta pregunta / s no es lo suficientemente específica para SA – No sé dónde más preguntar)

Bueno, podría ser posible, pero trabajarás bastante duro para que esto ocurra.

Necesitaría una tarea antes de la que verifica el repository que verificará el directory current para los files modificados.

Puedes usar git ls-files . --exclude-standard --others git ls-files . --exclude-standard --others para git ls-files -m seguimiento y git ls-files -m para los files modificados, si hay datos de input, deberá enviar esos files y enviarlos al repository. Si lo ha hecho antes de que capistrano verifique el último master , ahora searchá el más nuevo master con sus nuevos files.

Ahora, si desea controlar qué files agregar al repository y cuáles no, puede tener su .gitignore configurado correctamente o puede usar el resultado que obtiene de git ls-files con alguna otra gem como highline , tal vez esto te ayude (capistrano solía tener un module de CLI en el DSL, pero se ha ido).

Entonces sí, es posible.

¿Deberías hacerlo?

Depende si hay implicaciones de Perch. Nunca antes había usado Perch, así que entiendo en parte por qué crean los files extra, además, también deberías verificar los files que se han eliminado (en caso de que Perch elimine páginas que los usuarios ya no usan) o tendrás basura en su repository git (en el buen caso) y en el peor de los casos, tendría inconsistencias en los datos, lo cual es MALO.

Espero que esto ayude.

Supongo que sería posible hacer algo de magia capistrano para actualizar el repository (o ignorar) estos files, sin embargo, estoy pensando que las 'páginas' en realidad son sus datos. ¿Es eso correcto?

Si es así, me pregunto por qué los quiere en el repository o por qué es malo que el repository esté desactualizado.

Si en realidad son los datos en el sitio, consideraría señalar los datos de 'página' en una ruta diferente y luego usar el file .gitignore para ignorarlos del repository de git. El file .gitignore es un método para decirle a git que no desea include ciertos files o carpetas que viven bajo su directory en el repository de git.

¿Esto ayuda?