version-control - usados - ¿qué es un sistema control de versiones centralizado?
¿Existe una diferencia fundamental entre las copias de seguridad y el control de versiones? (17)
¿En qué se diferencia el control de versiones de las copias de seguridad simples?
Olvidémonos de la decoración característica y concéntrese en el alma del control de versiones. ¿Hay una línea clara que las copias de seguridad deben cruzar antes de que puedan llamarse VCS? ¿O son, en el fondo, lo mismo con diferentes mercados objetivo?
Si hay una diferencia fundamental, ¿cuál es el requisito mínimo absoluto para que algo alcance el estado del control de versión?
Cuando responda, no solo enumere características (como compresión delta, repositorios distribuidos / centrales y soluciones de acceso concurrente) que la mayoría de los sistemas de control de versiones tienen o deberían tener, a menos que sean realmente necesarios para un VCS por definición.
Aquí hay algunos
- Un sistema de respaldo mantiene copias de seguridad para un intervalo de tiempo determinado. El control de versiones generalmente siempre mantiene todas las versiones que se hayan hecho.
- El control de versiones generalmente se concentra en el control de versiones de archivos de texto.
- En un sistema de control de versiones, normalmente puede obtener acceso inmediato a cualquier versión de cualquier archivo. Un sistema de respaldo puede tomar un tiempo antes de tener acceso a lo que desea encontrar.
Ciertamente hay un área gris entre ellos, sin embargo, definiría lo siguiente:
El control de versiones se desencadena mediante una acción de "escritura", mientras que la copia de seguridad generalmente se desencadena por un intervalo de tiempo.
El software de respaldo se puede configurar para ejecutarse cada segundo y no para almacenar datos si no se han producido cambios, pero eso no es suficiente para que se considere control de versiones en mi opinión, ya que es posible que un archivo cambie dos veces en un segundo.
Consideraría las copias de seguridad como un sistema de control de versiones muy básico. No lo recomendaría para muchas cosas, pero si tengo un pequeño script en la computadora de mi casa, uso copias de seguridad anticuadas en lugar de un VCS completo. Esto está bien porque soy el único que puede cambiar el archivo, por lo que no tengo que preocuparme por los conflictos o por quién hizo un cambio.
Creo que puede formar argumentos para agrupar copias de seguridad junto con VCS, o para tratarlas como completamente independientes. Pero creo que no puede evitar hablar sobre las características individuales de un VCS, ya que son las características que diferencian un VCS de una solución de respaldo:
- Hacer un seguimiento de quién hizo qué cambio.
- Adjuntando una nota a cada cambio para explicar las razones detrás del cambio.
- (Principalmente) acceso simultáneo de varios usuarios, posiblemente desde ubicaciones muy diferentes.
En mi opinión, estas características son definitorias. Si los ignora, un VCS es esencialmente lo mismo que una solución de copia de seguridad incremental.
Si nos fijamos en un VCS distribuido, es posible que encuentre una noción más sólida de realizar un seguimiento de las sucursales que en un VCS no distribuido. Es decir, puede que no haya una sola cabeza / tronco, sino varias en un momento dado. Eso es algo que ninguna solución de respaldo que he encontrado considera.
El control de versiones es básicamente un sistema de respaldo automatizado que permite que varios usuarios contribuyan. Hay absolutamente más características involucradas con el software como CVS, pero sí, es un sistema de respaldo bajo el capó. Sin embargo, eso no significa que deba realizar una copia de seguridad manual en lugar de usar el control de versiones, sino que están en el mismo nicho de informática.
El control de versiones mantiene un historial de cambios, y la mayoría de los sistemas de control de versiones solo almacenan la diferencia entre dos versiones, no todo. Las copias de respaldo almacenan todo, y no tienen historial a menos que lo haga manualmente. Las copias de seguridad son ineficientes por lo general. Sin embargo, los sistemas de control de versiones no son muy eficientes con los binarios.
El control de versiones representa toda la historia de los cambios; las copias de seguridad intentan asegurarse de no perderlas.
El requisito mínimo indispensable para que un sistema de copia de seguridad lo tenga a fin de que se use para el control de la versión es una copia de seguridad incremental y restauración para elementos de copia de seguridad discretos. Las funciones adicionales (colaboración, bifurcación, comparación de diferencias) pueden hacer que sea un mejor sistema VCS, pero en la medida en que pueda controlar versiones siempre que pueda tener acceso confiable para recuperar y deshacer versiones incrementalmente diferentes de un elemento que haya respaldado, usted puede usarlo como un "VCS". Entonces, supongo que la diferencia fundamental entre un sistema de control de versiones y copia de seguridad es lo que está usando el sistema para hacer. Particularmente dado que podría, si lo desea, usar su VCS como su sistema de respaldo.
En mi opinión, aquí hay algunas características mínimas de un VCS que pueden no estar en una copia de seguridad básica:
Un VCS debe almacenar más de una versión (mientras que una copia de seguridad puede almacenar solo el último último bien conocido)
Debido a 1., cada versión debe identificarse de alguna manera (fecha, etiqueta, ID de la versión)
Un VCS generalmente puede admitir más de un usuario concurrente
Un VCS para el código fuente normalmente tendrá soporte para ramificación, fusión, adición de comentarios y visualización de deltas
En su nivel básico, no hay diferencia entre el control de versiones y las copias de seguridad. Un sistema de control de versiones es una copia de seguridad incremental de cada cambio que se realiza. Un VCS básico no distribuido, como el CVS utilizado por un desarrollador, simplemente creará una copia de seguridad de cada cambio que se realice en un archivo de texto.
Donde el control de versiones se mueve más allá de las copias de seguridad básicas se encuentra en las herramientas adicionales que se proporcionan para comparar versiones, fusionar los cambios realizados por múltiples desarrolladores, versiones de etiquetas para lanzamiento o prueba y realizar otras operaciones que hacen posible la administración de estas versiones separadas.
La capacidad de realizar bifurcaciones y fusiones separa los sistemas de control de versiones de las copias de seguridad planas. "Múltiples universos concurrentes".
Consulte también la excelente versión de Eric Sink / guía de control de fuente .
La diferencia básica que me destaca es que el control de versiones permite que múltiples usuarios trabajen fácilmente en el mismo código. Las copias de seguridad no.
La idea fundamental del control de versiones es gestionar múltiples revisiones de la misma unidad de información. La idea de la copia de seguridad es copiar la última versión de la información en un lugar seguro: las versiones anteriores se pueden sobrescribir.
Quizás sean fundamentalmente iguales, hasta que agregue la palabra "bueno".
- "bueno" VCS es muy rápido.
- "bueno" VCS permite múltiples fuentes de cambios (múltiples usuarios).
- "bueno" VCS permite la fusión.
"bueno" VCS tiene metadatos, como descripciones proporcionadas por el usuario
"buenas" copias de seguridad se distribuyen geográficamente
- las copias de seguridad "buenas" funcionan automáticamente.
Son cosas totalmente sin relación. Piense en el control de versiones como una especie de "máquina del tiempo", que puede usar para avanzar y retroceder en el tiempo con su código.
Veo varias diferencias fundamentales entre las copias de seguridad y el control de versiones:
- Las copias de seguridad solo almacenan la última versión o, incluso si almacenan varias versiones, no almacenan todas las versiones. Un VCS almacena cada versión,
- Esa versión de copia de seguridad a menudo está desactualizada, porque las copias de seguridad no registran todos los cambios, mientras que los VCS sí,
- Los VCS permiten buscar múltiples versiones alternativas del mismo cambio al mismo tiempo (es decir, bifurcación).
Sin embargo, la diferencia más importante entre las copias de seguridad y VCS es que, en un VCS, los cambios tienen un significado . En una copia de seguridad, se crea una nueva versión, porque alguna computadora en algún lugar decidió que era x
horas desde la última copia de seguridad; el cambio en sí mismo es completamente sin sentido . En un VCS, se hace una nueva versión, porque algunos humanos decidieron que esta versión tiene su propio significado , su propia identidad, diferente de todas las demás versiones. Por lo tanto, en una copia de seguridad, todas las versiones son iguales (más precisamente: son igualmente insignificantes), mientras que en un VCS todas las versiones son especiales (tienen sus propios significados únicos). En un VCS, los cambios tienen un historial real, donde un evento llevó a otro, en una copia de respaldo solo hay una serie de eventos no relacionados.
Estrechamente relacionado con esto, está la noción de metadatos de cambio . En un VCS, cada cambio tiene un autor , una marca de tiempo y, lo más importante, un mensaje de compromiso . Este mensaje de confirmación registra por qué se realizó el cambio, en otras palabras, registra el "significado" sobre el que escribí en el párrafo anterior.
El historial de confirmaciones y especialmente los mensajes de confirmación son los datos más importantes en un repositorio de VCS, ¡no el código real en sí mismo! Este metadato está completamente ausente en una copia de seguridad.
El control de versiones es colaborativo, la copia de seguridad es solo una instantánea.
Ejemplo: con el control de versiones, dos personas pueden editar el mismo archivo al mismo tiempo, y el sistema es lo suficientemente inteligente como para fusionar los cambios. Con la copia de seguridad, ¿qué versión del archivo "ganaría"? La copia de seguridad nunca "fusiona" dos copias de seguridad diferentes en una copia de seguridad "verdadera".