Creo que la respuesta a su pregunta es un rotundo sí: los beneficios de administrar sus archivos con un sistema de control de versiones superan con creces los costos de implementar dicho sistema.
Trataré de responder en detalle a algunos de los puntos que planteó:
- Copia de seguridad: ya tengo un sistema de copia de seguridad.
Sí, y yo también. Sin embargo, hay algunas preguntas a considerar con respecto a la conveniencia de confiar en un sistema de respaldo de propósito general para rastrear adecuadamente los archivos importantes y activos relacionados con su trabajo. En el lado del rendimiento:
- ¿A qué intervalo toma instantáneas su sistema de respaldo?
- ¿Cuánto tiempo lleva construir una instantánea?
- ¿Tiene que crear una imagen de todo el disco duro al tomar una instantánea, o se le podría pedir que haga una copia de seguridad de dos archivos que acaban de recibir actualizaciones críticas?
- ¿Puede su sistema de respaldo mostrarle, con precisión precisa, qué cambió en sus archivos de texto de un respaldo a otro?
Y más importante:
- ¿En cuántas ubicaciones se guardan las copias de seguridad? ¿Están en la misma ubicación física que su computadora?
- ¿Qué tan fácil es restaurar una versión dada de un solo archivo desde su sistema de respaldo?
Por ejemplo, tener una Mac y usar Time Machine para hacer una copia de seguridad en otro disco duro de mi computadora. Time Machine es excelente para recuperar el archivo extraño o restaurar mi sistema si las cosas se complican. Sin embargo, simplemente no tiene lo necesario para ser confiable con mi importante trabajo:
Al realizar una copia de seguridad, Time Machine tiene que crear una imagen de todo el disco duro que lleva una cantidad considerable de tiempo. Si sigo trabajando, no hay garantía de que mi archivo se capture en el estado en que estaba cuando inicié la copia de seguridad. También puedo llegar a otro punto que me gustaría guardar antes de que finalice la primera copia de seguridad.
El disco duro en el que se guardan mis copias de seguridad de Time Machine se encuentra en mi máquina, lo que hace que mis datos sean vulnerables a robos, incendios y otros desastres.
Con un sistema de control de versiones como Git, puedo iniciar una copia de seguridad de archivos específicos sin más esfuerzo que solicitar un guardado en un editor de texto, y el archivo se crea una imagen y se almacena instantáneamente. Además, Git se distribuye para que cada computadora en la que trabajo tenga una copia completa del repositorio.
Esto equivale a que mi trabajo se refleje en cuatro computadoras diferentes: nada menos que un acto de Dios podría destruir mis archivos y datos, en cuyo punto probablemente no me importaría demasiado de todos modos.
- Bifurcación y rebobinado: nunca sentí la necesidad de hacer esto, pero puedo ver cómo podría ser útil (por ejemplo, está preparando varios artículos de revistas basados en el mismo conjunto de datos; está preparando un informe que se actualiza mensualmente, etc. )
Como solista, tampoco bifurco mucho. Sin embargo, el tiempo que he ahorrado al tener la opción de rebobinar ha devuelto mi inversión en aprender un sistema de control de versiones muchas, muchas veces. ¿Dice que nunca sintió la necesidad de hacer esto, pero que rebobinar cualquier archivo en su sistema de respaldo actual realmente ha sido una opción indolora y factible?
A veces, el informe se veía mejor hace 45 minutos, hace una hora o dos días.
- Colaboración: la mayoría de las veces estoy analizando datos yo mismo, por lo tanto, no obtendría los beneficios de colaboración del control de versiones.
Sí, pero aprendería una herramienta que puede resultar indispensable si termina colaborando con otros en un proyecto.
- Tiempo para evaluar y aprender un sistema de control de versiones
No te preocupes demasiado por esto. Los sistemas de control de versiones son como lenguajes de programación: tienen algunos conceptos clave que deben aprenderse y el resto es solo azúcar sintáctico. Básicamente, el primer sistema de control de versiones que aprenda requerirá invertir la mayor parte del tiempo; cambiar a otro solo requiere aprender cómo el nuevo sistema expresa los conceptos clave.
Elija un sistema popular y ¡adelante!
- Un posible aumento en la complejidad sobre mi sistema actual de administración de archivos
¿Tiene una carpeta, digamos Projects
que contiene todas las carpetas y archivos relacionados con sus actividades de análisis de datos? Si es así, aplicar un control de versión aumentará la complejidad de su sistema de archivos exactamente 0
. Si sus proyectos están desparramados sobre su computadora, entonces debe centralizarlos antes de aplicar el control de versiones y esto terminará disminuyendo la complejidad de administrar sus archivos, por eso tenemos una Documents
carpeta después de todo.
- ¿Vale la pena el control de versiones?
¡Si! Le brinda un gran botón de deshacer y le permite transferir fácilmente el trabajo de una máquina a otra sin preocuparse por cosas como perder su unidad USB.
2 ¿Cuáles son las principales ventajas y desventajas de adoptar el control de versiones?
La única desventaja que se me ocurre es un ligero aumento en el tamaño del archivo, pero los sistemas modernos de control de versiones pueden hacer cosas absolutamente sorprendentes con la compresión y el ahorro selectivo, por lo que este es un punto discutible.
3 ¿Cuál es una buena estrategia para comenzar con el control de versiones para el análisis de datos con R (por ejemplo, ejemplos, ideas de flujo de trabajo, software, enlaces a guías)?
Mantenga los archivos que generan datos o informes bajo control de versiones, sea selectivo. Si está utilizando algo como Sweave
, almacene sus .Rnw
archivos y no los .tex
archivos que se producen a partir de ellos. Almacene datos en bruto si sería difícil volver a adquirirlos. Si es posible, escriba y almacene un script que adquiera sus datos y otro que lo limpie o modifique en lugar de almacenar cambios en los datos sin procesar.
En cuanto a aprender un sistema de control de versiones, recomiendo Git y esta guía. .
Estos sitios web también tienen algunos buenos consejos y trucos relacionados con la realización de acciones específicas con Git: