¿Cómo hacer que Subversion (o cualquier programa) realice confirmaciones periódicas?

StackOverflow https://stackoverflow.com/questions/758916

  •  09-09-2019
  •  | 
  •  

Pregunta

Quiero configurar mi computadora para que, digamos, cada media hora confirme automáticamente el programa en el que estoy trabajando.Estoy usando un repositorio svn, por lo que incluso si fuera solo un script que ejecutara 'svn ci' cada 30 minutos, estaría bien.El problema es que no sé cómo hacer eso.

¿Podría alguien decirme o indicarme algo que me permita hacer funcionar esta confirmación periódica?

Gracias de antemano.

EDITAR:Lo siento, parece que he confundido a la gente sobre por qué querría hacer esto.La única razón por la que quiero hacer esto es porque uno de mis profesores quiere que sepamos cómo se desarrolla nuestro código con el tiempo y pensé que sería una gran idea usar svn para este propósito.No importa si la última confirmación funciona o no.Sólo tiene que mostrar los cambios que he realizado en el código a lo largo del tiempo.

¿Fue útil?

Solución

No ensuciaría su sistema de control de versiones con esa serie de confirmaciones automáticas.Pero estoy de acuerdo con la idea de utilizar un sistema de control de versiones para proporcionar esa información.

Entonces, mi sugerencia es:use un repositorio para su software y otro para almacenar las confirmaciones automáticas.Cuando termine el trabajo, combine todas las confirmaciones automáticas en el repositorio principal en una sola confirmación lógica.

Con git, haría esto:

  1. Repositorio 'foo':el repositorio principal
    1. árbitros/cabezas/...:la ubicación de sus sucursales de desarrollo
    2. árbitros/sesiones/...:la ubicación de su trabajo con confirmaciones sucias.
  2. Su copia de trabajo:
    1. "git init"
    2. "git remoto agregar foo git://foo/...;git buscar foo"
  3. crear la rama:"git checkout -b barra foo/master"
  4. etiqueta el comienzo de la rama:"barbegin etiqueta git"
  5. activar el script:"si bien es cierto;haz git add -A .;git confirmar -m 'compromiso automático';hecho"
  6. No usaría un trabajo cron, por lo que puedes activar/desactivar las confirmaciones automáticas fácilmente.
  7. Haz tu trabajo
  8. Una vez finalizado el trabajo, desactive el script.
  9. confirmar cambios pendientes
  10. ahora, tienes muchas confirmaciones automáticas en la barra de rama y has etiquetado la confirmación inicial de la rama con barbegin.
  11. publica tus confirmaciones automáticas:
    1. "barend etiqueta git"
    2. "git push foo barbegin:refs/sessions/tu ID de usuario/el ID de sesión/comenzar"
    3. "git push foo barend:refs/sessions/tu ID de usuario/el ID de sesión/fin"
  12. Ahora has publicado tu trabajo y tu profesor puede acceder a él.
  13. para actualizar su repositorio foo:
    1. "git rebase -i --onto barbegin barbegin" y proceda como se describe aquí
    2. Aplastaría todas las confirmaciones:"Al final, sólo puede haber uno".
    3. "git push foo bar:master" # solo se enviará una confirmación
  14. limpieza:
    1. "etiqueta git -d barbegin"
    2. "etiqueta git -d barend"
    3. "git rama -d barra"

Después de todo esto, creo que no se puede recopilar información útil con este tipo de datos.Entonces, intentaría evitar este flujo de trabajo.Pero si realmente fuera necesario, lo haría de esa manera.

Otros consejos

Contrariamente a la opinión popular aparente, creo que esto es un gran uso de SVN, en el contexto de la asignación.

Herramientas como kdesvn (o mejor aún, tortoisesvn, pero eso es sólo en Windows) podría darle una gran comprensión de lo que está pasando con sus puntos de vista de registro, diferenciaciones y culpar visuales.

Si estás usando Ubuntu, ejecute este script bash desde una consola que está separada a la que usted está trabajando.

#!/bin/bash
while [ 1 ]
do
        # Do the commit
        svn ci --message "Automated commit" ~/yourworkingcopy

        # Wait until next commit time
        sleep 1800
done

Usted podría tratar de una tarea programada que se ejecuta un script de shell. ¿Qué sistema operativo está usted?

Pero estoy curioso en cuanto a por qué te gustaría hacer esto. Sus confirmaciones deben consistir en piezas de funcionalidad o correcciones de errores, y no basarse en un intervalo de tiempo. Es muy probable que se comprometan en el medio de un cambio (en un grupo de archivos), que hará que sus revisiones inútil.

No creo que el establecimiento compromete en un horario programado es una idea especialmente buena. Especialmente si comienza a recibir en pruebas e integración continua. Comprometiéndose a intervalos fijos se romperá la acumulación porque no hay garantía de que se haya completado el conjunto de cambios en el marco de tiempo.

Una mejor manera, si quieres auto-entrega es hacer que la parte del propio proceso de construcción confirmación. Acaba de hacer el último paso del proceso de construcción de una confirmación al repositorio. De esta manera, si la generación falla, que no comprometan la basura.

totalmente posible con todos los sabores de la marca y sé Visual Studio ha pre y post construcción de eventos que se pueden configurar para hacer algo como esto. Así que estoy bastante seguro de que la mayoría de los entornos de desarrollo modernos pueden manejar esto.

Como una consideración especial para este problema en particular:
Mover el gancho de comprometerse con el inicio del proceso para que pueda realizar un seguimiento cuando se lía cuerpo de rey, así y cómo se llega a corregir los errores.

Me gustaría utilizar Subversion, pero yo en su lugar sólo entrar en el hábito de trabajar en los cambios individuales, y los comitting a un repositorio.

De esta manera el profesor, si quiere, puede mirar no sólo lo cambiado, pero ¿Por qué se cambió. Esto sería mucho más útil me imaginaría.

Si está ejecutando en un sabor de UNIX considerar la creación de un cron trabajo para ejecutar comandos en un intervalo regular.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top