Rails rollback deploy AND master to ref mientras se conserva el fallo en una nueva twig

Me he encontrado con problemas con una implementación de producción reciente (bueno, puesta en escena en realidad pero seguiremos llamándola 'producción').

Me gustaría (leer: es necesario) retrotraer el deployment a una confirmación previa. En realidad, me gustaría retroceder un poco y luego seguir avanzando cap deploy cada compromiso uno por uno hasta que vea que el problema se materializa. Sé que puedo utilizar cap -S revision=8c9ffa787b22cff019b27f71194637aa85506f9c deploy para implementar una confirmación específica.

Mi pregunta es, cuando ENCUENTRO la confirmación quiero seguir con cómo puedo reiniciar HEAD y master , etc. de modo que, básicamente, el maestro apunta a ese commit y, idealmente, todos los commit subsecuentes son capturados en una nueva twig de algún nombre , decir rabbithole ?

Es necesario hacer esto sin contaminar los repositorys git en desarrollo, GitHub y luego la cached-copy que Capistrano crea automáticamente en el server de producción.

Espero que tenga sentido. Si no, solicite más información.

¡Gracias!

Diría que quieres revertir todos los commits entre tu commit estable y tu HEAD. Mira esto

 git checkout master git revert XXSHAXX..HEAD 

Donde XXSHAXX es su confirmación estable. Esto creará un grupo de nuevas confirmaciones, una para cada una después de estable. Como resultado, tendrá un nuevo compromiso equivalente a usted estable en HEAD y no se perderá nada de su historial.

PD y no serás derrotado por otros que trabajen en el mismo repository.

Para retrotraer a un compromiso anterior

cap deploy:rollback

Para retroceder a una confirmación implementada previamente

cap deploy:rollback:code

Una vez que haya encontrado una confirmación que desea mantener en el maestro, puede hacer una rebase. No estoy seguro de si esta es la mejor ruta, ya que siempre debe tener cuidado de forzar una actualización en el maestro.

Cambiaría temporalmente la twig de la que se extrae mi entorno de staging , en lugar de insert una actualización forzada en el maestro en sentido ascendente.

Ok, advertencias a un lado:

 $ git checkout master; git checkout -b master-backup-before-rebase; git checkout master 

Puede haber una manera más rápida / más simple de hacer esto, pero básicamente nos aseguramos de que estamos en master , creamos una nueva twig llamada master-backup-before-rebase , y luego volvemos al master.

 $ git rebase -i head~XXX 

Reemplaza ~ XXX con todos los commits que quieras eliminar +1.

A continuación, se abrirá una window del editor de text: elimine las líneas de todas las confirmaciones que desee eliminar. Guarde y cierre la window.

 $ git push origin master -f 

Voila.

Tenga mucho cuidado con esto y asegúrese de que su twig de copy de security exista antes de volver a realizar la database, para evitar que permanezca accidentalmente en la twig Maestra porque no ha confirmado cambios locales o algo así.