seguidores - DVCS-Con qué frecuencia y cuándo cometer cambios
hashtag para instagram 2018 (5)
¿Con qué frecuencia y cuándo te comprometes?
Con mucha frecuencia Podría ser tanto como algunas veces en una hora, si los cambios que he hecho funcionan y constituyen un buen parche. O podría ser cada pocas horas, dependiendo de si estoy gastando más en depurar cosas o experimentando con cambios riesgosos.
¿Solo comprometes cambios cuando se compilan correctamente?
Si, casi siempre No puedo pensar en una razón para verificar el código que no se creó correctamente. Sin embargo, hay muchas razones por las que puede verificar el código que no se ejecuta correctamente (en una rama).
¿Con qué frecuencia y cuándo aplica sus cambios (o presenta una solicitud de extracción o similar)?
Normalmente solo cuando una característica está completa y lista para pruebas de integración. Eso significa que ha pasado las pruebas unitarias y otras pruebas relevantes, y el código / parche está lo suficientemente limpio como para que esté listo para su revisión.
¿Cómo se puede desarrollar una función compleja / hacer una refactorización compleja que requiera muchos lugares para tocar? ¿Los "commits privados" no se compilarán bien? Cuando haya terminado, ¿los empuja también al repositorio principal o agrupa todos sus cambios en un único conjunto de cambios antes de presionar?
Crearía una sucursal con nombre para la característica (que tendría trazabilidad entre los documentos de diseño y el sistema de seguimiento de problemas). Los compromisos que no se compilan solo estarían realmente bien en una sucursal privada como un paso intermedio, pero seguirían siendo excepcionales. Actualmente no reagrupo y fusiono toda la rama de características en un solo conjunto de cambios, aunque es algo que estoy considerando hacer en el futuro. Los cambios solo se empujan cuando se pasan todas las pruebas apropiadas.
Hay otro thread aquí en StackOverflow, que trata de con qué frecuencia comprometer cambios en el control de código fuente. Quiero poner eso en el contexto de usar un DVCS como git o mercurial.
¿Con qué frecuencia y cuándo te comprometes?
¿Solo cometes cambios cuando se construyen correctamente?
¿Con qué frecuencia y cuándo presiona sus cambios (o presenta una solicitud de extracción o similar)?
¿Cómo se puede desarrollar una función compleja / hacer una refactorización compleja que requiera muchos lugares para tocar? ¿Están los "compromisos privados" que no van a construir bien? Cuando haya terminado, ¿los empuja también al repositorio principal o agrupa todos sus cambios en un único conjunto de cambios antes de presionar?
Cometí mucho; al agregar funciones o incluso reformatear mis fuentes.
Uso git y hago la mayor parte de mi trabajo en ramas no compartidas. Y cuando agregué suficientes pequeños cambios que cuentan como bloque, uso git rebase
para recopilar los cambios relacionados más pequeños en trozos más grandes y comprometerlos con las ramas principales.
De esta manera, tengo todas las ventajas de un código comprometido al que puedo ir hacia adelante o hacia atrás, pero no tengo que cometer todos mis errores, y me toca la historia principal.
Depende de la naturaleza de la rama ("línea de desarrollo") en la que está trabajando.
La principal ventaja con esos DVCS (git o mercurial) es la facilidad que puede:
- rama
- unir
Asi que:
1 / ¿Con qué frecuencia y cuándo te comprometes?
2 / ¿Solo confirma los cambios cuando se construyen correctamente?
El tiempo que sea necesario en una sucursal privada (por ejemplo, si compila).
La práctica de solo comprometer si las pruebas unitarias pasan es buena, pero solo debe aplicarse a una rama "oficial" (como en "podría publicarse o ''empujarse''"): en tu sucursal privada, fusionas un horario de gazillon si Necesitar.
Lo único es: combine un poco --interactivo para reorganizar sus muchos commits en su sucursal privada, antes de reproducirlos en su rama principal de desarrollo, donde puede pasar algunas pruebas.
3 / ¿Con qué frecuencia y cuándo aplica sus cambios (o presenta una solicitud de extracción o similar)?
La publicación es otro asunto y debe hacerse con una historia "clara" (fusiones coherentes, que representan un contenido que compila y pasa algunas pruebas).
La rama que publica debe ser una donde el historial nunca se reescribe, siempre se actualiza.
El ritmo de las publicaciones depende de la naturaleza de la rama remota y de la población que tira de esa rama. Por ejemplo, si es para otro equipo, puede presionar con bastante frecuencia. Si es para un equipo de prueba de integración de todo el sistema, empujará mucho menos a menudo.
4 / ¿Cómo enfocas el desarrollo de una función compleja / haciendo una refactorización compleja que requiere muchos lugares para tocar? ¿Los "commits privados" no se compilarán bien? Cuando haya terminado, ¿los empuja también al repositorio principal o agrupa todos sus cambios en un único conjunto de cambios antes de presionar?
Ver 1. y 2 .: aplicar el parche primero en su propia rama privada, luego reorganizar sus confirmaciones en una rama de parche oficial (publicada). Una única confirmación no siempre es la mejor opción si el parche implica varias "actividades" diferentes (o corrección de errores).
Realizaría cambios en mi DVCS (mi propio tema o rama de tareas) muy, muy a menudo, de esta manera puedo usarlo no solo para "entregar cambios" sino también para ayudarme mientras trabajo: como "por qué esto estaba funcionando". Hace minutos y ya no funciona? " Si te comprometes a menudo, solo puedes ejecutar un diff.
Además, una técnica que encontré muy, muy buena es usarla para "refactores de auto-documentación". Permíteme explicarte: si tienes que hacer un gran refactor en una rama temática y luego revisar el cambio como un todo (habiendo modificado un buen conjunto de archivos), probablemente te perderías. Pero, supongamos que revisa cada "paso intermedio" y lo documenta con un comentario, entonces está creando una especie de "película" de sus propios cambios que ayuda a describir lo que ha hecho. Enorme para los críticos.
Sigo este tipo de flow
texto alt http://img121.imageshack.us/img121/3272/versioncontrolsysbestpr.png
( Aquí está la url de la imagen original )
Supongo que esto dice todo. Básicamente, haría un check-in después de implementar un caso de uso / historia de usuario completo (depende de su proceso de software). Lo más importante es que controle las cosas que funcionan en el sentido de que compilan. ¡Nunca rompas la construcción !
Hacer una confirmación después de cada historia de usuario / caso de uso tiene la ventaja de que tiene un mejor seguimiento de las versiones pasadas y deshacer los cambios es mucho más fácil.